先日のデブサミ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参照)
- http://developer.amazonwebservices.com/connect/thread.jspa?messageID=155999#155999
- http://developer.amazonwebservices.com/connect/message.jspa?messageID=163245
詳細は上記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)
- 作者: 並河祐貴,安達輝雄,ITpro/日経SYSTEMS
- 出版社/メーカー: 日経BP社
- 発売日: 2009/11/05
- メディア: 単行本
- 購入: 4人 クリック: 372回
- この商品を含むブログ (18件) を見る