« spamdの -H オプション | メイン | Explorerでのファイル選択 »

2004年1月21日 (水)

[Mail]: SpamAssassinに日本の spamを学ばせる

spamc/spamdの 導入成功に気をよくして、さらに spamを排除すべく、「未承諾広告」と かいう subjectのメールが spamとして判定される可能性を高めてやろう、と いう気になった。

そもそも、 SpamAssassin の判定基準の書き方など全く知らなかったので、 すでに同じ試みをしている人はいないだろうか、と Google で検索してみた。 その結果、 TLEC のサイトに掲載 されている設定例 を発見した。このファイルをそのまま使わせていただいてもいいのだが、せっ かくなのでこのファイルを参考にして自分の環境に合ったものを作ることにし た。このファイルを眺めて、 Subjectなどは、 MIME-decodeされた後に与えられた正規表現と 比較されているらしい、 ということが分かった。実はこの部分がよく分からなかったので、これが分かっ てずいぶんとやる気が出てきた。

判定ルールの詳しい書き方は Mail::SpamAssassin::Conf に書かれている のでここには書かないが、基本的には各ルールを定義し、その説明を記述し、 そのデフォルトのスコアを設定してやる、という感じである。また、複数のルー ルの ANDや ORをとって、その結果に基づいてスコアを足したりひいたりする 新たなルールを作ることもできる。正規表現については、日本語の文字列を記 述して ISO-2022-JPで保存した後、^[$Bや ^[(Jなどを取り除き、後は Perlが 正しく理解してくれるように必要に応じてエスケープするなどしてやればいい ようだ。ということで、とりあえずは以下のようなルールを作って、 local.cf として入れてみた。

# 未承諾/未承認
header MISHOUDAKU_MISHOUNIN Subject =~ /L\$>5(Bz|G')/
describe MISHOUDAKU_MISHOUNIN Subject contains mishoudaku or mishounin
score MISHOUDAKU_MISHOUNIN 1.0

# 広告
header KOUKOKU Subject =~ /9-9p/
describe KOUKOKU Subject contains koukoku
score KOUKOKU 1.0

# ※, etc.
header JA_STAR Subject =~ /(\"\(|![y!v]|\*)/
describe JA_STAR Sujbect contains Japanese star-like character
score JA_STAR score 0.5

meta JA_ADV MISHOUDAKU_MISHOUNIN && KOUKOKU && JA_STAR
describe JA_ADV Subject indicates Japanese ad
score JA_ADV 2.0

# 配信
body HAISHIN /G\[\?\./
describe HAISHIN Contains haishin
score HAISHIN 0.1

# 購読
body KOUDOKU /9XFI/
describe KOUDOKU Contains koudoku
score KOUDOKU 0.1

# 登録
body TOUROKU /EPO\?/
describe TOUROKU Contains touroku
score TOUROKU 0.1

# 停止/中止
body TEISHI_CHUUSHI /(Dd|Cf);_/
describe TEISHI_CHUUSHI Contains teishi or chuushi
score TEISHI_CHUUSHI 0.1

# 解除/削除
body KAIJO_SAKUJO /(2r|:o)=\|/
describe KAIJO Contains kaijo or sakujo
score KAIJO 0.1

meta JA_UNSUB_INST ( KOUDOKU || HAISHIN || TOUROKU ) && ( KAIJO_SAKUJO || TEISHI_CHUUSHI )
describe JA_UNSUB_INST May contain Japanese unsubscription instruction
score JA_UNSUB_INST 1.0

これをインストールして試してみると、ちゃんと「未承諾広告☆」がある メールでは、スコアが上がるようになった。 難しいのは、 scoreをどれくらいの値にしてやればいいか、という点だと 思うが、これは経験的なものが大きいような気がする。しかし、 SPamAssassin についてくる 50_scorelist.cfを見てみると、かなり細かい値 が設定されていて、なんだか何かしらの根拠がありそうな気もしないでもない。

今回いろいろと試していく中で気づいたのだが、 Subjectが日本語だとそ れだけでそこそこスコアが上がるようなデフォルトになっていたり、 ISO-2022-JPなメールにはよく登場しそうでありながら、欧米言語のメールに は登場しなさそうな文字列でスコアが上がってしまったり、ということがある ようだ。おそらく欧米人の使い方では問題はないのだろうが、日本語圏にいる と、もう少しチューニングしてやらないといけないのかな、という気になった。 とは言っても、日本語メールに関してほとんど誤認識はなく、今は満足してい るのだが。

トラックバック

この記事のトラックバックURL: http://www.trashpot.org/mt/mt-tb.cgi/4

このページについて

2004年1月21日 10:35に投稿された記事のページです。

前の記事: 「spamdの -H オプション
次の記事: 「Explorerでのファイル選択

この記事は、以下のカテゴリーに投稿されました:
  Mail
各カテゴリー名をクリックすると、そのカテゴリーに投稿された他の記事を読むことができます。

Powered by
Movable Type