FreeBSD Handbook
Prev | Chapter 29 Electronic Mail | Next

# 29.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 `FreeBSD.org` mailing lists and places each list in its own mailbox:

    :0
    * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
    {
    	LISTNAME=${MATCH}
    	:0
    	* LISTNAME??^\/[^@]+
    	FreeBSD-${MATCH}
    }

Prev | Home | Next
Using fetchmail | Up | Network Servers