POPFileによるSPAM対策

このところSPAMが増え続け、体感的に半分以上そうなんじゃないかという状態に陥ってしまっている。確率的なSPAM対策なんて誤りを気にして結局使えないんじゃないか、という気がしていたのだけど、ちょっと手を出してみたくなった。
ということで、DebianサーバにPOPFileをインストールした。
最初の数十通を手動で学習させただけで、かなり正確に分類してくれるようになったのには驚いた。使い始めて二日ほど、まだ時々学習させなければならないが、メールの処理効率が上がったように感じる。半自動でspamフォルダに振り分けてしまうので、必要なメールだけがいつも残っている状態にできるのがうれしい。もっと早く導入していればよかった。
以下技術的な成り行き。

  • apt-get install popfile
  • ブラウザで7070ポートにアクセスして言語を日本語に切り替える。さらに、home, spamの二つのバケツを作成。
  • メールソフト(Mew)でPOPユーザ名を「localhost:ユーザ名」に、pop-portを7071に設定。

とやってメールを受信してみた。すると最初は受信できたがPOPFileのコントロールセンター上でSubjectが文字化けしたり、受信中にPOPFileのプロセスがなくなったりする。

  • POPFileを日本語で使うにはkakasiが必須という情報を見つけ、libtext-kakasi-perlをインストール。すると一挙に問題は解決した。
  • さらに、こちらなどを参考にMewで受信メールヘッダにX-Text-Classification: spamがある場合にspamフォルダに振り分ける設定を記述。
(setq mew-scan-fields (delete mew-spam: mew-scan-fields))
(setq mew-spam: "X-Text-Classification:")
(setq mew-scan-fields (append mew-scan-fields (list mew-spam:)))
(defun mew-spam-classification (val)
  (let ((case-fold-search t))
    (if (string-match "spam" val) "+spam")))
(setq mew-inbox-action-alist
      '(("X-Text-Classification:" mew-spam-classification)))

これで、受信したメールのうちspamらしいものに最初から+spamフォルダへの移動マークがついて現れるようになる。後は、ざっとチェックしつつ、間違いがあったらpopfileにブラウザでアクセスして訂正してあげる、という作業の繰り返しである。
最後にxコマンドでspamspamフォルダに一括移動。これできれいなinboxが手に入ることになる。