PATH = /bin:/usr/bin:/usr/bin #HOME = /home/muon/bart MAILDIR = $HOME/mail #DEFAULT = /var/spool/mail/bart DEFAULT = $MAILDIR/inbox #LOGFILE = $MAILDIR/procmail.log LOGABSTRACT = yes LOGFILE = $HOME/.procmail/log MYDATE = `date +%Y-%m` #VERBOSE = yes #LOCKFILE=/var/tmp/$LOGNAME.lockmail # ---- ditch all spam before we get to real filters INCLUDERC=$HOME/.procmail/nkvir/nkvir-rc INCLUDERC=$HOME/.procmail/sanitizer/local-rules.procmail INCLUDERC=$HOME/.procmail/blacklist # ---- header cleanup # borowed from http://aperiodic.net/phil/configs/procmailrc # Silly people trying to set their own email status. :0 fhw * ^(X-)?Status: | formail -I Status -I X-Status # Likewise for SpamAssassin. I'll do my own checks, thanks. :0 fhw * ^X-Spam-(Status|Level|Score|Report): | formail -I X-Spam-Status -I X-Spam-Level -I X-Spam-Score -I X-Spam-Report # In a similar vein, I made this header up, but might as well have a # recipe to remove it for paranoia's sake. :0 fhw * ^X-List-Classify: | formail -I X-List-Classify # ---- if sender was marked as a spammer then send it to spam again :0 * ^Content-Type: *text/html { :0 fw: html.lock * ! ? formail -x"From:" | head -n1 | tr 'A-Z' 'a-z' | sed 's/.*\W\([0-9a-z_.-]\+@[0-9a-z_.-]\+\).*/\1/' | xargs -i grep -i {} $HOME/.lbdb/m_inmail.list | formail -I "X-Unwanted-Html: true" :0 efw: html.lock | formail -I "X-Unwanted-Html: false" } # ---- if the sender is known the add a X-From-Friend into header :0 * ^To:.*bart { :0 fw: friend.lock * ? formail -x"From:" | head -n1 | tr 'A-Z' 'a-z' | sed 's/.*\W\([0-9a-z_.-]\+@[0-9a-z_.-]\+\).*/\1/' | xargs -i grep -i {} $HOME/.mutt/aliases | formail -I "X-From-Friend: true" :0 efw: friend.lock | formail -I "X-From-Friend: false" } # ---- if I talked to the sender then add a X-From-Acquaintance into header :0 * ^To:.*bart { :0 fw: acquaintance.lock * ? formail -x"From:" | head -n1 | tr 'A-Z' 'a-z' | sed 's/.*\W\([0-9a-z_.-]\+@[0-9a-z_.-]\+\).*/\1/' | xargs lbdbq | formail -I "X-From-Acquaintance: true" :0 efw: acquaintance.lock | formail -I "X-From-Acquaintance: false" } # ---- perform an rbl check and update headers if it failed # http://impressive.net/archives/fogo/20000220233810.E7575@impressive.net :0 * ^Received: from.*\[\/[0-9.]+\].*by jukie\.net with { IP = $MATCH # trim it down to just the IP address :0 * IP ?? ^^\/[0-9.]+ { IP = $MATCH :0 fw: rblcheck.lock * ! ? /usr/bin/rblcheck -q $IP | formail -A"X-RBL-Check-Info: `echo; /usr/bin/rblcheck -t $IP | sed 's/^/ /'`" } } # ------------- spamassassin (mark only) :0fw: spamassassin.lock | /usr/bin/nice -n20 /usr/bin/spamassassin # previously -P enabled pipe mode #:0fw #| /usr/bin/nice -n20 /usr/bin/spamassassin -P # ------------- backup legit messages ARCHIVE=archive ARCHIVEFOLDER=$ARCHIVE/$MYDATE :0 Wic * ? test ! -d $ARCHIVEFOLDER | mkdir $ARCHIVEFOLDER && cd $ARCHIVE && rm -f now && ln -fs $MYDATE now :0 c: archive.lock $ARCHIVEFOLDER/rx # ------------- mutt mail reformatter :0 * !^Content-Type: message/ * !^Content-Type: multipart/ * !^Content-Type: application/pgp { :0 fBw * ^-----BEGIN PGP MESSAGE----- * ^-----END PGP MESSAGE----- | formail \ -i "Content-Type: application/pgp; format=text; x-action=encrypt" :0 fBw * ^-----BEGIN PGP SIGNED MESSAGE----- * ^-----BEGIN PGP SIGNATURE----- * ^-----END PGP SIGNATURE----- | formail \ -i "Content-Type: application/pgp; format=text; x-action=sign" } # ------------- pine mail prep #:0 BDc #* ^-----BEGIN PGP #* ^Version:.GnuPG #pgpenvelope-backup #:0 bfw #| /usr/bin/pgpenvelope_decrypt --filter # ------------- linux stuff :0: * ^X-Mailing-List:.*git@vger.kernel.org git/core :0 * ^List-Id:.*git-case.dmo.ca git/case :0: * ^X-Mailing-List:.*linux-kernel@ linux/kernel-$MYDATE :0: * ^(To|Cc):.*linux-kernel@ * !^(To|Cc):.*bart@ linux/kernel-$MYDATE :0: * ^List-Id:.*linux-thinkpad.linux-thinkpad.org linux/thinkpad-$MYDATE :0: * ^List-Id:.*linux-arm-kernel.lists.arm.linux.org.uk linux/arm-kernel :0: * ^List-Id:.*kernel-janitor-discuss.lists.sourceforge.net linux/janitor :0: * ^List-Id:.*kernel-janitors.lists.osdl.org linux/janitor :0: * ^List-Id:.*kernel-janitors.lists.linux-foundation.org linux/janitor :0: * ^(To|Cc):.*linux-security-module@ linux/security-module :0: * ^(To|Cc):.*linux-mm@ linux/mm :0: * ^List-Id:.*fastboot.lists.linux-foundation.org linux/fastboot :0: * ^List-Id:.*netfilter.lists.netfilter.org linux/netfilter :0: * ^(To|Cc):.*netfilter@ linux/netfilter :0: * ^X-Mailing-List:.linux-net.vger.kernel.org linux/net :0: * ^(To|Cc):.*linux-aio@ linux/aio :0: * ^X-List-ID:.*linux-crypto.nl.linux.org linux/crypto :0: * ^List-Post:.*mailto:systemtap@sourceware.org linux/systemtap # ------------- Xorg stuff :0: * ^List-Id:.*xorg-driver-geode.lists.x.org xorg/geode :0: * ^List-Id:.*xorg.lists.freedesktop.org xorg/xorg # ------------- xelerance.com :0: * ^Received:\ from\ .*\.xelerance.com * !^List-Id:.*lists.openswan.org * !^List-Id:.*users.openswan.org * !^List-Id:.*dev.openswan.org work/xelerance # ------------- thirdbrigade.com :0 * ^Received:\ from\ .*thirdbrigade\.com { :0 * ^To:.*cvs-thirdbrigade@ { :0 * B ?? Auto-increment.of.build.number.due.to.changes.in.directory.*in.revision /dev/null :0: * ^Subject:\ r[0-9]+\ -\ (in\ )?(trunk|branches/[^/]+)/(qa|Labs|Manager|Commons|OfficeScanPlugin|qa)[/:] work/3b-svn-other :0: * B ?? ^Subject:\ r[0-9]+\ -\ (in\ )?(trunk|branches/[^/]+)/(qa|Labs|Manager|Commons|OfficeScanPlugin|qa)[/:] work/3b-svn-other :0: work/3b-svn } :0: * ^From:.*Cron.*Daemon work/3b-cron :0: * ^From:.*fogbugz@ work/3b-bug :0 * ^Content-class:.urn:content-classes:calendarmessage { :0 c !bart.trojanowski@gmail.com } :0: work/thirdbrigade } # ------------- symbio-technologies.com :0: * ^Received:\ from\ .*\.symbio-technologies.com work/symbio :0: * ^(To|Cc|From):.*@symbio-technologies.com work/symbio # ------------- intldata.ca :0: * ^Received:.from.mars.eng * ^Return-Path:.gnats.mars.eng work/idc :0: * ^Received:\ from\ .*(datacast.com|intldata.ca) work/idc # ------------- somanetworks.com :0: * ^Received:\ from\ .*\.somanetworks.com work/soma # ------------- debian stuff :0 * ^(X-Mailing-List|List-Id):.*lists.debian.org { :0 * ^Content-Type:.*charset="GB2312" /dev/null :0 * ^Content-Type: text/plain; charset=gb2312 /dev/null :0: * ^X-Mailing-List:.*debian-devel@lists.debian.org debian/devel-$MYDATE :0 * ^(X-Mailing-List|List-Id):.*debian-newmaint@lists.debian.org debian/newmaint :0: * ^X-Mailing-List:.*debian-amd64@lists.debian.org debian/amd64 :0: * ^X-Mailing-List:.*debian-x86-64@lists.debian.org debian/amd64 :0: * ^X-Mailing-List:.*debian-dpkg@lists.debian.org debian/dpkg :0: * ^X-Mailing-List:.*debian-security-announce@lists.debian.org debian/security-announce :0: * ^X-Mailing-List:.*debian-devel-announce@lists.debian.org debian/devel-announce :0: * ^X-Mailing-List:.*debian-news@lists.debian.org debian/news } :0 * ^From owner@packages.qa.debian.org { :0: * ^X-Loop:.*packages.qa.debian.org * ^X-PTS-Package: * ^X-PTS-Keyword: debian/pts } :0: * ^List-Id:.*vcs-pkg.lists.madduck.net debian/vcs :0: * ^List-Id:.*vcs-pkg-discuss.lists.alioth.debian.org debian/vcs # ------------- PC/SC :0: * ^List-Id:.*muscle.lists.musclecard.com sc/muscle # ------------- vimperator :0: * ^List-Id:.*vimperator.mozdev.org vimperator :0: * ^List-Id:.*vimperator.mozdev.mozdev.org vimperator # ------------- bacula :0: * ^List-Id:.*bacula-users.lists.sourceforge.net bacula/users # ------------- amd64 stuff :0: * ^List-Id:.*discuss.x86-64.org amd64/discuss :0: * ^Mailing-List:.*discuss-.*@amd64.org amd64/discuss :0: * ^Mailing-List:.*discuss-.*@x86-64.org amd64/discuss # ------------- ion :0: * ^List-Id:.*ion-general.*lists.berlios.de ion/general # ------------- mutt-ng :0: * ^List-Id:.*mutt-ng-devel.*lists.berlios.de mutt-ng/devel :0: * ^List-Id:.*mutt-ng-users.*lists.berlios.de mutt-ng/users # ------------- ghak :0: * ^List-Id:.*ghak-bofh.jukie.net ghak/bofh :0: * ^List-Id:.*worship-ghak.ghak.org ghak/worship # ------------- flyingbits :0: * ^List-Id:.*ottawa-wifi.flyingbits.ca wifi/ottawa # ------------- otthtjobs@yahoogroups.com :0 * ^Mailing-List:.*otthtjobs@yahoogroups.com { :0 c ! atheistpriest@gmail.com :0: work/otthwjobs } # ------------- security :0: * ^List-Id:.*bugtraq.list-id.securityfocus.com security/bugtraq :0: * ^(List-Id|Mailing-List):.*securityjobs.*securityfocus.com security/jobs :0: * ^(List-Id|Mailing-List):.*linux-secnews.*securityfocus.com security/linux-secnews :0: * ^(List-Id|Mailing-List):.*secprog.*securityfocus.com security/prog :0: * ^(List-Id|Mailing-List):.*security-basics.*securityfocus.com security/basics :0: * ^(List-Id|Mailing-List):.*bugtraq.*securityfocus.com security/bugtraq :0: * ^(List-Id|Mailing-List):.*certification.*securityfocus.com security/certification :0: * ^(List-Id|Mailing-List):.*focus-linux.*securityfocus.com security/linux-focus :0: * ^(List-Id|Mailing-List):.*security-basics.*securityfocus.com security/basics # notify of security advisories :0 c * ^From:.*sec-adv@secunia.com * ^Subject:.*SA[0-9]+ | ${HOME}/bin/procmail-to-irc-secunia-advisories # ------------- oclug :0: * ^List-Id:.*linux.lists.oclug.on.ca oclug/tech :0: * ^List-Id:.*oclug.lists.oclug.on.ca oclug/list :0: * ^List-Id:.*oclug-board.lists.oclug.on.ca oclug/board :0: * ^List-Id:.*oclug-events.lists.oclug.on.ca oclug/events :0: * ^List-Id:.*oclug-announce.lists.oclug.on.ca oclug/announce # ------------- gpg folder :0: * ^List-Id:.*gnupg-devel.gnupg.org gpg/devel :0: * ^List-Id:.*gnupg-users.gnupg.org gpg/users # ------------- Openswan stuff :0: * ^List-Id:.*nightly.lists.openswan.org swan/nightly :0: * ^List-Id:.*users.openswan.org swan/users :0: * ^List-Id:.*dev.openswan.org swan/devel :0: * ^List-Id:.*announce.openswan.org swan/announce :0: * ^List-Id:.*cvs.lists.openswan.org swan/cvs :0: * ^List-Id:.*cvs.openswan.org swan/cvs :0: * ^List-Id:.*commits.lists.openswan.org swan/git # ------------- kids :0: * ^From:.*noreply@parenthacks.com kids/parenthacks # ------------- FreeS/WAN stuff :0: * ^List-Id:.*design.lists.freeswan.org swan/design :0: * ^List-Id:.*users.lists.freeswan.org swan/users :0: * ^Sender:.*users-owner@mj2.freeswan.org swan/users :0: * ^List-Id:.*bugs.lists.freeswan.org swan/bugs # ------------- ipsec :0: * ^(To|Cc):.*ipsec@lists.tislabs.com swan/ipsec :0 * ^List-Id:.IP.Security.*ipsec.ietf.org. swan/ipsec :0 * ^List-Id:.*ipsec.ietf.org swan/ipsec # ------------- logs :0 * ^From:.*(root|logcheck)@.*jukie.net { :0 * ^X-Log:.*logcheck logs :0 * ^Subject:.*jukie.net\ 20..-..-..\ ..:..\ system\ check logs :0 * ^Subject:.*(tau|muon|xenon)\ 20..-..-..\ ..:..\ .*\ Events logs :0 * ^Subject:.*exim\ log\ stats logs :0 * ^Subject:.*LogWatch\ for logs :0 * ^Subject:.*Cron logs :0 * ^Subject:.*iptables usage logs } :0 * ^Message-Id:.*nullmailer.muon.jukie.net * ^Received: from localhost * ^Subject: Log for.*build buildd :0 * ^Envelope-to:.*bart@jukie.net * ^Received:.*meson.jukie.net * ^From:.*Bacula.*root@jukie.net * ^Subject:.*Bacula[: ] bacula/logs # ------------- :0 * ^List-Id:.*lanparty.jukie.net LanParty # ------------- :0 * ^(From|Cc):.*ols-general-request@achilles.net OttawaLinuxSymposium :0 * ^(From|Cc|To|List-Id|Return-Path):.*ols-.*lists.linuxsymposium.org OttawaLinuxSymposium # ------------- :0 * ^Mailing-List:.*HireTopTalent_Ottawa@yahoogroups.com HireTopTalent # ----------------------- spam controll ------------------------ :0 * ^From:.*CABA.*caba@caba.org * ^Reply-To:.*caba@caba.org /dev/null :0 * ^To:.*bart@nexus.carleton.ca * ^X-Spam-Status: Yes spam/nexus-$MYDATE :0 * ^X-Spam-Status: Yes { :0 * ^X-Spam-Status: Yes, score=\/[0-9]+ spam/maybe-$MATCH :0 * ^X-Spam-Status: Yes, hits=\/[0-9]+ spam/maybe-$MATCH } :0 * ^X-RBL-Warning:.*in.a.black.list { :0 * ^X-Unwanted-Html:.*true spam/maybe-html-rbl :0 * ^X-Spam-Level: \*\*\*\*\* * ^X-Spam-Status: .*score=\/[0-9]+ spam/maybe-rbl-$MATCH } :0: * ^X-Spam-Status: Yes spam/maybe :0: $DEFAULT