• 作成:

SpamAssassinの学習フィルタを重視する

私のメールサーバの~/.spamassassin/user_prefsにはadd_header all Report _REPORT_と書かれていて全てのメールにスパムチェックレポートが追加されるようになっています.

スパムが判定されなかったり逆に誤検知が起きた時に原因を知るためです.

これを日々見ていると, どうも学習フィルタをあまり信用していないのが原因だとわかってきました.

例えばとある検知されなかったスパムメールは以下のようなレポートとなっています.

X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on
	sonoda.localhost.ncaq.net
X-Spam-Level: **
X-Spam-Status: No, score=2.6 required=4.0 tests=BAYES_99,BAYES_999,
	HTML_IMAGE_RATIO_06,HTML_MESSAGE,MSGID_FROM_MTA_HEADER,RCVD_IN_DNSWL_NONE,
	RCVD_IN_MSPIKE_H2 autolearn=no autolearn_force=no version=3.4.1
X-Spam-ASN: AS4816 113.108.0.0/19
X-Spam-Report:
	*  3.5 BAYES_99 BODY: Bayes spam probability is 99 to 100%
	*      [score: 1.0000]
	* -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no
	*      trust
	*      [113.108.11.223 listed in list.dnswl.org]
	* -1.1 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
	*      [113.108.11.223 listed in wl.mailspike.net]
	*  0.2 BAYES_999 BODY: Bayes spam probability is 99.9 to 100%
	*      [score: 1.0000]
	*  0.0 HTML_IMAGE_RATIO_06 BODY: HTML has a low ratio of text to image area
	*  0.0 HTML_MESSAGE BODY: HTML included in message
	*  0.0 MSGID_FROM_MTA_HEADER Message-Id was added by a relay

BAYES_99でこれまでの学習結果からスパムメールだと看破しているのにもかかわらず, スコアが3.5しか加算されないためスパム扱いされていません.

本来これはヘッダの怪しさなどから追加されるのを想定しているのでしょうが, 最近のスパムメールは普通にDKIM署名されていたりしてむしろマイナススコアがついたりします.

単にrequired_scoreを下げるだけだとスパムの誤検知が頻発したため学習フィルタのスコアを上げることにします.

上げるのは良いのですが, デフォルト値がどれぐらいかわからないため適切な値がわかりませんでした.

ネットに上がっているコードをコピペすればそれで済むというのは確かなのですが気持ち悪い.

ダンプするコマンドなどはないようでしたが, スコアのデフォルト値を列挙しているページを見つけました.

SpamAssassin: Tests Performed: v3.3.x

何故か古いやつだけで, 新しいバージョンのものは提供されていないようでしたが, まあ変わってはいないでしょう.

値はデフォルトの2倍ぐらいのもので問題ないでしょう.

現在の付け足した設定ファイルは以下のようなものになりました.

# 学習フィルタを重視する
score BAYES_00 -3.8
score BAYES_05 -1
score BAYES_20 -0.002
score BAYES_40 -0.002
score BAYES_50 1.6
score BAYES_60 3
score BAYES_80 4
score BAYES_95 6
score BAYES_99 7

# 日本人からのメールを受け取る場合
meta FROM_EXCESS_BASE64 0
# 本文の文字エンコーディングがUTF-8のメールを許容する場合
meta MIME_BASE64_TEXT 0
# スペースを多用する署名を許容する場合
meta TVD_SPACE_RATIO 0

# http://blog.dmitryleskov.com/small-hacks/forcing-spamassassin-to-add-the-x-spam-status-header-to-ham-for-debugging/
add_header all Report _REPORT_