SpamAssassin

RIMNETのspamが結構ひどい状況になってることもあって、SpamAssassinを試してみる。

$ tar zxvf Mail-SpamAssassin-3.0.0-rc5.tar.gz
$ cd Mail-SpamAssassin-3.0.0/
$ perl Makefile.PL
$ make
# make install

で入るはずなのだが、makeで、Digest::SHA1が見つからないというエラーが出る。「@INCの中に」と言ってるので、パスの問題かと思ったが、SpamAssassinのパッケージ内にはそんなファイルは見当たらない。perlが古いせいかと思い、最新のstableのperl-5.8.5を入れてみる。が、状況変わらず。ここでようやく、追加パッケージを入れるのだということに気付く。CPANから

  • Digest-SHA1-2.10.tar.gz
  • HTML-Parser-3.36.tar.gz

を取ってきてインストール。それぞれ解凍して

$ perl Makefile.PL
$ make
# make install

こんな感じ。rubyのdrbとかrd2htmlとかと同じ話なのね。perlわからんよ〜。皆CPANから直接入れてるから情報少ないし。
とにかくインストールはできたと。で、どーやって使うのだと。よーわからんまま定義ファイルを取ってきて、/etc/mail/spamassassin/local.cfに置く。どうやらspamdとspamcのC/Sになってるらしいので、やはりよーわからんまま/etc/rc.d/rc.localに

/usr/local/bin/spamd -d

を追加。パッケージに入っているサンプルを使って、

/usr/local/bin/spamc < sample-spam.txt

とすると、もとのメッセージに

X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.0.0-rc5 (2004-09-13) on
obs.pegandgiff.dyndns.org
X-Spam-Level: **************************************************
X-Spam-Status: Yes, score=997.1 required=7.0 tests=ALL_TRUSTED,
CONTENT_TYPE_PRESENT,GTUBE autolearn=unavailable     version=3.0.0-rc5

こんなヘッダを追加したものを標準出力に出してくれる。spamでないと判断した場合はこんな感じ。

X-Spam-Checker-Version: SpamAssassin 3.0.0-rc5 (2004-09-13) on
obs.pegandgiff.dyndns.org
X-Spam-Level:
X-Spam-Status: No, score=-0.1 required=7.0    tests=CONTENT_TYPE_PRESENT
autolearn=unavailable version=3.0.0-rc5

なるほど、なるほど。そうやって使うのね。しかし、このサンプル処理するのに1分くらいかかってるんだけど大丈夫かな〜。ま、意味はわかったのでそそくさと設定。..procmailrcの中で、

:0fw
*!^X-Spam.*
|/usr/local/bin/spamc

X-Spamのヘッダが付いてない全てのメールをspamcに渡す。

:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
$MAILDIR/.certainly-spam/

Spam-Levelが15以上だったらcertainly-spamフォルダへ。Maildirを使う場合は、最後の'/'を忘れずにだ。

:0:
* ^X-Spam-Status: Yes
$MAILDIR/.probably-spam/

Spam-Levelが15未満でStatusがYesならprobably-spamフォルダへ。実際やってみると、RIMNETに届いてるspamは全て"probably-spam"に入ってる。素晴らしい。もっとcertainlyのレベルを下げてもいいのか?