spam メールからblacklistを作る

spamメールからアドレスを抽出して、blacklistを作ります。

ぼくの環境ではspamメールはMaildirの.spamに入っています。

grep "From" ~/Maildir/.spam/cur/* | grep -E "[-_a-zA-Z0-9\.+]+@[-a-zA-Z0-9\.]+" | grep -o "[-_a-zA-Z0-9\.]*@[-a-zA-Z0-9\.]*" | sort | uniq

これを.blacklistに保存してprocmailを使うと、このリスト中のメールアドレスからのメールはそのまま削除されます。

.procmailrcの例です。イマドキはあまり使われないだろうな…。

PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
LOGFILE=$HOME/.mail/log
DEFAULT=$MAILDIR
VERBOSE=ON
# ブラックリストファイルの指定
BLACKLIST=$HOME/.blacklist

# spam対策
# From:, Reply-To:, Sender:, From のどれかに
# ブラックリストのメールアドレスが含まれていたらゴミ箱へ。
:0
* ? test -s $BLACKLIST
* ? (formail -x From: -x Reply-To: -x Sender: -x From | fgrep -iqf $BLACKLIST)
/dev/null