Setup procmail to handle mail filtering.
# cd /usr/ports/mail/procmail # make install clean
First we have to rebuild sendmail
's cf file to include procmail.
/usr/src/contrib/sendmail/cf/README
has some notes on that.
/usr/src/etc/sendmail/freebsd.mc
to a new filename:# cd /usr/src/etc/sendmail # cp freebsd.mc custom.mc
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)
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
# cp custom.* /etc/mail/
# cd /etc/mail # cp sendmail.cf sendmail.cf.orig
# cp custom.cf sendmail.cf
# /etc/rc.d/sendmail restart
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)
================================================================ =============== 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.