NGワードで迷惑メール対策
最近、レイバンを名乗ったメールがしょっちゅう押し寄せてくる。最初は、さくらインターネットの迷惑メールで学習させて、弾いていたが、楽天やヤフーやLINEなどのメールのように偽装して送られてくるようになり、迷惑メールと判定され難くなったので、もう「レイバン」を含むメールは、全て迷惑メールとして、扱うことにした。
NGワードで登録しようと思っても、そんな機能はさくらのコントロールパネルにはなく、登録できない。さくらのサイトによると、さくらの迷惑メールの判定には、spam assassinというツールを使っているということだった。
さらにspam assassinについて調べると、spam assassinの個別ユーザー用のファイルuser_prefsを用意して、そこでメール本文と禁止ワードをマッチングさせて、禁止ワードが含まれてた場合にはspam点数を加算してしまえば良さそうだ。ただ、メールの本文とNGワードをマッチさせようとすると、アルファベットは問題ないが、カタカナだとマッチしない。日本語でマッチさせる方法がわからず、JIS, Shift JIS, UTF-8, UTF-16の文字コードに変えたらマッチしないか試した結果、メールの題・本文内(HTMLタグを含まない)には、UTF-16の文字コードでマッチしたので、それぞれのカタカナの文字をUTF-16の文字コードで指定した。なぜ、UTF-16だと上手く行くのかは、perlにもSpamAssassinにも詳しくないので謎。元のメールのエンコードを気にする必要がないのは、便利。
文字をUTF-16のコードに変換
\x{30ec}\x{30a4}\x{30d0}\x{30f3}
user_prefsの中身
# Ray-ban or rayban
body RAYBAN_EN /Ray\-Ban|rayban/i
describe RAYBAN_EN Contains 'Ray-ban or rayban'
score RAYBAN_EN 7.0
#レイバン UTF-16
body RAYBAN_KATAKANA /\x{30EC}\x{30A4}\x{30D0}\x{30F3}/
describe RAYBAN_KATAKANA Contains 'Rayban' in Katakana
score RAYBAN_KATAKANA 7.0
FTPアップローダーで隠しフォルダになっている/home/(アカウント名)/.spamassassin/を開き、そこにuser_prefs(拡張子なしでUTF-8で保存)をアップすれば、すぐにNGワードが適用された。
body RAYBAN_KATAKANA /\x{30EC}\x{30A4}\x{30D0}\x{30F3}/
この部分は、Unicodeのコードポイントでの指定も有効でした。
body RAYBAN_KATAKANA /\N{U+30EC}\N{U+30A4}\N{U+30D0}\N{U+30F3}/
NGワードが見つかった場合には、下記のように7.0を加点した。
score RAYBAN_EN 7.0
SpamAssassinを通したメールのヘッダーのX-Spam-Statusを見るとrequired=7.0とあり、さくらインターネットの迷惑メール判定の閾値は、7.0ということがわかる。それ以上だと迷惑メールだと判定するため、7.0を加点した。ただし、スコアは、加点だけでなく、減点もあるため、どんなメールでも一発アウトのNGワードにするためには、10点ぐらい加点するか、迷惑メール判定の閾値を下げるかしても良いかもしれない。
さよなら、レイバン。