Spamassassin 3.1.1 + Spamass-Milter [FC5]

[サーバの実験室 Redhat/Fedora]

作成 : 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"

[サーバの実験室 Redhat/Fedora]