twada 曰く、
今まで,約5年間本業の画像の研究の傍ら,SPAMフィルタの研究と開発を行なってきました.コンテンツ内のURLなどのフィンガープリントを用いた方法,ベイジアンフィルタ,など色々作ってみては,精度が十分高くないことに満足が行かず,何度も試行錯誤を繰り返しました.
そして,最終的に行き着いたのが,このNNIPFと名づけたフィルタです.説明とソースへのリンクは
http://vrl.sys.wakayama-u.ac.jp/~twada/NNIPF.html
にあります.
このフィルタの特殊性は,1)自分が外部からメイルを受けるときに使っている信頼できるMTAを登録しておき,そのMTAが生成したReceived:行から送信元のIPアドレスを割り出すという点,2)IPアドレスを最近傍識別することによってSPAM検出を行うという点,です.これが妥当性を持つ理由は,Received行の改竄に対応でき,しかもIPアドレスは,組織の種別によって番号の偏りがあるので,まっとうなメイルの送信元と,SPAMメイルの送信元にはかなりの偏りがあるためです.現在登録しているSPAM-IPは1万8千以上,HAM-IPは千数百程度ですが,最近傍識別は木探索を用いて一瞬で終わります.
ABUSEされたマシンから送ったまっとうなメイルがブロックされるという問題はあるかもしれませんが,私が使ってみた限りそういうケースは0でした.また,SMTP強制切断を行いRFC2821準拠でないものを落とすことで十分ではないかという話もありますが,これを用いても一旦他のMTAで中継されたメイルは通り抜けます.また,最近は専用SPAM送信マシンからRFC2821準拠で送られてくるSPAMもあるようです.こういったわけで,うちの組織も入り口でRFC2821のチェックをしてますが,私個人の場合は毎日10通以上は楽に通り抜けてきます.
そこでやっぱりフィルターは必要になるのですが,コンテンツを見て識別するフィルターはやっぱりミスをしますし,なかなか学習がいつどのように行なわれるのかが分からず,うまく御すことが難しいと思っておられる方は多いと思います.NNIPFは最近傍識別を用いたことで,これまで我々が開発してきたどんなフィルタよりも,精度が高く,学習も一瞬で終わるという性質をもちます.また,MTA上でSPAM検出をしますので,検出されたメイルはダウンロードされません.つまり,出張先のPHS接続で,SPAMばかりダウンロードするといったことが起きません.また,誤識別や,検出漏れなどがあった場合には,WEBインタフェースから修正を行なうことができます.このフィルタの長所はこういったところですが,逆に短所はというと,
*MTA+POP/IMAPサーバ+WEBサーバという3つの機能の揃ったLinux上でしか動かない
*メイルのメカニズムが分かっていない素人には設定や運用が難しい
の2点です.ですから,個々人で利用するよりもメイルの管理者が導入してユーザに利用法を教えるという形が取られると思います.
Perlで書かれたフリーソフトですので,ご自由にお使いください.