Amazon EC2のサーバからメール送信をするまでにやるべきこと (スパムメール扱いを回避する!)

先日のデブサミ2010でも話した(デブサミ2010の資料"クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例"を公開します+α)のですが、Amazon EC2のサーバからメールを送信すると、一部分の宛先(メールサーバ)では、迷惑メール(SPAM)扱いされ、突き返されちゃう事があります。

それをどう解決したかという話。
Twitterを見ていて、まだきちんとした情報がまとまっていない気がしたので、経験談をまとめてみます。

課題

Amazon EC2のサーバがスパムメール送信に利用されるケースが増えているようで、Amazon EC2で利用されているIPアドレスのレンジ(ネットワーク)が、スパムメールのブラックリストにまるっと載ってしまっているため、メールサーバによっては、門前払いによる受信拒否となるケースがあります。

参考:

Amazon EC2を悪用したセキュリティ攻撃について新井氏は、「Webアプリケーションを狙う攻撃が増えている。迷惑メールの踏み台として利用可能かどうかを調査する活動もあった」と説明。これに対して、世界最大の迷惑メール対策組織と言われる「Spamhaus」が、Amazon EC2をブラックリストとして指定する動きも見られたという。

セキュリティにクラウドの闇、Amazon EC2悪用の総当たり攻撃も -INTERNET Watch Watch

配送メールがSPAM扱いされないために最低限やること

基本的なことのみで、足りていない可能性もありますが、主に以下の3点を実施したところ、突き返されることなくキレイに送信できるようになりました。

  • DNS逆引き設定
  • SPFの設定
  • SPAMメールのブラックリストに対する解除申請


以下で、それぞれを詳しく紹介してみます。

EC2でのDNS逆引き設定

メールサーバによっては、送信元のホストで、DNS逆引き設定がない、もしくは正引きとの設定に差異がある場合、SMTP接続を拒否される場合があります。(チェックされている)
「http://neta.ywcafe.net/000395.html」のエントリを読む限りでは、この判定は微妙なところではありますが。


問題は、Amazon EC2では、DNSの逆引き設定に、以下のような既定値が設定されていて、基本的にユーザが自由に設定することができない点でした。

IPアドレス <=> FQDN
xxx.xxx.xxx.xxx <=> ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com


ですが、実はまだ"Private Beta"扱いではありますが、DNSの逆引き設定をお願いすると、AWS側で設定してもらえたりします。(下記URL参照)


詳細は上記URLに記載されていますが、AWSの中の人にDeveloper CommunityのForumで、Private Messageを送ってお願いする形です。(英語でのやり取りになりますので、敷居は高いですが...)
このサービスは「public beta soon.」とのことですので、近いうちにサービス化されると思います。

3/24: 追記!

正式にサービス化された模様です!DNS逆引き設定の申請は以下から!

SPFの設定

"SPF"が何かや設定方法については、以下のエントリがかなり詳しいため、そちらをお読みください。


つまりは、

SPF(Sender Policy Framework)とは、メールを送出したMTAが正当なMTAであることを証明するための技術だ。

今すぐSPFを書こう

ということで、Fromが、"@example.com"のメールは、"xxx.xxx.xxx.xxx"から送信されているものが本物でっせ〜という証明をドメイン所有者がDNS設定(TXTレコード)で行うというもの。

DNSの設定は、以下のような感じで行います。

IN     TXT     "v=spf1 +ip4:***.***.***.*** -all"

SPAMメールのブラックリストに対する解除申請

Spamhausとmaps(mail-abuse.com)で管理されているスパムメール送信元を管理するブラックリストにAmazon EC2で使われているIPアドレスが部分的に登録されていることにより、以下ブラックリストでのチェックを行っているメールサーバから拒否される現象への対策として、ブラックリストから解除申請を行います。


まず、以下のURLから利用しているEC2のサーバのIPアドレスがブラックリストに含まれているかを確認します。


その後、解除申請の手続きを行うことになると思いますが、問題ないIPアドレスを証明する手段として、先ほど書いた通り、DNSの逆引きと正引きの結果を一致させておく必要がありそうです。


私の対処経験からの流れを書いておくと、、、

  • 最初に、Spamhausのスパムリストに引っかかっている事に気付く
      • DNSの逆引きチェックではじかれているメールもいくつか
  • Elastic IPを何度か取得/解放を繰り返し、Spamhausのブラックリストに載っていないIPアドレスを確保
    • ブラックリストに載っていないレンジもいくつか存在します
  • Spamhausのチェックはpassするようになったようだが、次は、maps(mail-abuse.com)のスパムリストに引っかかることを確認
  • AWSへ取得済みのElastic IPに対して、DNS逆引き設定を依頼
    • 私のときは、2〜3日で反映してもらえました
  • mapsに、スパムリストからの解除申請を行う。
    • DNSの逆引き結果を添えて申請フォームから軽く説明。10分くらいで解除の返事がメールで来た
  • 数時間後には、無事、正常に配送されるように!

それでも突き返された場合は・・・?

私は、SMTPのサービスとして、よくPostfixを利用していますが、Postfixでは、"fallback_relay"という機能があり、何らかの理由でメール配送が失敗したときに、配送を代替してもらうサーバを指定できるものです。

利用しているメール(ドメイン)をGoogle Appsで管理している場合などは、GmailのSMTPサービスを利用できるため、そちらへフォールバックリレーを行ってもらうことで、EC2サーバ自前SMTPサービスからの送信で失敗したものは、Gmail経由で送信する、といった手法を取ることも可能です。

ちなみに、その場合のSFPの設定は以下のような感じです。

IN     TXT     "v=spf1 +ip4:xxx.xxx.xxx.xxx include:aspmx.googlemail.com ~all"

参考: Amazon EC2で利用されているパブリックIPアドレス一覧




まとめ


クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)