人気ブログランキングへ

2007年04月16日

SpamAssassin + procmail で SPAM を自動削除 (Linux)

SpamAssassin を procmail と組み合わせて、SPAM を自動削除し、誤認識を自動学習させる方法を試してみた。

※bsfilter については、こちらを参照 →「SPAMメールの自動検知(bsfilter) − Linux編」他

SpamAssassin は、Linux のパッケージとして提供されているので、インストールは簡単である。
ここでは、SpamAssassin のインストールが完了していて、デーモンが起動されているものとする。

また、POP サーバーなどから受信したメールを procmail に通す環境を想定している。

たとえば、fetchmail で受信したメールを procmail に投げる方法については、「PC←→携帯間メール転送 (fetchmail & procmail)」でも書いたので、割愛。
.forward で procmail に通すなら、.forward に

"|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #アカウント名"


と記述すればよい。

(1) procmail で SPAM を自動的に振り分ける

procmail の設定ファイル .procmailrc で、たとえば次のようにする。

SPAM_DIR=$HOME/Mail/spam/.

:0fw: spamassassin.lock
| /usr/bin/spamc

# autolearn=spam なら、SPAM とみなす
:0H
* ^X-Spam-Flag: Yes
* ^X-Spam-Status:.*autolearn=spam
$SPAM_DIR

# X-Spam-Level が20以上なら、SPAM とみなす
:0H
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
$SPAM_DIR


最初のレシピは、受信したメールに対して、前処理として SpamAssassin のクライアントソフト /usr/bin/spamc に通している。
2つ目のレシピは、 X-Spam-Flag が Yes で、X-Spam-Status の autolearn が spam の場合、$HOME/Mail/spam に移動する。
3つ目のレシピは、X-Spam-Level に、* が 20 個以上ついていれば、$HOME/Mail/spam に移動する。

SpamAssassin の自動認識にも誤りはあるので、確実に SPAM というもののみを SPAM フォルダに移動し、それ以外は通常のメールと同じフォルダに残し、個別に判断する。

(2) SpamAssassin に学習させる

SpamAssassin には、sa-learn というコマンドがあり、誤判断したメールを正しく学習させることができる。
そのために、誤判断されたメールを別ディレクトリに移しておく。

さて、SpamAssassin のデフォルトの設定では、SPAM と判定されたメールは、件名に [SPAM] と表示される。
それが本当に SPAM であれば、捨てればよい。

もし、SPAM なのに [SPAM] と表示されなければ、明示的に SPAM であることを SpamAssassin に学習させるために、SPAM 用ディレクトリ (ここでは、$HOME/Mail/spam) に移動する。

逆に、SPAM ではないのに [SPAM] と表示されていたら、そのメールを SPAM ではないことを学習させるためのディレクトリ (ここでは、$HOME/Mail/ham) にコピーする。

sa-learn コマンドをいちいち実行するのも面倒なので、CRON を使うとよいだろう。
たとえば、次のようなスクリプトを用意する。

#!/bin/sh

if [ -d $HOME/Mail/spam ]; then
    sa-learn --spam $HOME/Mail/spam
    rm -f $HOME/Mail/spam/[1-9]*
fi

if [ -d $HOME/Mail/ham ]; then
    sa-learn --ham $HOME/Mail/ham
    rm -f $HOME/Mail/ham/[1-9]*
fi


そして、CRON からこのコマンドを定期的に実行すればよい。

【参考にしたサイト】
「SpamAssassinの利用方法」
http://www.rcnp.osaka-u.ac.jp/Divisions/CN/i2006/usersguide/spamassassin.html

「SpamAssassinにスパムを学習させる。IMAPとMaildirを活用」
http://www.13hz.jp/2004/11/spamassassin.html
posted by K/I at 17:44 | 東京 ☔ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。