迷惑メール/スパム対策

迷惑メール対策を強化するため、メールサーバのスパムアサシン(spamassassin)のフィルタをカスタマイズした

この記事は約9分で読めます。

迷惑メールフィルタを強化今年に入り迷惑メールが増加しており、とくに外国語の迷惑メールが急増している。サーバの迷惑メールフィルタをすり抜けてパソコンのメールソフトにまで届いてしまうので頭が痛い。この迷惑メールを削減しようとある対策を試してみた。それは、メールサーバで稼働しているスパムアサシン(spamassassin)という迷惑メール対策プログラムの設定をチューニングすることである。本来スパムアサシンは学習型の迷惑メール対策ソフトであるが、学習がなかなか進まないので、判定ルールのところをカスタマイズしてしまうという方法を試してみた。

迷惑メール対策を強化

さくらインターネットでスパムアサシンの設定を進める

さくらインターネットではスパムアサシンが標準装備されているので、あらためてインストールする必要はない。スパムアサシンの設定ファイルは、サーバの/home/自分のアカウント/内の「.spamassassin」というフォルダ内にある。FTPソフトを使わないと編集できないので注意が必要である。

.spamassassin」内にはすでに4つのファイルがあったが、それらはなにも変更しない。新たに「user_prefs」というファイルを作成しこのフォルダ内にアップロードする。

▼「user_prefs」というファイルをアップロードしたあとの「.spamassassin」フォルダ
spamcatwebftp.jpg

「user_prefs」はテキストファイルで作成した。初期内容は以下のとおりとした。

「user_prefs」の中身

score BAYES_99 8.0
score BAYES_95 5.0
score BAYES_80 3.0
score BAYES_60 2.0
score BAYES_50 1.0
score BAYES_40 0.5
score BAYES_20 -0.5
score BAYES_05 -2.0
score BAYES_00 -5.0

上記の方法は、スパムアサシンで迷惑メールの学習が進んでいる場合はかなり有効だと思われる。スパムアサシンの学習にはベイズ理論に基づきベイジアンフィルタが使われている。このフィルタの効果を少し強調することで迷惑メールの判定を厳し目にするという設定である。

以下、ウィキペディアの「ベイジアンフィルタ」より引用

ベイジアンフィルタ (Bayesian Filter) は単純ベイズ分類器を応用し、対象となるデータを解析・学習し分類する為のフィルタ。学習量が増えるとフィルタの分類精度が上昇するという特徴をもつ。個々の判定を間違えた場合には、ユーザが正しい内容に判定し直すことで再学習を行う。 現状ではスパムメール(いわゆる迷惑メール)を振り分ける機能を持つソフトウェア(フィルタリングソフト)で、スパムフィルターでのスパム判定に利用されることが多い。最近ではWeblogのトラックバック用フィルタ(トラックバックスパム対策)にも利用されるようになるなど、その利用範囲は徐々に広がりつつある。

他のスコアチューニング例

http://staff.miyakyo-u.ac.jp/~m-taira/Lecture/spamassassin.htmlの例

以下http://staff.miyakyo-u.ac.jp/~m-taira/Lecture/spamassassin.htmlより引用

score PRIORITY_NO_NAME 1.5
score FROM_ENDS_IN_NUMS 1.0
score SUBJ_ILLEGAL_CHARS 1.0
score MISSING_MIMEOLE 1.0
score FORGED_RCVD_HELO 2.5
score RCVD_NUMERIC_HELO 1.0
score X_PRIORITY_HIGH 1.0
score RCVD_NUMERIC_HELO 1.0
score RCVD_ILLEGAL_IP 2.5
score HTML_MESSAGE 1.0
score HTML_FONT_BIG 5.0
score HTML_IMAGE_ONLY_20 5.0
score HTML_TEXT_AFTER_BODY 1.5
score HTML_TEXT_AFTER_HTML 1.5
score MIME_HTML_ONLY 2.5
score HTML_10_20 1.0
score HTML_50_60 1.0
score NO_REAL_NAME 1.0
score LOTS_OF_STUFF 1.0
score NOT_ADVISOR 1.0
score DATE_IN_FUTURE_12_24 1.0
score DATE_IN_PAST_06_12 1.0
score MSGID_OUTLOOK_INVALID 1.0
score FORGED_MUA_OUTLOOK 3.0
score FORGED_OUTLOOK_HTML 2.0
score FORGED_OUTLOOK_TAGS 1.0
score MSGID_FROM_MTA_ID 1.0
score URIBL_SBL 5.0
score RCVD_IN_SBL 1.0
score RCVD_IN_SORBS_DUL 0.5
score RCVD_IN_NJABL_DUL 0.5
score INVALID_MSGID 1.0

http://pc.watanet.com/?p=850の例

以下http://pc.watanet.com/?p=850より引用

SpamAssassinのユーザ毎の設定は ./SpamAssassin/user_prefs に書いておくのだけど、日本語メールの場合追加しておくといい設定がある。

