procmail

Information

Setup procmail to handle mail filtering.

Installation

# cd /usr/ports/mail/procmail
# make install clean

Configuration

Sendmail

First we have to rebuild sendmail's cf file to include procmail.

/usr/src/contrib/sendmail/cf/README has some notes on that.

  1. Copy /usr/src/etc/sendmail/freebsd.mc to a new filename:
    # cd /usr/src/etc/sendmail
    # cp freebsd.mc custom.mc
  2. Edit custom.mc - we need to add the following:
    --- freebsd.mc  Tue Aug 22 23:31:00 2006
    +++ shalom.mc   Mon Sep  3 00:02:42 2007
    @@ -44,15 +44,16 @@
     #
     
     divert(0)
    -VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.30.2.2 2006/08/23 03:31:00 gshapiro Exp $')
    +VERSIONID(`$FreeBSD: src/etc/sendmail/shalom.mc,v 1.00.0.0 2007/09/02 23:54:00 john Exp $')
     OSTYPE(freebsd6)
     DOMAIN(generic)
     
     FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
     FEATURE(blacklist_recipients)
    -FEATURE(local_lmtp)
    +dnl FEATURE(local_lmtp)
     FEATURE(mailertable, `hash -o /etc/mail/mailertable')
     FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
    +FEATURE(`local_procmail',`',`procmail -t -Y -a $h -d $u')
     
     dnl Uncomment to allow relaying based on your MX records.
     dnl NOTE: This can allow sites to use your server as a backup MX without
    @@ -83,10 +84,14 @@
     
     dnl Enable for both IPv4 and IPv6 (optional)
     DAEMON_OPTIONS(`Name=IPv4, Family=inet')
    -DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')
    +dnl DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')
     
     define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
     define(`confNO_RCPT_ACTION', `add-to-undisclosed')
     define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
    +
    +dnl# Also accept mail for localhost.localdomain:
    +dnl LOCAL_DOMAIN(`localhost.localdomain')dnl
     MAILER(local)
     MAILER(smtp)
    +MAILER(procmail)
  3. Build your custom.mc (or in my case, shalom.mc) file:
    # m4 -D_CF_DIR_=/usr/src/etc/sendmail/../../contrib/sendmail/cf/   /usr/src/etc/sendmail/../../contrib/sendmail/cf/m4/cf.m4 shalom.mc > shalom.cf
  4. Copy the new sendmail cf file into place (and also copy the mc file):
    # cp custom.* /etc/mail/
  5. Backup the current cf file:
    # cd /etc/mail
    # cp sendmail.cf sendmail.cf.orig
  6. Copy your new cf into place:
    # cp custom.cf sendmail.cf
  7. Restart Sendmail:
    # /etc/rc.d/sendmail restart

Procmail

Setup a default global procmail file (/usr/local/etc/procmailrc):

# Please check if all the paths in PATH are reachable, remove the ones that
# are not.

PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:.
MAILDIR=$HOME/mail      # You'd better make sure it exists
DEFAULT=/var/mail/$LOGNAME
LOGFILE=$MAILDIR/log.file
VERBOSE=yes
LOCKFILE=$HOME/.lockmail



# Anything that has not been delivered by now will go to $DEFAULT
# using LOCKFILE=$DEFAULT$LOCKEXT

Eventually this file will have spam filtering options configured (after I setup spamassassin)

Notes

================================================================ ===============
If you are a system administrator you should consider integrating procmail
into the mail-delivery system -- for advanced functionality, speed AND
SECURITY --.  For more information about this topic you should look in the
examples/advanced file.
================================================================ ===============
If you would like to inspect the results before running make install:
All installable files can be found in the new/ subdirectory.
freebsd/procmail.txt · Last modified: 2007/09/03 15:41 by john
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki