Linuxサーバ奮戦記
--- Spamass-Milter + Sendmail (Fedora12)---   (Up.10Jan2010)                      >>TOP

Sendmailを組み合わせて,スパムメールのチェックができるというもの。
設定は他サイト(http://fedorasrv.com/postfix-clamav-spamassassin.shtml)のを参考。
ただし,Sendmail は動作していることが前提。

Spamass-Milterのインストール
必要になりそうなのをインストール。
# yum install -y spamass-milter

spamassassin を起動。
# /etc/rc.d/init.d/spamassassin start
# chkconfig spamassassin on

日本語のスパムメールに対応したSpamAssassin設定。
# vi /etc/mail/spamassassin/v310.pre
・・・・・
# TextCat - language guesser
#
loadplugin Mail::SpamAssassin::Plugin::TextCat  (#を削除して有効にする)
・・・・・

SpamAssassin設定ファイル最新化スクリプト作成。
# vi spamassassin-update
#!/bin/bash

cd /etc/mail/spamassassin
wget -qN http://tlec.linux.or.jp/docs/user_prefs

diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
cp user_prefs local.cf
echo "report_safe 0" >> local.cf
echo "rewrite_header Subject [SPAM]" >> local.cf
/etc/rc.d/init.d/spamassassin restart > /dev/null
fi
cp user_prefs user_prefs.org

# chmod +x spamassassin-update

ファイル最新化実行。
# ./spamassassin-update

毎日自動実行される様,ディレクトリへ移動。
# mv spamassassin-update /etc/cron.daily/

# vi /etc/cron.d/sa-update
### OPTIONAL: Spamassassin Rules Updates ###
#
# http://wiki.apache.org/spamassassin/RuleUpdates
# Highly recommended that you read the documentation before using this.
# ENABLE UPDATES AT YOUR OWN RISK.
#
# /var/log/sa-update.log contains a history log of sa-update runs

10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log   (#を削除して有効にする)
# wget http://spamassassin.apache.org/updates/GPG.KEY
# sa-update ; sa-update --import GPG.KEY
# rm -f GPG.KEY


spamass-milter を起動する。
# /etc/rc.d/init.d/spamass-milter start
# chkconfig spamass-milter on


Sendmailの設定
# vi /etc/mail/sendmail.mc
・・・・・
IINPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl    (追加)
define(`confINPUT_MAIL_FILTERS', `spamassassin')dnl    (追加)
define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, {if_name}, {if_addr}')dnl    (追加)
define(`confMILTER_MACROS_HELO',`s, {tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}')dnl    (追加)
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl
# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf (1行で入力)

Sendmail を再起動する。
# /etc/rc.d/init.d/sendmail restart


メールを送受信して受信メールのヘッダを確認し,以下の様なのが追加されてれば動作しているかな?
スパムと判定されていない例:
・・・・・
X-Spam-Status: No, score=0.0 required=13.0 tests=CONTENT_TYPE_PRESENT, X_MAILER_PRESENT autolearn=ham version=3.3.0-rc1
X-Spam-Checker-Version: SpamAssassin 3.3.0-rc1 (2009-12-22) on ayu.yuyuyu.jp
・・・・・


スパムと判定される例:
/usr/share/doc/spamassassin-3.3.0/sample-spam.txt に例があるので,その中の以下の分をメールで送信してみる。
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

受信メールのタイトル: タイトルの前に [SPAM] が追加される。
[SPAM] spam-test

受信メールのヘッダ:
・・・・・
X-Spam-Flag: YES
X-Spam-Status: Yes, score=1000.0 required=13.0 tests=CONTENT_TYPE_PRESENT, GTUBE,X_MAILER_PRESENT autolearn=no version=3.3.0-rc1
X-Spam-Report: * -0.1 CONTENT_TYPE_PRESENT exists:Content-Type * 0.1 X_MAILER_PRESENT exists:X-Mailer * 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
X-Spam-Level: **************************************************
X-Spam-Checker-Version: SpamAssassin 3.3.0-rc1 (2009-12-22) on ayu.yuyuyu.jp
・・・・・


スパムメールと判定されたメールをどうするかを設定するには spamass-milter を編集する。
下記の例はスコアが30以上になったらメールのリジェクトし,ローカルからのメール送受信はスパムのチェックをしない。
# vi /etc/sysconfig/spamass-milter
### Override for your different local config
#SOCKET=/var/run/spamass-milter/spamass-milter.sock

### Standard parameters for spamass-milter are:
### -P /var/run/spamass-milter.pid (PID file)
###
### Note that the -f parameter for running the milter in the background
### is not required because the milter runs in a wrapper script that
### backgrounds itself
###
### You may add another parameters here, see spamass-milter(1)
#EXTRA_FLAGS="-m -r 15"
EXTRA_FLAGS="-r 30 -i 127.0.0.1,192.168.0.0/16"
Spamass-Milter の再起動。
# /etc/rc.d/init.d/spamass-milter restart