SpamAssassin + procmail を使えるようにする
[/Solaris]
最近一日平均10通以上のspamを受け取って(無理矢理送りつけられて)います。これまではnPOPを用いて手作業で削除していたのですが、自分で分類するのもいい加減面倒くさくなってきました。そこで、サーバーにSpamAssassinとprocmailを導入してフィルタリングをすることにしました。以下その作業メモ。
- SpamAssassin のインストール
# perl -MCPAN -e shell
で CPAN モジュールを起動し、cpan> install Mail::SpamAssassin
でインストール完了です。 - procmail のインストール
まずはソースを ring から入手。 こちらには configure スクリプトは付いていないので、Makefile を手で編集します。 といっても、4行目のBASENAME = /usr
をBASENAME = /opt/local
に変更しただけです。後は% gmake % su # gmake install
で自動的にその環境を判別してコンパイル・インストールできます。 - SpamAssassinのdaemon起動スクリプトを用意
SpamAssassin はかなりリソースを使います。起動時のオーバーヘッドを 少しでも抑えるために、 SpamAssassin の daemon である spamd を 起動しておくことにします。 スクリプトspamassassinを /etc/init.d/ に設置します。また、/etc/rc0.d/K23spamassassin /etc/rc1.d/K23spamassassin /etc/rc2.d/K23spamassassin /etc/rc3.d/S21spamassassin /etc/rcS.d/K23spamassassin
にシンボリックリンクを張っておきます。 - .procmailrcと.forwardを作成
procmailrcをユーザーのホームディレクトリに .procmailrc としておきます。また、来たメールをprocmailに渡すため、.forwardに"|IFS=' ' && exec /opt/local/bin/procmail -f- || exit 75 #username"
と書きます。ここで赤字のusernameはそのユーザーの名前に合わせます。 これで SpamAssassin の判定結果によって Mail/doubt や Mail/spam にメールがたまるようになります。 - メールをSpamAssassinに通してみる
この段階で一通メールをそのユーザに出してみます。このとき、ホームディレクトリに.spamassassinというディレクトリが出来てその中にSpamAssassinが使うファイル一式が作られているはずです。その一つに設定ファイルuser_prefsがあるはずですが、TLECに優秀な設定ファイルuser_prefsがあるので、それに変更します。ここまで出来上がったら、さきほどの .procmailrc の9行目と10行目を以下のように編集します。
#| /opt/local/perl/bin/spamassassin -P | /opt/local/perl/bin/spamc -U /var/run/spamd/spamd.sock
これで出来上がりです。あとは sa-learn を使ってSpamAssassinを鍛え上げると、spamかどうか判定する精度が上がっていきます。