Amazon EC2のサーバからメール送信をするまでにやるべきこと (スパムメール扱いを回避する!) (original) (raw)
先日のデブサミ2010でも話した(デブサミ2010の資料"クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例"を公開します+α)のですが、Amazon EC2のサーバからメールを送信すると、一部分の宛先(メールサーバ)では、迷惑メール(SPAM)扱いされ、突き返されちゃう事があります。
それをどう解決したかという話。
Twitterを見ていて、まだきちんとした情報がまとまっていない気がしたので、経験談をまとめてみます。
課題
Amazon EC2のサーバがスパムメール送信に利用されるケースが増えているようで、Amazon EC2で利用されているIPアドレスのレンジ(ネットワーク)が、スパムメールのブラックリストにまるっと載ってしまっているため、メールサーバによっては、門前払いによる受信拒否となるケースがあります。
配送メールがSPAM扱いされないために最低限やること
基本的なことのみで、足りていない可能性もありますが、主に以下の3点を実施したところ、突き返されることなくキレイに送信できるようになりました。
- DNS逆引き設定
- SPFの設定
- SPAMメールのブラックリストに対する解除申請
SPFの設定
"SPF"が何かや設定方法については、以下のエントリがかなり詳しいため、そちらをお読みください。
つまりは、
SPF(Sender Policy Framework)とは、メールを送出したMTAが正当なMTAであることを証明するための技術だ。
ということで、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"