SpamAssassin自体のインストールが完了したので、次はPostfixへの組み込みになる。
もちろん、Postfixの機能だけでSpamAssassinでフィルタリングすることはできるのだが、ちょっと調べていたところ、さらに良さそうな方法を佐藤氏のBlogにて見つけた。
Postfixの設定でClamSMTPと、受信時だけSpamAssassinを利用する - モーグルとカバとパウダーの日記
spampd、SMTPを話すSMTPプロキシだ。
これであれば、常時spamdを立ち上げておく必要もない(代りにspampdを立ち上げておかなければならないが...)
そして単純なフィルタに比べ、リソース問題にも強く、(きちんと設定すれば)パフォーマンスも高いようだ。
spampdからspampd-2.30.tar.gzをダウンロード。
完全なPerlプログラムで、makeなどの必要はない。
/usr/local/binにコピーして、付属のspampd-rh-rc-scriptをほぼそのまま/etc/init.d/にコピーする。
$ sudo cp spampd-rh-rc-script /etc/init.d/spampd
いくつかのファイルを
佐藤氏のBlogを参考に修正する。
/etc/postfix/main.cf
smtpd_recipient_restrictions =
...
reject_unauth_destination
check_client_access regexp:$config_directory/filter_spampd
...
content_filter =
receive_override_options = no_address_mappings
/etc/postfix/filter_spampd
/./ FILTER scan:127.0.0.1:10025
/etc/postfix/master.cf
# SA scan filter (used by content_filter)
scan unix - - n - 10 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
/etc/init.d/spampd
daemon spampd --port=10025 --relayhost=127.0.0.1:10026 --tagall --auto-whitelist
設定が完了したら、
# /etc/rc.d/init.d/spampd start
# postfix reload
動作が確認できたら、
# chkconfig spampd on
# chkconfig --list spampd