PostfixでSpam対策

Filter用ユーザー・グループを作成する。ちなみにbayesはベイジアンフィルタを使うので、その名前にしました。名前は任意です。

addgroup --system bayes
adduser --system --home /var/spool/mail/bayes --no-create-home --disabled-password --ingroup bayes bayes
mkdir /var/spool/mail/bayes
chown -R bayes:bayes /var/spool/mail/bayes

レシピを織り込む。

mkdir -p /etc/spamassassin/rules.d
wget -q -O /etc/spamassassin/rules.d/70_sare_genlsubj.cf  http://www.rulesemporium.com/rules/70_sare_genlsubj.cf
wget -q -O /etc/spamassassin/rules.d/70_sare_obfu.cf http://www.rulesemporium.com/rules/70_sare_obfu_x31.cf
wget -q -O /etc/spamassassin/rules.d/71_japanese.cf  http://tlec.linux.or.jp/docs/user_prefs

/etc/spamassassin/local.cfを編集する。

use_bayes 1
bayes_path /var/spool/mail/bayes/auto-bayes
bayes_file_mode 0660
auto_whitelist_path /var/spool/mail/bayes/auto-whitelist
auto_whitelist_file_mode 0660
bayes_auto_learn 1
required_hits 9
rewrite_subject 1
subject_tag [SPAM]
report_safe 0
use_dcc 0
use_pyzor 0
use_razor2 1
skip_rbl_checks 0
rbl_timeout 3
score RCVD_IN_BL_SPAMCOP_NET 3
blacklist_from ブラックリストに載せたいメールアドレスを列挙する
・・・・
report_header 1

/etc/postfix/master.cfを編集する。

smtp      inet  n       -       -       -       -       smtpd
        -o content_filter=spamd
smtp-amavis unix -      -       n       -       2  smtp
        -o smtp_data_done_timeout=1200
        -o disable_dns_lookups=yes
127.0.0.1:10025 inet n  -       n       -       -  smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
spamd     unix  -       n       n       -       -       pipe
        user=bayes argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

/etc/procmailrcを設定し、サーバー全体の振る舞いを決定する。

DROPPRIVS=yes
:0fw |
/usr/bin/spamc
:0
* ^X-Spam-Status: Yes
$DEFAULT

/etc/spamassassin/v310.preを編集する。

loadplugin Mail::SpamAssassin::Plugin::TextCat

更に、PostfixでSpamhausのブロックリストを利用する。

vi /etc/postfix/main.cf

smtpd_recipient_restrictions =
       permit_mynetworks,
       ...
       reject_unauth_destination,
       reject_rbl_client sbl.spamhaus.org

smtpd_recipient_restrictionsに続けて、reject_rbl_client sbl.spamhaus.orgを記入する。

Postfix、Spamassassinを再起動する。

/etc/init.d/postfix restart
/etc/init.d/spamassassin restart

動作確認方法は、ブラックリストに自分のメールアドレスをリストアップし、送信する。

メールのソースの中に「X-Spam-Checker-Version」の記述があれば、動作している。