SPAM が多いです.
いろんなメーリングリストに入っていると,1日に受け取るメールの何割かが SPAM になることもあります.
そんな SPAMをフィルタリングするために使っているのが Mail-SpamAssassin.
普通は procmail + SpamAssassin で満足なのですが,せっかく家にメールサーバがあるので
サーバ側でフィルタリングしてみました.
使ったのは,Sendmail (MILTERサポート) + SpamAssassin + spamass-milter です.
Mail-SpamAssassin はインストール済みという前提です.
今回は MILTER を使うので,Sendmail を MILTER 対応で作らなければなりません.
デフォルトでは MILTER に対応しないので,devtools/Site/site.config.m4 に
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')
を足して 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 をインストールしましょう.
とりあえず,SpamAssassin と spamass-milter を動かします.
SpamAssassin はデーモン化した spamd で動かします.
# /usr/local/bin/spamd -d -a -u smmsp # /usr/local/sbin/spamass-milter -p /var/run/spamass.sock -f &
オプションの意味は,それぞれのドキュメントを参照してください.
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
な感じで書くだけです.
sendmail.cf を作り直して,sendmail を再起動したら,とりあえずメールを送ってみましょう.
X-Spam-Status: ...
なヘッダが付加されていたら,たぶん正常に動作しています.
SpamAssassin をチューニングして SPAM をばんばん落としましょう.
動いていない場合は,mail.notice あたりをチェックしてエラーを眺めましょう ;-p