2012年12月7日
から hiruta
SpamAssassinのインストール はコメントを受け付けていません
契約中のさくらのVPS(現ブログも運用)にスパム対策を行うSpamAssassin、postfix MTAと連携できるspamass-milterをインストールしました。
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 |
最新のルールファイルをダウンロード。
ルールファイルを編集
vi /etc/mail/spamassassin/ local .cf |
normalize_charsetは日本語のスパムに対応させるものです。スパム判定されたメールの標題を任意に変更できます。
trusted_networks 219.94.254.112 |
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 |
spamass-milterが一時的にファイルを生成するので、spamdユーザが書き込めるようにする。
chown -R spamd:spamd /var/lib/spamass-milter/.spamassassin |
サービス開始。
service spamassassin start |
service spamass-milter start |
スパムメールを学習。
tar xvjf yoh_spam_050102. tar .bz2 |
sa-learn --progress --spam home/yoh/spam/spam/ |
postfixの設定ファイルに以下を追加。
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 |
CentOS6だとSpamAssassinをインストールに必要なperlモジュールもすんなり入れられて結構スムーズにスパム検知を構築できました。
MTAにqmailを使っている場合、qmail-scannerで連携させるのに、qmail-queue用パッチを適用しないといろいろ大変ですが、postfixだと手軽に構築できます。
qmail-scannerを使わずとも、procmailの振り分け機能を活用すればフィルタすることができます。