BkASPilからPOPFileに移行した (13:51)
スパムフィルターとして、BkASPil for Becky!2(http://b2antispam.s33.xrea.com/)をしばらく使っていたんだけど、仕事で頻繁にWindowsを落として(ブルースクリーン)いたら、そのたびに確実にBecky!が起動しなくなる原因がBkASPilにある(データファイルが一度壊れると致命的エラーになって起動しないっぽい)ことに気付き、しょうがないんでほかのスパムフィルターに移行することにした。で、ちょうどそこここで話題になっていたPOPFile(http://popfile.sourceforge.net/)を使ってみることにした。
ちなみにBkASPilは、インターネット上に公開されているスパムの送信元アドレスのブラックリストを使ってスパムを判別しつつ、またユーザー宛に来たスパムを簡単にブラックリストに登録することが出来る機能を用意することで、ブラックリストの鮮度を保つ仕組みになっている。結構大きなDBにネットワーク越しにアクセスするせいか、起動が重いという欠点があったけれども、スパム判別性能は結構良かった。特に海外スパム系の判別に強い。反面、国内スパムの判別にはちょっと弱いかも。
で、POPFileの方はスパムフィルターとしてはもはや定番になりつつある、ベイジアン理論を使ったソフト。ベイジアン理論ってのは、過去の統計から未来を予測するという、至極まっとうな理屈をコンピュータ上に載っけるための理論、だったはず(うろ覚え&確認なし)。
スパムフィルターなんかで使う場合は、メールのカテゴライズ(簡単にはスパムかスパムでないか)を人手によって行いつつ、そのメール中にどういう単語が含まれていたかを蓄積学習していき、その蓄積された情報を使って、新しいメールに含まれる単語情報から、そのメールがどのようにカテゴライズされるべきかを推測する、といった感じで使われる。
って仕組みなんで、別にスパムを判別するためだけにしか使えないわけではない。「文章中に含まれる単語(文章の構成要素)から、その文章をカテゴライズする」ことが可能なんで、汎用的なメール分類のためにも使える。というか、私の場合はPOPFileをスパムフィルターというよりは、スパムも判別してくれるメール分類ツールとして使っている。POPFileを使い始めてからは、今までBecky!のフィルタリングマネージャでいろいろ分類していたのをすっぱりやめて、すべてPOPFileに分類してもらうようにしてしまった(POPFileで分類された結果を、さらにフィルタリングマネージャで分類したりはしているけど)。
POPFileのインストールは、インストールマニュアル(http://popfile.sourceforge.net/manual/jp/manual.html)が充実しているんで、言うとおりに作業するだけで簡単に使えるだろう。ただ、結構仕組みはややこしいんで、使いこなすにはそれなりの知識が必要かも。
POPFileは、POP(メール受信プロトコル)のプロキシーサーバーとして自分のPC上で動作し、メールクライアントはまずPOPFileにアクセスし、POPFileが実際のメールサーバーにアクセスしてメールを取得し、妥当なフィルタリング(=加工)を行ってから、メールクライアントにメールを渡す、といった動作をするようになる。だから、メールクライアントの種類は選ばない。ただ、POPFile側の設定とメールクライアント側の設定の両方が必要。POPFileの設定はWebブラウザで出来るようになっている。単に動かすだけならばマニュアル通りにやればいいけど、理解して設定するにはそれなりの知識が必要だろう。
ちなみにベイジアンフィルターの説明のところで書いたように、この仕組みでは基本的に「まずユーザーがメールを手動で判別し、それによって学習した成果を利用して、新しいメールを自動的に分類する」ということになるんで、使い始めてしばらくの間は積極的にユーザーが判別情報を学習させる必要がある。作業としては、Webブラウザにメールのタイトル一覧が表示されるんで、それぞれのメールの種別をドロップダウンリストから選択していけばいい。
学習データが出来ると、POPFileはそれを元に自動判別を試みるようになる。けれど、最初のうちは情報が少ないんで結構間違える。間違っているものは正しい判別に修正して学習させると、次からは判別の精度が上がる。それを繰り返していくうちに、ほぼ自動的に正しい判別をしてくれるようになっていく。
POPFileでは、判別の種類は自由に設定できる。一番簡単な種類の設定としては、「スパム」「スパム以外」だろうけど、せっかく「あいまいっぽい」判別を行ってくれる仕組みがあるんだから、自分で便利なようにいろいろ種類を設定してしまったほうが楽しい。ポイントとしては、
- 文字列一致などで確実に判別できるものは、POPFileで判別させる必要がない(メーラーの標準機能で判別できるだろう)
- 単語要素があまりにも似通っていそうな分類は、POPFileは不得意そうなので、実用的にならないかも(やってみたら結構いけるかもしれないけど)
- 学習によって精度を高めていく仕組みなんで、後から判別種類を大幅に変えてしまったりしたら、学習のやり直しになってしまう。ある程度長いスパンで使えるような分類にした方がいいかも
- ベイジアンフィルターは結構負荷が高い処理らしいんで、あんまり無茶な数の分類にはしない方がいい(でも10個くらいなら平気そうだ)
ちなみに私は、「business」「personal」+[「admin」]+「commercial」「ml」「spam」「virus」+[「other」]+という分類で使ってみている。対象のメールアカウントは、私用・仕事あわせた全てのアカウント5個分。この分け方を使っていてうれしいのは、スパムとウイルスを判別してくれることと、正規の広告系メールをうまく分類してくれること。あと、仕事アドレスに来た私用メールとか、私用アドレスに来た仕事メールを分類してくれることも。このあたりが、通常の文字列一致系分類ではうまくいかなかったところ。
ただ残念なのは、POPFileは現時点ではAPOPには対応していないことか。せっかくうちのサーバーをAPOPサーバーにしたのにな。