【環境】
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 判定の正答率が上がってくる (と思う)。
今のところ、動きは上々。
不愉快なメールに悩まされることが少なくなることを期待している。