2012年7月12日

Gmailスパムフィルタと壮絶に闘ってみた


みんな大好きGmail。僕も大好きです。

カレンダーとの連携もでき、検索機能も強力です。迷惑メールフィルタ機能の精度も高い。

そう、迷惑メールフィルタ機能も強力なんです・・・

メールを送信する側からすると、これが恐るべき「迷惑機能」になってしまうことが分かりました。

自社サーバでメルマガを発行しようとしたときに、Gmailに頑強に迷惑メール扱いされたときのお話です。


ことの発端

あるメルマガを発行しようと思い立ち、まぐまぐなどの無料のメルマガ発行サービスを使うより、自前で持っていた方が何かと自由がきくだろうということで、自分でなんとかすることにしました。


専用のドメインを取り、メルマガサーバをインストールし、文面を書いて、いざ自分のGmailアドレス宛てに送信テストをしてみました。



届きません。


届きません。


届きません。



あれ?なんで?と調べたところ、なんと迷惑フォルダに入っていることが分かりました。

迷惑じゃないんだって。単なるテストなんだって。

とぶつぶつ言いながらあれこれ文面を変えてみたりしましたが、一向に受信してくれません。

しまいには、「あああああ」とかの文面で送ってみましたが、Gmailは頑固に迷惑メールだと言い張ります。


おかしいなあ、と思って、YahooやExciteなどのフリーメールアドレスをいくつか取って送ってみたところ、なんと、どのプロバイダでも迷惑扱いされるじゃありませんか。


そこで初めて、文面が迷惑扱いされている(だけ)ではなく、うちのサーバの設定に大きな問題があることが分かったのです。


問題だったのは、僕の場合次の点でした。


●逆引きができなかった
●Fromアドレス詐称とみなされた
●文面がスパム扱いされた


これを解消するまでの道のりをお話しましょう。

Googleのガイドラインにしたがう

一括送信メールは、ただでさえ迷惑扱いされやすいのです。Googleは、一括送信メールを送る際に気をつけるべき点をガイドラインで公開しています。

ガイドラインは


[一括送信ガイドライン - Gmail ヘルプ]


です。


まずは、ガイドラインにしたがうのが基本中の基本です。

ガイドラインのうち特に重要な点をピックアップしますので、メルマガを自前で発行しようと考えている人は参考にしてください。

難易度:★

Fromアドレスを詐称しないこと

「しないしない」と苦笑いしたあなた。その認識は甘いかもしれませんよ。

そもそも、メールのFromアドレスが「詐称されている」とはどういうことでしょうか?

メールにおいて、送信元を識別するヘッダ情報には、以下のように多種多様なものがあります。



  • エンベロープFrom
  • メッセージFrom
  • Received
  • Return-Path
  • Reply-To



このうち、どれとどれが一致していないと「From詐称」とみなされるか、分かっている人は案外少ないのではないでしょうか。また、どれが偽装可能で、どれが偽装不可能なものか。

もちろん、僕もまったく分かっていませんでした(笑)。


結論から言えば、Reply-Toを除き、すべてのヘッダでドメインが一致していることが必要です。できればReply-Toも一致していることが望ましいです。

いわゆるFromヘッダは簡単に偽装できるので有名ですが、Return-PathやReply-Toも、プログラムが書ける人にとっては偽装はごく簡単です。


偽装できないのはReceivedヘッダで、これはメールサーバが付加するものです。


僕の場合、自社で使ってるドメインとは別のドメインをメルマガ発行用に取得し、しかもこのあたりの注意点をまったく意識していなかったので、まるで息をするかのごとく自然に、いつの間にかFrom詐称メールを送っていたのでした。



特に気づきにくいのがReturn-Pathです。

普段使っているドメイン(正確に表現すると、メールサーバのIPアドレスを逆引きした時に返ってくるホスト名のドメイン)でメルマガを発行するのであればなんの問題もありませんが、別のドメインを使った場合、Return-PathとFromが一致しなくなります。



一発でスパム判定されます。


IPアドレスが逆引きできること

逆引きを設定するには、自分たちよりも上位のDNSを管理している回線事業者に申請する必要があり、めんどくさくてやっていないという人もときどきいます。


偉そうにいってますが、うちも以前そうでした(笑)。


逆引き設定をちゃんとやったとしても、もう一つ別の問題が生じます。


今回のケースがまさにそうなのですが、2つのドメインが同時に1つのIPアドレスを共有しています。





