spam, spam, spam...

最近、spamメールの量が手動削除で追いつかないレベルになってきたので、spamフィルタを導入してみた。普段のメール環境が今だに「大学の研究室サーバに直接loginしてる」という状態(好みの問題で、このスタイルが一番落ち着く)なので、qmailと連動できるものを探していたらbsfilterなるものがあったので、他のものは大して調べもせずテキトーに入れてみた。結果的にはprocmail経由で呼んでるからqmail関係なかったけど。

まぁ、この手のソフトの大半がそうだと思うが、ご多分に漏れずbsfilterベイジアンを使っている。なので、最初に学習データをどうするかで一番苦労した。俺はspamも要件が済んだメール等と同じゴミ箱に一緒くたに放り込んでいたので、しょうがないから、最初に100通ずつくらい「典型的なspam」と「cleanメール」を手動で抽出してから、bsfilterに食わせて学習させた。後は、

  1. bsfilterでゴミ箱の中を全部判定、閾値を甘めにしてspamを抽出
  2. 新たに抽出されたspamを食わせて学習させ、↑に戻る

というループを何度か回して、ゴミ箱をspamとcleanに二分した。最後にspamとcleanの中を手動でザッと見て、誤検出を学習させなおしたのだが…いやー、賢いねぇ、ベイジアン様は。いや、マジで。こうやってキレイに分けられると「今までこんなにspamが来てたのか」ってのに驚いた。導入して1週間たたないけど、すでに300通超えてるし。稀に誤判定で紛れ込んでくるspamがあるが、中を見ると(意図的かどうか謎だが)フィルタにかかりにくいような書き方をしている。なかなか考えるもんだねぇ、と感心してみたり。