Spamassassin 3.1.1 + Spamass-Milter [FC5]
作成 : 2006/05/05
Spamassassin
SPAM判定をするプログラム。 SPAMメール/非SPAMメールを学習させると、判定制度があがるらしい。 spamass-milterでsendmailと連携させる。 本家は、http://spamassassin.apache.org/
spamass-milterとspamassassinをインストール
spamass-milterパッケージをyumでインストール。 依存関係にあるspamassassin他も一緒にインストールしてくれる。
# yum install spamass-milter
....
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
spamass-milter i386 0.3.1-1.fc5 extras 62 k
Installing for dependencies:
perl-Digest-HMAC noarch 1.01-14.2 core 12 k
perl-Digest-SHA1 i386 2.11-1.2 core 49 k
perl-HTML-Parser i386 3.51-1.FC5 updates 92 k
perl-HTML-Tagset noarch 3.10-2.1 core 14 k
perl-Net-DNS i386 0.57-1 updates 217 k
perl-Net-IP noarch 1.24-2.2 core 31 k
spamassassin i386 3.1.1-1.fc5 updates 884 k
Transaction Summary
=============================================================================
Install 8 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 1.3 M
....
perlからSPF(Sender Policy Framework)を利用するためのモジュールperl-Mail-SPF-Queryも、インストールしておく。
# yum install perl-Mail-SPF-Query
....
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
perl-Mail-SPF-Query noarch 1.999.1-1.fc5 extras 66 k
Installing for dependencies:
perl-Net-CIDR-Lite noarch 0.20-1.fc5 extras 24 k
perl-URI noarch 1.35-2.2 core 117 k
Transaction Summary
=============================================================================
Install 3 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 207 k
....
spamass-milterとspamassassinを起動
spamass-milterとspamassasinを起動する。
# /etc/init.d/spamass-milter start # /etc/init.d/spamassassin start # ps -ef | grep spam sa-milt 2152 1 0 20:42 ? 00:00:00 /bin/bash /usr/sbin/spamass-milter-wrapper -p /var/run/spamass-milter/spamass-milter.sock -P /var/run/spamass-milter.pid -m -r 15 sa-milt 2153 2152 0 20:42 ? 00:00:00 /usr/sbin/spamass-milter -p /var/run/spamass-milter/spamass-milter.sock -P /var/run/spamass-milter.pid -m -r 15 root 2162 1 28 20:43 ? 00:00:01 /usr/bin/spamd -d -c -m5 -H -r /var/run/spamd.pid root 2164 2162 0 20:43 ? 00:00:00 spamd child root 2165 2162 0 20:43 ? 00:00:00 spamd child
サーバ起動時にサービスが開始されるよう、chkconfigで設定しておく。
# chkconfig spamass-milter on # chkconfig spamassassin on
sendmailの設定を変更(sendmail.mc)
spamass-milterを使うよう、sendmailの設定を変更する。
dnl # /etc/mail/sendmail.mc .... INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav-milter/clamav.sock, F=, T=S:4m;R:4m')dnl INPUT_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, clamav')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 ....
変更したら、sendmail.mcからsendmail.cfを作成する。 その後、sendmailサービスを再起動。
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf /etc/mailディレクトリに移動して"make"でもOK # /etc/init.d/sendmail restart
SPAMメールを送ってみる
/usr/share/doc/spamassassin-3.1.1/ディレクトリにSPAMのサンプルファイルsample-spam.txtがあるので、その本文をコピーしてSPAMメールを送ってみる。 ...リジェクトされた。
# tail -f /var/log/maillog ... sendmail[15671]: k3UCduIk015671: from=<***@*****>, size=1609, class=0, nrcpts=1, msgid=<********>, proto=ESMTP, daemon=MTA, relay=******** [*.*.*.*] sendmail[15671]: k3UCduIk015671: Milter add: header: X-Virus-Scanned: ClamAV 0.88.1/1429/Sun Apr 30 19:30:14 2006 on ***.nina.jp sendmail[15671]: k3UCduIk015671: Milter add: header: X-Virus-Status: Clean spamd[15468]: spamd: connection from ***.nina.jp [127.0.0.1] at port 40229 spamd[15468]: spamd: setuid to sa-milt succeeded spamd[15468]: spamd: processing message <********> for sa-milt:102 spamd[15468]: spamd: identified spam (1006.7/5.0) for sa-milt:102 in 0.4 seconds, 2020 bytes. spamd[15468]: spamd: result: Y 1006 - AWL,GTUBE scantime=0.4,size=2020,user=sa-milt,uid=102,required_score=5.0,rhost=***.nina.jp,raddr=127.0.0.1,rport=40229,mid=<********>,autolearn=no sendmail[15671]: k3UCduIk015671: Milter add: header: X-Spam-Flag: YES sendmail[15671]: k3UCduIk015671: Milter add: header: X-Spam-Status: Yes, score=1006.7 required=5.0 tests=AWL,GTUBE autolearn=no \n\tversion=3.1.1 sendmail[15671]: k3UCduIk015671: Milter: data, reject=550 5.7.1 Blocked by SpamAssassin sendmail[15671]: k3UCduIk015671: to=<***@nina.jp>, delay=00:00:01, pri=31609, stat=Blocked by SpamAssassin ...
SPAMメールをリジェクトしない
spamass-milterの起動オプションにより、SPAMスコアが15点以上と判定された場合はリジェクトしてしまうらしい。 /etc/sysconfig/spamass-milterで起動オプションを変更する。
# /etc/sysconfig/spamass-milter # デフォルトの起動オプション # EXTRA_FLAGS="-m -r 15" # -m : メッセージボディ、コンテントタイプ、サブジェクトを変更しない # -r n : スコアがn点以上ならリジェクト EXTRA_FLAGS=""
変更したら、spamass-milterを再起動する。 よくわからないけど、変更前のプロセスが残っていたりするので、psコマンドでプロセスのオプションを確認したほうがよい。
# /etc/init.d/spamass-milter restart
再度メールを送ってみると、リジェクトされずに届いた。 オリジナルの題名の前に"[SPAM]"が付加され、X-Spam-*ヘッダが追加されている。 メッセージボディは変更されない。
...
Subject: [SPAM] TEST
...
X-Spam-Flag: YES
X-Spam-Status: Yes, score=998.9 required=5.0 tests=ALL_TRUSTED,AWL,GTUBE
autolearn=no version=3.1.1
X-Spam-Report:
* -1.4 ALL_TRUSTED Passed through trusted hosts only via SMTP
* 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
* 0.4 AWL AWL: From: address is in the auto white-list
X-Spam-Level: **************************************************
X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on
******
自分が送ったメールはSPAMチェックしたくない
現在の設定では、受信したメールだけでなく、自分が送信したメールについてもSPAMチェックされてしまう。 spamass-milterの起動オプションを追加して、送信メールのSPAMチェックをしないようにする。
# /etc/sysconfig/spamass-milter # -i : 指定したIPアドレスからの接続は、SPAMチェックしない EXTRA_FLAGS="-i 127.0.0.1,192.168.0.0/16"
変更したら、spamass-milterを再起動する。
# /etc/init.d/spamass-milter restart
少しだけspamassassinの設定(local.cf)
spamassassinの設定は、/etc/mail/spamassassin/local.cfファイルに記述する。
# /etc/mail/spamassassin/local.cf # スコアが5点以上ならSPAMと判定 required_hits 5 # report_safe 0 : スパムレポートをヘッダ(X-Spam-Report)に挿入する # report_safe 0のサンプルメッセージ # report_safe 1 : スパムレポートをメッセージボディの先頭に挿入する # オリジナルのメッセージボディは、message/rfc822(添付ファイル)になる # report_safe 1のサンプルメッセージ # report_safe 2 : スパムレポートをメッセージボディの先頭に挿入する # オリジナルのメッセージボディは、text/planeになる # report_safe 2のサンプルメッセージ # report_safe 0 # SPAMメールの題名に"[SPAM]"を付加する rewrite_header Subject [SPAM] # 送信者ホワイトリストにメールアドレスを登録する # "whitelist_from *@nina.jp" のような指定も可能 whitelist_from address@nina.jp # 送信者ブラックリストにメールアドレスを登録する # "blacklist_from *@nina.jp" のような指定も可能 blacklist_from address@nina.jp
変更を有効にするには、spamassassinの再起動が必要。
# /etc/init.d/spamassassin restart
spamassassinのテスト
実際にメールを送受信して設定を確認するのが確実だけど、ローカルでテストすることも可能。 ヘッダを含むメッセージをテキストファイルに保存しておいてspamc(spamassassin client)に食わせると、結果を標準出力に表示してくれる。
# spamc < message.txt
From ***@***** Tue May 2 21:33:30 2006
Return-Path: <***@******>
Received: from ****** (***** [***.***.***.***])
by ***** (8.13.6/8.13.6) with SMTP id k42CXUKb003180
for <***@*****>; Tue, 2 May 2006 21:33:30 +0900
Message-ID: <009c01c66de4$63dc4970$f902a8c0@*****>
From: "***" <***@*****>
To: <***@*****>
Subject: [SPAM] TEST
Date: Tue, 2 May 2006 21:31:52 +0900
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
X-Spam-Flag: YES
X-Spam-Status: Yes, score=998.9 required=5.0 tests=ALL_TRUSTED,AWL,GTUBE
autolearn=no version=3.1.1
X-Spam-Report:
* -1.4 ALL_TRUSTED Passed through trusted hosts only via SMTP
* 1000 GTUBE BODY: Generic Test for Unsolicited Bulk Email
* 0.4 AWL AWL: From: address is in the auto white-list
X-Spam-Level: **************************************************
X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on
*****
...
spamassassinを起動するとき-Dをつけると、詳細なログを/var/log/maillogに残してくれる。 起動オプションは、/etc/sysconfig/spamassassinに記述する。
# /etc/sysconfig/spamassassin # Options to spamd SPAMDOPTIONS="-d -c -m5 -H -D"