IEEE のメールサービスが日本語メールを高確率でスパム扱いする件
少し前から,IEEE メンバー専用のメールエイリアスサービスを使っている.
一応 IEEE には結構な年会費を払っているので,それなりに信頼性の高いサービスだという認識で使っていた.ところが最近,一部のメールが正しく届かないことに気がついてしまった.
自分宛にメールを送ったらいつまで経っても届かない.少なくとも 2 件発生した.他人からのメールが消えている可能性も十分に考えられる.けっこう重要な用途で使うことがあったので正直戦慄を覚えた.
もしかしてスパムフィルタに引っかかった? IEEE のメールサービスは 1 ヵ月半ほど前にスパム対策ポリシーを opt-in から opt-out に変更している.つまりこれまでは希望者のみフィルタが機能していたのが,デフォルトでフィルタリングするようになった.スパムと判定されたメールはサーバで消去される.というわけで,フィルタをくぐり抜けて無事に届いたメールのヘッダを見てみる.ちなみに内容はごく普通の日本語ビジネスメールで,Gmail から送ったもの.
X-Bayes-Prob: 0.9999 (Score 5) X-Spam-Score: 9.50 (*********) [Hold at 12.00] FB_4WORD_DOLLARe,FB_WORD_01DOLLAR1,GAPPY_SUBJECT,SARE_MSGID_LONG40,SARE_SUB_CASH_CHAR,SPF(pass,0),Bayes(0.9999,5.0)
ちょwwwwwwものすごい勢いでスパム扱いされてるんですけどwwwwwwww
ここによると,ヘッダのフォーマットは
X-Bayes-Prob: ベイズ投票によるスパム確率 (Score 投票によるスパムスコア ) X-Spam-Score: 投票とフィルタルールから計算した複合スコア (****) [Hold at 閾値 ] スコア増大に関与しているルール
というようになっている.つまり上のメールは,99.99% の確率でスパムだと判定されたわけだ.スコアが閾値より低かったのでなんとか生き残ったというところか.
別の例.こちらは jp ドメインから Mew で送付してみた場合で,日本語ビジネスメール.
X-Bayes-Prob: 0.0001 (Score 0) X-Spam-Score: 9.80 (*********) [Hold at 12.00] FB_4WORD_DOLLARe,FM_MULTI_ODD2,FS_OBFU_Q0,HELO_EQ_JP,HOST_EQ_JP,SARE_RAND_2,X_IP,SPF(none,0)
こちらはルールベースでスコアが上がったらしい.なんか HELO_EQ_JP とか HOST_EQ_JP がスパムの原因になっているっぽい.多分 HELO が jp ドメインを返したとかそういう意味だよねこれ.jp ドメインからだとスパム度が高いって素敵過ぎる.
あまりのことに,さらに調べてみたところ,どうやらフィルタの実体は SpamAssassin らしい.
FB_4WORD_DOLLARe: 文字列中にダラー.Micro$oft はおkなのかwwww
body FB_4WORD_DOLLARe /[^a-z]\b(?!Micro\$oft)[a-z]{2,7}\$[a-z]{1,5}\b/i
FB_WORD_01DOLLAR1: これも文字列中ダラーの一種.ISO-2022-JP だと多分テキメン.
body FB_WORD_01DOLLAR1 /\b[a-z]{1,4}\$[a-z]{0,4}[a-z01][a-z]{2,5}\b/i
GAPPY_SUBJECT: G.a.p.p.y-T.e.x.t みたいなやつ.
header GAPPY_SUBJECT Subject =~ /\b(?:[a-z]([-_.=~\/:,*!\@\#\$\%\^&+;\"\'<>\\])\1{0,2}){4,}/i describe GAPPY_SUBJECT Subject: contains G.a.p.p.y-T.e.x.t
SARE_SUB_CASH_CHAR: Subject: にダラー.
header SARE_SUB_CASH_CHAR Subject =~ /[a-zA-Z]\$[a-zA-Z]/ describe SARE_SUB_CASH_CHAR Subject has letter then $ then letter
FM_MULTI_ODD2: 英語ではありえないような文字のつながり?
# Core obfu rules, these are generated from multiple US dictionary files. body __FB_OBFU_J /j[bcfgw]/i body __FB_OBFU_OTHER /(?:vj|vk|xj|xk|yy|zf|zj)/i body __FB_OBFU_Q0 /[jkpqtvwz]q/i body __FB_OBFU_Q1 /q[afhjkmnsy]/i body __FB_OBFU_V /[fgqw]v/i body __FB_OBFU_X /[cgjkqsvz]x/i body __FB_OBFU_Z /[fjkpqx]z/i meta __FM_MULTI_ODD2 ((__FB_OBFU_J + __FB_OBFU_OTHER + __FB_OBFU_Q0 + __FB_OBFU_Q1 + __FB_OBFU_V + __FB_OBFU_X + __FB_OBFU_Z) &lgt; 1) meta FM_MULTI_ODD2 (__FM_MULTI_ODD2 && !__BADMIMEPARSES)
FS_OBFU_Q0: Subject: に英語としてありえない文字列がある.
header FS_OBFU_Q0 Subject =~ /[jkpqtvwz]q/i
HELO_EQ_JP: HELO で jp ドメイン.
header HELO_EQ_JP X-Spam-Relays-Untrusted =~ /^[^\]]+ helo=[^ ]+\.jp /i
HOST_EQ_JP: 逆引きしたら jp ドメイン.
header HOST_EQ_JP X-Spam-Relays-Untrusted =~ /^[^\]]+ rdns=[^ ]+\.jp /i
SARE_RAND_2: 謎.Mew から送ったせいか.
70_sare_random.cf tries to detect common mis-fires on bulk mail software.
X_IP: X_IP ヘッダがある.うちの SMTP 鯖はいつもつけてますが.
header X_IP exists:X-IP
とりあえず,英語圏のスパムフィルタには気をつけたほうがよいと実感.フィルタは速攻でオフにした.大事なメールが消失してないことを祈るしかない.