Postfix で SpamAssassin を使ってスパムメールを排除する方法

この記事では、CentOS 7 Linux プラットフォーム上の Postfix に SpamAssassin をインストールする方法を解説します。
前提条件
記事を執筆するにあたり下記条件で検証しています。
- CentOS 7.x
- Postfix 2.x
- SpamAssassin 3.x
なお Postfix のバージョンは次の方法で確認できます
postconf -d | grep mail_version
SpamAssassinバージョン確認
spamassassin -V
SpamAssassin のインストール手順
$ sudo yum update
$ sudo yum install spamassassin
SpamAssassin の構成手順
$ sudo vi /etc/mail/spamassassin/local.cf
構成ファイルに、下記を記述します
required_hits 5.0
report_safe 0
required_score 5
rewrite_header Subject [SPAM]
SpamAssassin を実行する新しいユーザーを作成します。
具体的には spamd グループを追加してシェルなしユーザを作成します。
$ sudo groupadd spamd
$ sudo useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
$ sudo chown spamd:spamd /var/log/spamassassin
自動起動を有効化してサービスを開始します
$ sudo systemctl enable spamassassin
$ sudo systemctl start spamassassin
スパムルールの更新をします
$ sudo sa-update
Postfix で SpamAssassin を使用する構成手順
master.cf ファイルを編集します。
$ sudo vi /etc/postfix/master.cf
smtp inet n - n - - smtpd
上の行を下に変更します
smtp inet n - n - - smtpd -o content_filter=spamassassin
最終行に下行を追加します。
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Postfixを再起動します
$ sudo systemctl restart postfix
スパム検出をテストする
本メールサーバーの外部から下記メールを送信してテストします。
タイトル:なんでも良い
メッセージ本文:XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
正常に設定されていれば、受信トレイに [SPAM] で始まるタイトルのメールが届きます。
さらにログをチェックします。
$ journalctl | grep spam
スパム定義の更新を自動化する
crontab を開き
$ sudo vi /etc/crontab
自動更新(毎日午前零時実行)を設定します
0 0 * * * root /bin/sa-update && /sbin/service spamassassin restart
cron実行確認方法
grep "sa-update" /var/log/cron
以上