目次
はじめに
Gmail は確かにスパムメールへの対応が優秀だ。 一方で、Gmail以外のメールアドレスも持っている場合はどう対処するのが良いだろうか。
最近のBiglobeのスパム判定は優秀
自分は長らくBiglobeのメールアドレスを持っている。
自宅マシンはLinuxで受信してIMAPサーバー経由でメーラーで読む。(BiglobeへのメールはGmailにも転送をする。)
Biglobeのアドレスで受信するメールのうち、近頃は迷惑メールの割合のほうが多く、迷惑メールでないものは1割以下である。
迷惑メールフィルターを搭載しているThunderbirdを使っていても、手動でマークする必要がある場合が多い。
どうにかならんものかと調べていたら、Biglobeでもスパムメール判定機能があることを最近知った。これを有効にするとSubjectに [spam]と入れてくれるようになる。 これがかなり優秀で、判定されたメールはほぼ迷惑メールである。(もちろん判定できていない場合もある。)
Biglobeの場合は、迷惑メール判定するだけなら無料で利用できる。(迷惑メールブロックサービス|メール)
Procmailのレシピ例
自宅Linuxマシンではfetchmailで取り込み、procmailで振り分けをしている。この[spam]判定されたメールの処理をメモしておく。
# スパム判定されたものはハジく
:0
* ^Subject:.*(iso-2022-jp|UTF-8)
* ^Subject:.*\/.*
* ? echo "$MATCH" | nkf -mw | egrep -i '\[spam\].*'
{
# SPAM判定されたメールは .spam に格納する。copyで次の処理を継続
:0c
.spam/
# LASTFOLDERは直前に処理したファイル名。
# ファイル名の/以降を変数 $tailに格納
:0
* LASTFOLDER ?? /\/[^/]+$
{ tail=$MATCH }
# procmail 処理終了後処理で cur に移動、ファイル末尾に 既読マーク":2,S"をつける
TRAP="/bin/mv $LASTFOLDER .spam/cur/$tail:2,S"
# HOST変数をクリアしておく(なぜ?)
HOST
}
[spam]判定されると SubjectはBASE64でエンコードされるので、まずはエンコードされているかを判定している。エンコードされていて[spam]の文字列があれば、この後の処理が実行される。
.spamフォルダに振り分けるのだが、そのままだと既読にならない。 迷惑メールを手動で既読処理するのは避けたい。
なので、後半はIMAPのnewフォルダからcurフォルダに移動し、ファイル名の末尾に”:2,S”を付加する。これで既読になる。 (このような処理が必要なのはIMAPの仕様。興味があれば各自で調べて欲しい。)
後半の処理はかなり強引だが、今のところは問題はなさそうだ。
なお、この処理の元ネタはprocmail で Maildir 振り分け時に imap の状態を既読にする設定 – World Wide Walkerである。
おわりに
近頃の迷惑メールはフィッシングメールが多く、文面も巧妙になっている。 ベイジアン・フィルターでも迷惑メールと非迷惑メールの差を検出するのは難しそうだ。 長くbsfilterを使っているが、有効でない場合も多い。
また、Procmailの迷惑メール対策レシピも自分なりに書いているが、イタチゴッコである。
Biglobeのメールサーバーのように優秀な迷惑メールフィルターが利用できるなら試してみる価値はあると思う。 Subjectに[spam]が挿入されていれば、メーラー側で振り分けルールを設定するのも楽だろう。