20.13 Using procmail

Contributed by Marc Silver.

The procmail utility is an incredibly powerful application used to filter incoming mail. It allows users to define ``rules'' which can be matched to incoming mails to perform specific functions or to reroute mail to alternative mailboxes and/or email addresses. procmail can be installed using the mail/procmail port. Once installed, it can be directly integrated into most MTAs; consult your MTA documentation for more information. Alternatively, procmail can be integrated by adding the following line to a .forward in the home directory of the user utilizing procmail features:

"|exec /usr/local/bin/procmail || exit 75"

The following section will display some basic procmail rules, as well as brief descriptions on what they do. These rules, and others must be inserted into a .procmailrc file, which must reside in the user's home directory.

The majority of these rules can also be found in the procmailex(5) manual page.

Forward all mail from user@example.com to an external address of goodmail@example2.com:

:0
* ^From.*user@example.com
! goodmail@example2.com

Forward all mails shorter than 1000 bytes to an external address of goodmail@example2.com:

:0
* < 1000
! goodmail@example2.com

Send all mail sent to alternate@example.com into a mailbox called alternate:

:0
* ^TOalternate@example.com
alternate

Send all mail with a subject of ``Spam'' to /dev/null:

:0
^Subject:.*Spam
/dev/null

A useful recipe that parses incoming dragonflybsd.org mailing lists and places each list in its own mailbox:

:0
* ^List-Post: <mailto:\/[^@]+
{
	LISTNAME=${MATCH}
	:0
	* LISTNAME??^\/[^-]+
	DragonFly-${MATCH}
}

Contact the Documentation mailing list for comments, suggestions and questions about this document.