SpamAssassin をメールフィルタで使う

SPAM が多いです.
いろんなメーリングリストに入っていると,1日に受け取るメールの何割かが SPAM になることもあります.
そんな SPAMをフィルタリングするために使っているのが Mail-SpamAssassin
普通は procmail + SpamAssassin で満足なのですが,せっかく家にメールサーバがあるので サーバ側でフィルタリングしてみました.
使ったのは,Sendmail (MILTERサポート) + SpamAssassin + spamass-milter です.
Mail-SpamAssassin はインストール済みという前提です.

1. とりあえず,sendmail

今回は MILTER を使うので,Sendmail を MILTER 対応で作らなければなりません.
デフォルトでは MILTER に対応しないので,devtools/Site/site.config.m4 に

    APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')

を足して MILTER 対応でビルドします.

2. spamass-milter を入れる

Sendmail の MILTER と通信するための spamass-milterを インストールします.
簡単です.

    % tar zxvf spamass-milter-0.1.3a.tar.gz
    % cd spamass-milter-0.1.3a.tar.gz
    % ./configure
    % make
    # make install

libmilter.a がインストールされていないと,configure で文句を言われます.
文句を言われた場合,

    % cd sendmail-x.y.z/libmilter
    % ./Build
    # ./Build install

して libmilter.a をインストールしましょう.

3. 動かす

とりあえず,SpamAssassin と spamass-milter を動かします.
SpamAssassin はデーモン化した spamd で動かします.

   # /usr/local/bin/spamd -d -a -u smmsp
   # /usr/local/sbin/spamass-milter -p /var/run/spamass.sock -f &

オプションの意味は,それぞれのドキュメントを参照してください.

4. sendmail の設定

MILTER を使ったので,sendmail の設定は簡単です.
sendmail.mc に,INPUT_MAIL_FILTER を記述します.

    INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl

な感じで書くだけです.

5. テスト

sendmail.cf を作り直して,sendmail を再起動したら,とりあえずメールを送ってみましょう.

    X-Spam-Status: ...

なヘッダが付加されていたら,たぶん正常に動作しています.
SpamAssassin をチューニングして SPAM をばんばん落としましょう.
動いていない場合は,mail.notice あたりをチェックしてエラーを眺めましょう ;-p


PREV RETURN NEXT