人気ブログランキングへ

2005年08月23日

SPAMメールの自動検知(bsfilter) − Linux編

毎日大量に届く SPAM メールにとうとう我慢できなくなり、メールにフィルタをかけることにした。

【環境】
OS: Fedora Core 3
メール受信: fetchmail + procmail
フィルタ: bsfilter

fetchmail で外部の POP サーバーからメールを収集し、procmail でローカルマシンに配送。その際、bsfilter を使って SPAM メールを指定ディレクトリに移動してしまおう、というのがねらい。

まず、fetchmail、procmail、bsfilter をインストールする。
bsfilter は、

http://bsfilter.org/

から入手できる。

[bsfilter のインストール]
上記 bsfilter のサイトから入手した bsfilter-X.Y.Z.tgz 内の bsfilter/bsfilter を、/usr/local/bin などにコピーするだけ。

[fetchmail の設定]
$HOME/.fetchmailrc に、たとえば以下のように記述
poll pop.somewhere.com proto POP3 user k-ishik password xxxxxx \
mda "/usr/bin/procmail -d k-ishik" fetchall;

上の設定の場合、POP サーバーは pop.somewhere.com でユーザーアカウントは k-ishik パスワードは xxxxxx。そして、ローカルマシンのアカウント k-ishik に、procmail を使って配送している。

[procmail の設定]
$HOME/.procmailrc は、以下のようにする
PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/Mail

:0 HB:
* ? bsfilter -a
spam/candidate/.

この場合、bsfilter で SPAM と判定されたメールは POP のスプールには送られず、直接 $HOME/Mail/spam/candidate に格納される。

[bsfilter の育て方]
bsfilter は、どれが SPAM で、どれがクリーンなファイルなのか、教えてあげないといけない。具体的には以下のようにする。
まず、SPAM にも関わらず、$HOME/Mail/spam/candidate に移されなかったメールを $HOME/Mail/spam に移動する。
また、SPAM でないにも関わらず、$HOME/Mail/spam/candidate に格納されてしまったメールを $HOME/Mail/clean に移動する。
そして、以下のコマンドを実行する。
$ bsfilter -sCu $HOME/Mail/spam/*
$ bsfilter -cSu $HOME/Mail/clean/*

これで、誤判定されていたトークンが正される。
※正しく SPAM と判断された場合は、procmail での受信時に自動更新される。
ログアウト時などに、上の処理を実行するように設定してあげれば、bsfilter の SPAM 判定の正答率が上がってくる (と思う)。

今のところ、動きは上々。
不愉快なメールに悩まされることが少なくなることを期待している。
posted by K/I at 17:29 | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


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

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