elisp だけで実装したスパムフィルタ mew-spam-stat.el でスパム除去し
ていたが、スパム判定洩れが多くなってきたので、評判が良い bsfilter
を使ってみることにする。

【環境】
OS: RedHat Linux 7.2
メール受信: 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 などにコピーするだけ。

[bsfilter の育て方]
最初、bsfilter は、どれが SPAM で、どれがクリーンなファイルなのか分
からないので、教えてあげないといけない。具体的には以下のようにする。

% find $HOME/Mail/inbox -type f ! -name ".mew-*" | xargs bsfilter --add-clean
% find $HOME/Mail/spam -type f ! -name ".mew-*" | xargs bsfilter --add-spam
% bsfilter --update

もちろんこれに先だって、$HOME/Mail/inbox の中の SPAM メールを
$HOME/Mail/spam ディレクトリに移しておく。

[fetchmail の設定]
$HOME/.fetchmailrc に、たとえば以下のように記述。

poll pop.nifty.com
proto apop
user xxxxx
pass yyyyy
no rewrite
no mimedecode
fetchall
mda "/usr/bin/procmail -d zzzzz"

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

[procmail の設定]
$HOME/.procmailrc は、以下のように記載する。

PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/Mail

:0 HB:
* ? bsfilter --auto-update
* ? touch $MAILDIR/spam/.mew-mtime
spam/.

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

今のところ、動きは上々。
不愉快なメールに悩まされることが少なくなることを期待している。

URL: http://k-ishik.seesaa.net/article/6166960.html