ひさしぶりの procmail ねた。
SpamAssassin がきわめて効果的に働いているのでいまいち存在感が薄くなった procmail なのですが、一日平均70通ほど捕捉するSpamAssassin網の目をかいくぐるものがあり、procmail で GB2312コードをゴミ箱行きに決め打ちすることによりさらに 5通/日 程度の spam除け効果があります。
さて、SpamAssassinの網の目をくぐりぬけたメールが多くなるとこれに対処するべく .procmailrc にレシピを記述するわけですが、あれこれ書いて長くなってくると、実際に網にかかったときにどれがマッチしたのかわかんなくなるのですね。平常時は問題ありませんが
という長すぎる前置きを経て本題。 .procmailrc に次のように書けばどの行でマッチしたか一目瞭然です。
PATH=/bin:/usr/bin:/usr/local/bin
SHELL=/bin/sh
MAILDIR=$HOME/Mail
:0H f
* ^Subject: \/.*
* ? echo "$MATCH" | nkf -Zme | grep '!.*広告.*!'
| formail -A "X-Procmail: ADV1"
:0H f
* ^Content-Type: .*GB2312
| formail -A "X-Procmail: JUNK1"
:0H f
* ^To: .*@relay[0-9]*.dti.ne.jp
* !^From: .*.dti.ad.jp
| formail -A "X-Procmail: JUNK2"
# 広告
:0H:
* ^X-Procmail: ADV
$MAILDIR/ad/.
# ゴミ
:0H:
* ^X-Procmail: JUNK
$MAILDIR/junk/.
こうすることにより網にかかった場合はメールのヘッダに 'X-Procmail: JUNK1' などの行が追加されるので判別しやすくなります。複数のレシピにかかった場合はたくさん追加されます(笑)。