What is mailprocd?

mailprocd is a high-performance mail delivery, classification and filtering daemon written in C, designed to extend the capabilities of MTAs such as Postfix and Sendmail. It was initially developed for use on multiuser csoft.net mail servers using Postfix, but it is suitable to any MTA that can deliver to a SMTP or LMTP server.

Typically, mailprocd will be configured to accept SMTP/LTMP connections and will process mail based on the contents of four databases: rules, uid, gid and lists. The rules database contains per-address delivery instructions. Multiple destinations can be configured per address. Mail can be delivered to mailboxes, maildirs, piped to arbitrary commands or forwarded to other addresses based on conditionals. The uid and gid databases specify the default UID/GID associated with every address (individual delivery instructions can override this setting). The optional lists database specifies configured mailing lists.

Spam filtering

mailprocd embeds the Perl interpreter (like mod_perl does) in order to use the SpamAssassin filter in the most efficient manner possible.

A major problem with SpamAssassin on multiuser systems is the fact that custom user configurations and important features such as Autowhitelisting and Bayes filtering require that SpamAssassin execute under the user's privileges (which is desirable anyway, for quota and security reasons). This usually involves inefficient spawning of processes and unnecessary operations for each delivery. mailprocd solves that problem using persistent spam-checker processes running under user privileges. The process manager built into mailprocd then expires idle processes.

Under mailprocd, users who are receiving large amounts of spam in a short amount of time can no longer cause excess load on the mail server since there is a set limit on the number of "worker" processes a user can have running concurrently.

Classification and delivery

mailprocd provides simple built-in mail classification services, which helps avoid the need for procmail/maildrop subprocesses in many situations. For maximum efficiency, it also handles various forms of e-mail delivery, such as local mailboxes/maildirs, forwarders and custom filter programs.

On systems running Postfix, mailprocd can allow unprivileged users to specify policies that directly affect the behavior of the SMTP server, using the SMTP Policy Manager interface provided by Postfix.

Mailing lists

Special support is provided for efficient delivery to mailing list managers. Currently, only Mailman is supported. The policy manager can even check for subscriber addresses in SMTP context. This allows for pre-queue rejection of messages sent to mailing lists from non-subscribers.

12/22/2007 12/22/2007:
Released mailprocd v1.2 "Damnable Dominion" (Notable changes | ChangeLog /blob/master/CHANGELOG.md#">ChangeLog)
10/29/2007 10/29/2007:
Released mailprocd v1.1 "The Persistence Of Time"

Donate via PayPal
Csoft.net ElectronTubeStore