1年ぐらいスパムフィルターとしてBeckyのプラグインとして提供されている深海魚フィルタ(シーラカンスソフト)というものを使っていたのですが、ここ最近バージョンアップの頻度が多くて安定していないのかなという印象があったり、自分の環境では動作時にCPUが100%までいってしまいマシンの動作が重くなってしまったり、精度的にも悪くはないけど良くもないという感じだったため、他のスパムフィルターの導入を検討することにしました。
検討する際のポイントとして以下の5点を考慮しました。
- Windowsで動作する
- Beckyで使うことができる
- スパム判定精度がある程度高い
- 導入が楽
- メンテナンスが楽
で、いろいろと探した結果SpamAssassinのWindows PortであるSAwin32が一番しっくりきたため、それを使うことにしました。
SAwin32にはSAProxyというアプリが含まれていて(というか、それしか含まれていない)、SAProxyはPOP3のプロキシとなりスパムをフィルタリングをしてくれるソフトになります。他の同様のソフトとしてはPOPFileなどがありますね。
以下、インストール方法になります。
- http://sawin32.sourceforge.net/よりSAwin32をダウンロード
Download SAwin32ってところからダウンロードしてください。
- SAwin32をインストール
ダウンロードしたexeファイルを起動してインストールしてください。インストール時にいつも使うPOP3サーバを聞かれますので、今メーラーに設定されているPOP3サーバを入力してください。この設定はあとで変えられます。
- スパムを勉強させるために、sa-learnとsa-updateをダウンロード
先程のページの右側のリンクからsa-learnとsa-updateをダウンロードしてください。
- sa-learnとsa-updateのアーカイブを解凍する
これらはインストール作業はないので、単純に解凍して適当なディレクトリに置いておけばよいようです。
- どこからかスパムのデータを持ってきて、sa-learnを使ってSpamAssassinにスパムを学習させる
なにはさておきSpamAssassinにスパムを覚え込ませる必要があります。そこで最初にsa-learnを使ってSpamAssassinにスパムを学習させます。
まずは、DOSプロンプトを開いてsa-learnを解凍して出来たディレクトリに移動しください。そこでどこかからもってきたスパムデータをspam.txtという名前でカレントディレクトリに保存して以下のコマンドを打つことでSpamAssassinがスパムを学習します。
% sa-learn.exe --spam spam.txt
もし、どこかからもってきたスパムのデータがmbox形式であれば、 以下のように--mboxを指定することでmbox形式のスパムも勉強できます。
% sa-learn.exe --spam --mbox spam.txt
- sa-updateで設定ファイルを更新
sa-updateは、SpamAssassinの設定ファイルを更新するコマンドです。これは定期的に更新をするもののようですので、適当なときに以下のように実行しておけばよいでしょう。--nogpgはgpgをインストールしてない環境用のオプションです。
% sa-update.exe --nogpg
- SpamAssassinの日本語に特化した設定ファイルをダウンロード
TLECの方が用意したuser_prefsファイルをhttp://tlec.linux.or.jp/docs/user_prefsからダウンロードしてください。ここには日本語のスパムのためのフィルタ条件が含まれています。これを用いることでかなりのスパムをフィルタリングすることができるようです。
ダウンロードしたものを C:\Documents and Settings\ユーザ名\.spamassassin に置きましょう。
- SAwin32のSAProxyを立ち上げる
やっとここで、最初にインストールしたSAProxyを立ち上げます。単純にプログラムメニューから起動するだけでよいです。
- メーラーを設定する
SAProxyのインストール時にちゃんとPOP3サーバを設定できていれば、メーラーのPOP3サーバの部分をlocalhostに変更するだけでオッケイです。
- あとはメールを受信するだけ
メーラーで受信をしてみてください。スパムがはじかれていれば成功です。
かなり駆け足で説明したのでどこかで抜けがあるかもしれませんが、概ねこんな感じでインストールできると思います。
あと、スパム情報のメンテナンスですが深海魚フィルタより若干面倒です。
流れとしては、(Beckyの場合)スパムを集めておいてそれをファイルにエクスポートし、それを上記でやったようにsa-learn.exeで勉強させるという感じになります。
で、一番気になるスパム判定の精度ですが、今のところなかなかいい精度ではないか思います。
深海魚よりはスパムをハムと間違える率は少なくなっているし、ハムをスパムと間違える率も少なくなっているようです。
ということで、しばらくはこれを使ってみたいと思います。