ここで、110.119.117.104というアドレスを引いた時、返せるのはどちらか一方だけです。





メインで使っているドメインはabc.comなんだけど、skine@xyz.comという送信元アドレスからメルマガを送りたいとしましょう。


上でも述べたように、Receivedヘッダはメールサーバ(MTA)がつけるもので、次のようになります。



Received: from abc.com (mail.abc.com. [110.119.117.104])
        by mx.google.com with ESMTP id vh6si32018130pbc.20.2012.07.24.21.26.10;
        Tue, 19 Jul 2012 21:26:10 -0700 (PDT)


「from abc.com」という部分が送信元(つまり自分ちの)サーバです。


しかしこの部分は簡単に詐称できるので、受信側のメールサーバはそんなものは信用しません。


どうするかというと、受け取ったIPアドレスを逆引きしてみるのです。(上の例で言えば「110.119.117.104」


そして、返ってきたドメインとFromアドレスのドメインを見比べて、一致しなければ身元を隠そうとしている(=迷惑メールを送ろうとしている)と判断するわけです。



この場合、IPアドレスを逆引きすると、abc.comが返ってきます。ところが、Fromアドレスはskine@xyz.comです。



これぞ王道中の王道のスパム手法で、完全になりすましメールと思われてしまいます。


これも、一発でスパム判定されます。


難易度:★★★

正当な理由で、逆引きしたときのドメイン名と異なるドメインの送信者メールアドレスを使いたいということもあるはずです。

今回の僕のケースがまさにそうです。

そういう場合どうするかというと、送信者認証という機能を使います。

送信者認証にはSPFとDKIMという2種類があって、前者は主にYahooとMicrosoftが、後者は主にGoogleが中心となって提唱しています。

今のところSPFの方が対応率が高いようですが、念の為に両方対応しておくとよいでしょう。

SPFが設定されていること

SPFの仕組みを簡単に言うと、メールアドレスのドメイン名をネームサーバを引いてみて、所定の記述がされているかを確認するというものです。


メールアドレスのドメインを正当に所有していれば、当然ネームサーバの設定を変更することができます。スパム業者は他人のドメインを勝手に騙っているだけなので、そういうことができません。


そのようにして、なりすましメールを防ごうという仕組みです。


設定方法はこちらの「SPFレコードの公開」という記事が詳しいです。


メールにDKIM署名を付けること

DKIM署名というのは、公開鍵暗号方式を利用したデジタル署名をメールヘッダにつけ、公開鍵部分をSPFと同じようにネームサーバのTXTレコードで公開することで、署名の正当性をチェックするという機構です。


ドメイン単位の認証ではなく、メール1通1通に対して認証をかけられるので、きめ細かなチェックが可能、というのがメリットですが、


Postfixを使ったDKIMの導入については、以下のシリーズ記事が詳しいです。


[Postfix で DKIM の検証に対応する - Open the Next]

[Postfix で DKIM の署名に対応する - Open the Next]

[Postfix で DKIM の署名に対応する (複数ドメインの場合) - Open the Next]


他のMTAについては、僕は使ってないのでよく分からないです。ゴメンナサイ。


難易度:★★★★★

さて、ここまで対応したところ、Gmailを除いてすべてのフリーアドレスで正しく受信箱に届くようになりました。

めでたしめでたし・・と言いたかったのですが、ここまで対応したにもかかわらず、Gmailでは相変わらず迷惑メール扱いされます。

なんでだ・・とガイドラインを熟読したところ、次のようなことが分かりました。

ヘッダにPrecedence: bulkを付ける

メルマガのように複数の送信先に大量に送る場合には、このヘッダをつけておくと多少はGmailの心証がいいかもしれません。


一応つけてはみましたが、それでスパム判定が覆るほど強力なものではありませんでした。

文中で短縮サービスを使ってはいけない

文中でリンクを貼る場合、URLが長すぎて困るのでURL短縮サービスを使いたくなります。


しかし、URL短縮サービスというものはリンク先隠蔽手段としても非常によく使われるので、短縮サービスを使っていると一発でスパム判定されるようです。


Googleはそういう点公平というか「ならなんで運営してんねん」と言いたくなるというか、bit.lyやow.lyなどの外部サービスだけでなく、Google自前の短縮サービスgoo.glでもスパム判定されます


どうするかというと、まあどうしようもないのですが、僕はどうしても短縮URLを使いたかったので、フリーで配布されている、自前で短縮URLを作るためのスクリプトを設置しました。

僕が使ったのはyourlsというスクリプトです。


ここから配布されています。


また、



[自分用 URL 短縮サービスを作る: Yourls 編 - IT翻訳者Blog]



の記事で、詳しくインストール方法が説明されています。


何気なくメルマガでも書こうかなーと思っただけなのに、どんどん話が大がかりになっていきます。


難易度:★★★★★★★★★★★★

さて、ここまでやって、ようやく受信箱に入るようになりました。

ところが、いろいろな文面を試してみると、スパム扱いされたりされなかったり、判定が微妙です。

ということで、最後の難関、「文面に気をつける」です。

本文中で禁止ワードを使わない

迷惑メールによく使われる「禁止ワード」の出現頻度が高いと、迷惑メールとみなされるというGmailの恐ろしい俺様仕様です。

これをかいくぐるのは、マジで難易度が高いです。

禁止ワードが厄介なのは、アダルト関連や金儲け関連などのように、ひと目でNGと分かるものばかりではないことです。

たとえば、「ビジネス」。

これだけでは、もちろん禁止ワードにはなりません。
しかし、


「開運」


「今なら」


と続くと、総合的に「NG」と判定される可能性が高くなるでしょう。

なんの変哲もないメーカーからの製品お知らせメールが迷惑フォルダに入っていましたが、調べてみると、「無料」という言葉が文中で3回出現していました。


このように、自分はアダルトもギャンブルも関係ないから大丈夫、と思っていると大変です。


[Gmailの中の人、迷惑メールフィルタをちょっと緩くしてもらえませんか?]


TechCrunchのこの記事によれば、迷惑フォルダに入った31通のうち、25通は正当なメールで、本当の迷惑メールはたった6通だったそうです。


メールの文面でスパム判定されないために

ここは何度もトライ&エラーを繰り返して、スパムフィルタの癖をつかむしかないのですが、次のような点に気をつけるといいかもしれません。

・他のスパムを参考にする(笑)
やはりなんといっても実例が大事です。せっかくあなたの迷惑フォルダに、実際にスパム判定されたという「実績」のあるメールが大量にあるのですから、活用しない手はありません。

「普通っぽいのにスパム判定されている」ようなタイトルのスパムを探して、中を見てみるといいでしょう。

●同じ単語を何度も使わない

同じ単語を何度も繰り返して使うと、スパム判定される確率が高まるようです。もちろん、NGワードでもなんでもない、ごく普通の単語です。
(検索エンジンスパムの判定基準と似ている気もします)
たとえば、E-BOOKという単語だけでなく、電子ブック、電子書籍と言い換えるなどです。しかし、やりすぎると「表記に一貫性のない文章」になってしまいますから厄介です。

●リンクをたくさん貼らない

リンクが大量に貼ってあると、スパム判定されやすくなるようです。しかし、実際にリンクをたくさん送りたいときもありますから、いくつまでなら大丈夫、と言えないのがもどかしいですが・・

●飾り罫を使わない


*★*☆*★*☆*★*☆*★*☆



☆o○*゚¨゚゚・*:..。o○☆

といったテキスト罫線は、かなりスパム判定度が高いようです。

1つ2つなら問題ないと思いますが、過剰に装飾的な文面だとスパム判定される率が高まります。

こういう「キラキラ感」がだめなのか、と思って

━━━━━━━━━━━━

とか

-+-+-+-+-+-+-+-+-+-+-+-+-

などの地味なテキスト罫線を試してみましたが、装飾全般がだめなようです。

●メールの文面はある程度の長さが必要

本当に短く用件を伝えたいこともあるでしょうが、短い文面で、しかも紋切り型、定型的な文章だとスパム判定される確率が上がります。

そうならないためには、ある程度の文面の長さが必要です。

まとめ

スパム判定されないためには、次のような点に気をつけよう、ということです。


  • From, Return-Path, Reply-Toのドメイン名はReceivedに一致させるのが基本。
  • DNSの設定に気を遣う。ホスト名の逆引き設定をちゃんとしておこう。
  • 送信者認証を設定する。SPFとDKIM。両方対応しておけばまず間違いない。
  • 一括送信する場合はPrecedence: bulkヘッダを付ける。
  • 短縮URLをメール文中で使わない。
  • 神経質なほどNGワードに気を遣う。


0 コメント:

コメントを投稿

長崎県 引越 見積もり 単身引っ越し 料金 還暦祝い 父 Blog Entry Ranking
" ); 出会い系を例示