クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

SpamAssassinのインストール


契約中のさくらの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の振り分け機能を活用すればフィルタすることができます。

コメントは受け付けていません。