契約中のさくらのVPS(現ブログも運用)にスパム対策を行うSpamAssassin、postfix MTAと連携できるspamass-milterをインストールしました。
wget http://spamassassin.emaillab.jp/pub/ja-patch/sa3.3/packages/rhel/spamassassin-3.3.1-5.src.rpm rpm -ivh spamassassin-3.3.1-5.src.rpm rpmbuild -ba /rpmbuild/SPECS/spamassassin.spec yum install perl-Net-DNS perl-NetAddr-IP yum install perl-Encode-Detect perl-IO-Socket-INET6 perl-IO-Socket-SSL perl-Mail-SPF perl-Mail-DKIM rpm -ivh /root/rpmbuild/RPMS/x86_64/spamassassin-3.3.1-5.el6.x86_64.rpm
最新のルールファイルをダウンロード。
wget http://www.flcl.org/~yoh/user_prefs cp -pc local.cf{,.orig} mv user_prefs local.cf
ルールファイルを編集
vi /etc/mail/spamassassin/local.cf
normalize_charsetは日本語のスパムに対応させるものです。スパム判定されたメールの標題を任意に変更できます。
normalize_charset 1 trusted_networks 219.94.254.112 report_safe 0 rewrite_header Subject *****SPAM*****
v3.2で導入されたプラグインで一行追加。
vi /etc/mail/spamassassin/v320.pre
loadplugin Mail::SpamAssassin::Plugin::TextCat
spamassassin実行用のユーザを追加
useradd spamd -s /bin/false -d /var/spamd
spamassassinをspamdユーザで実行するようにコンフィグファイルを編集。
vi /etc/sysconfig/spamassassin
SPAMDOPTIONS="-d -u spamd -c -m5 -H"
postfixと連携できるように、spamass-milterをインストール
yum install spamass-milter
一部コンフィグを編集。
EXTRA_FLAG="-m -r 2000"
実行スクリプトを編集。
vi /etc/init.d/spamass-milter
sockファイルをpostfixユーザのオーナにする。これをしないとspmass-milterからのアクセスでパーミッションが怒られてしまう。
daemon --user ${RUN_AS_USER} /usr/sbin/${prog} ${SOCKET_OPTIONS} -p ${SOCKET} -P ${pidfile} -f ${EXTRA_FLAGS} chown postfix.postfix $SOCKET chmod 0600 $SOCKET
spamass-milterが一時的にファイルを生成するので、spamdユーザが書き込めるようにする。
chown -R spamd:spamd /var/lib/spamass-milter/.spamassassin
サービス開始。
service spamassassin start service spamass-milter start
スパムメールを学習。
wget http://www.flcl.org/~yoh/yoh_spam_050102.tar.bz2 tar xvjf yoh_spam_050102.tar.bz2 sa-learn --progress --spam home/yoh/spam/spam/
postfixの設定ファイルに以下を追加。
# milter milter_default_action = accept milter_mail_macros = {auth_authen} {auth_author} {auth_type} smtpd_milters = unix:/var/run/spamass-milter/spamass-milter.sock non_smtpd_milters = unix:/var/run/spamass-milter/spamass-milter.sock milter_protocol = 2
CentOS6だとSpamAssassinをインストールに必要なperlモジュールもすんなり入れられて結構スムーズにスパム検知を構築できました。
MTAにqmailを使っている場合、qmail-scannerで連携させるのに、qmail-queue用パッチを適用しないといろいろ大変ですが、postfixだと手軽に構築できます。
qmail-scannerを使わずとも、procmailの振り分け機能を活用すればフィルタすることができます。