まずは user_prefs に書いてあるとおり、
score HTML_COMMENT_8BITS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score UPPERCASE_75_100 0
score OBSCURED_EMAIL 0

score SUBJ_ILLEGAL_CHARS 0
を有効にしておく。

そして、以下の設定はたぶん足しておくといい設定。
score GAPPY_SUBJECT 0
score SUBJECT_ENCODED_TWICE 0
score TVD_SPACE_RATIO 0
score FM_FRM_RN_L_BRACK 0
score PLING_QUERY 0
score WEIRD_QUOTING 0
score FH_FROMEML_NOTLD 0
score MISSING_SUBJECT 0
score FROM_EXCESS_BASE64 0

以下はこれまでの経験上追加してきた設定。まあ、スパムも進化してきているから、これらの設定も有効ではなくなってきているのだろうけど、一応。
score DATE_IN_FUTURE_96_XX 4.5
score DATE_IN_PAST_96_XX 4.5
score DIET_1 3.0
score DRUG_ED_SILD 2.0
score DRUGS_ERECTILE 4.0
score RDNS_NONE 2.0
score RDNS_DYNAMIC 1.5
score BODY_ENHANCEMENT 2.6
score BODY_ENHANCEMENT2 1.7
score HELO_EQ_D_D_D_D 2.5
score HTML_EXTRA_CLOSE 2.0
score HTML_FONT_SIZE_LARGE 1.5
score HTML_FONT_SIZE_HUGE 2.5
score HTML_IMAGE_ONLY_04 3.5
score HTML_MESSAGE 0.2
score HTML_SHORT_CENTER 2.0
score HTML_SHORT_LINK_IMG_1 3.0
score HTML_SHORT_LINK_IMG_2 2.0
score HTML_SHORT_LINK_IMG_3 1.5
score INVALID_DATE 4.5
score MIME_HTML_MOSTLY 2.0
score MIME_QP_LONG_LINE 2.0
score RCVD_IN_PBL 2.0
score BAD_CREDIT 2.0
score FH_HELO_EQ_D_D_D_D 2.0
score STOX_REPLY_TYPE 1.0
score SUBJECT_FUZZY_TION 1.0
score MORE_SEX 3.5
score MONEY_BACK 2.0
score NORMAL_HTTP_TO_IP 1.5
score PRICES_ARE_AFFORDABLE 1.5
score SUBJ_BUY 2.0
score URI_HEX 1.0

http://www.web-cahier.com/log/2010/12/post-43.htmlの例

http://www.web-cahier.com/log/2011/04/post-43.htmlから引用

そこで,本文の解析によるスコアを積極的に利用するよう設定を変更した.

迷惑メールであるという閾値を 5.0 とした上で,user_prefsファイルに(参考1)下記のように追記した.

[ /home/USERNAME/.spamassassin/user_prefs ] score BAYES_99 8.0
score BAYES_95 5.0
score BAYES_80 3.0
score BAYES_60 2.0
score BAYES_50 1.0
score BAYES_40 0.5
score BAYES_20 -0.5
score BAYES_05 -2.0
score BAYES_00 -5.0

ここでUSERNAMEはサーバーのログイン名である.

上述の設定は,迷惑メールである確率に応じたスコアの対照表を表している.例えば,ベイズの定理に基づいて 99 %以上の確率で迷惑メールと判定された場合は,本文の解析によるスコアとして 8.0 が与えることを意味する.95 %以上の判定では 5.0 以上のスコアが与えられて基本的に迷惑メールの判定となる.

一方で,0%の判定だと負のスコアが与えられ,ヘッダの情報が多少怪しくても通常メールとして認識される.

私の場合は,この設定に変えてから迷惑メールが激減した.この設定の妥当性は,学習させたメールの精度や,各ユーザーのポリシーに依ると思うので,参考までに.

上記の方法がなかなかよさそうだので、初期設定にはこれを採用した。

さらに、「user_prefs」にrequired_scoreを追加する方法もあるようだ。
たとえば
required_score 3.5
と記入すると迷惑メール判定のスコアが厳しくなり迷惑メールが減少するはずだ。

スパムアサシンの判定スコアは初期設定が7.0で、スコアが大きくなるほど迷惑メールとして扱うので、スコアを小さく設定するだけで迷惑メール対策は強化になる。

このスコア設定の参照サイトはhttp://zakkiweb.net/a/40/

現在は「user_prefs」の設定をそこまで変えずに、今回作成した初期内容でしばらく様子を見ることとする。

スパムアサシンの原典や詳細な設定を確認したい場合はhttp://spamassassin.apache.org/にて調べるとよい。

▼メールサーバ内の迷惑メールフォルダに格納された迷惑メール
spamcatweb.jpg

今のところ、うまく外国語の迷惑メールを自動判定してくれている。注意すべきは過剰判定で、必要なメールまで迷惑メールとして判定されてしまうことである。しばらくは注意深くチェックしていくこととする。