スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

日本語spamとMessage-Id 

日本語spamのMessage-Id:の値は<>で括られていない場合があるとふが日記に書かれている。spam対策のために利用できるかどうか、興味が湧いたので調べてみた。
ポイントは次の通り。
(a)日本語spamでは<>で括られていない場合がある(のかどうか)
(b)非spamでは<>で括られていない場合が(殆ど)ない(のかどうか)
上記(a)および(b)の両方が満たされていれば、spam判定の条件の一つとして利用できるはずである。
調査方法は次の通り。
(1)調査対象データは私が利用しているメーラBecky!の受信メールデータとする。取り敢えず2006年のものを対象とし、非spamとspamとで分けた。
(2)非spamとspamそれぞれについてメールヘッダMessage-Id:の値が<>で括られているもの、括られていないものを数える。
具体的には次のようにコマンドを実行。
■非spamの計数

find . -type f ! -path './no_spam/*' -exec grep -h -i ^message-id: {} \; > /tmp/mail_ok

perl -e 'while(<>) {if($_=~m/^message-id:\s*<.*>\s*$/i) {$ok++;}else{$bad++;}} print("\nOK->$ok\nBAD->$bad");' /tmp/mail_ok


■spamの計数

find . -type f ! -path './spam/*' -exec grep -h -i ^message-id: {} \; > /tmp/mail_spam

perl -e 'while(<>) {if($_=~m/^message-id:\s*<.*>\s*$/i) {$ok++;}else{$bad++;}} print("\nOK->$ok\nBAD->$bad");' /tmp/mail_spam



出力はこんな感じ。
○非spamの場合
OK->13583
BAD->13

○spamの場合
OK->12962
BAD->541

実際に有意な違いがあるようだ。ただ、この条件を満たしたメールをそれだけでspamとして扱うのはちょっと無理があるようだ。半年で13通のメールを失うのは(私としては)辛い。
商用spam対策システムで採用しているように、条件を満たす度にspamスコアを増やしていき、閾値を超えた際にspamと判定するアプローチがより良さそうだ。
実際、そうしたシステムで、こうした条件が採用されているのかもしれない。

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://haginov.blog35.fc2.com/tb.php/50-7591bd0f

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。