Amazon SESとメール配信の難しさについて調べたこと
Amazon SESについて簡単に調査、試用してみたので記事にしてみます。
記事は2回構成で、今回はAmazon SESの特徴をドキュメントベースに調査したものをまとめました。次回、実際にAmazon SESでプログラミングした記事をアップします。
■ 動機と調べたことの概要
メール配信のソリューションはいろいろなベンダーが、魅力的なサービスを展開していますが、初期費用が高かったり、ランニングも場合によってはけっこう高かったりと、やや高価な感が否めません。(そうではないものもあると思いますが)
そう思っていたところでAmazon SESを見つけたので調べてみました。(前からAmazon SES自体は知ってましたが、調べるのが今になってしましまいした・・・)
Amazon SESは初期費用はいらず従量課金の低コストで提供されるメール送信サービスです。1000通あたり0.1ドルと非常にリーズナブルです。
費用以外では、確実にメールを届ける配信性能を売りとしています。メールを送信すれば届くというのは意外と当たり前のようなことですが、大量にメールを送るときに確実にすべての受信者に届けるのはかなり難しいです。
なので、どの辺が難しいか、Amazon SESは何を配信性能とはどういうことなのかメール配信について初心者の自分の理解するのためにまとめてみました。
■ 確実にメール配信するために必要なこと
Eメールを使わないネットサービス、業務システムは少ないと思います。特にコンシューマ向けのPC、モバイル向けのWebサイトではメールマガジンなど大量にメールを送信しなければいけないケースが少なくないです。
メールを送る処理は1通の送信ならばそんなに難しくないですが、マーケティング要素が強い大量メールの配信というのはかなり難しいです。たとえば、以下のような要件をクリアしないといけません。
・バウンスメールの処理をきちんとしてISP等でブロックされないようにする
例)存在しないメールアドレスに対してISPにメールを大量に送るとブロックされたりする
・送信できなかった場合の再送処理
例)IPベースでISPでブロックされた場合、別のIPから送りなおすなど
・送信量の制御をしてISPの制御にひっかからないようにする
例)モバイルのキャリア(ドコモ)などに短い時間で大量に送信すると
送信ブロックをされることがあるなど
・複数台構成で信頼性の高いメール配信サーバを容易する
・SPF/Sender IDなどの設定
もう、なんかこれだけで大変そうです。おなかいっぱいですね。
■ スパムフィルタがメール配信を難しくする大きな原因
次に、なぜこんなにメール配信がこんな難しい要件になっているか、についてです。
その原因はどうやらISPのスパムフィルタにあるようです。つまり、届くべきメールまでスパム扱いされているということが原因のようです。
たとえば、情報ソースはやや古いですが、以下のような記事があります。
・メールの0.71~1.02%は「ただ消えて無くなる」~Microsoft研究者らが論文
上の記事では以下のような原因でメールは届かなくなるケースが多いとあります。
- ISPにて送信元のIPアドレスをフィルタリングしてホワイトリストにないか、ブラックリストに入っていたら、メールを除去
- (一か所から)一定量以上(おそらく大量)のメールが送信されている場合
- HTMLメールかつ特定の文面が含まれている場合
また、モバイルサイトを開発した人ならば見たことがある人も多いドコモの以下のページも参考になります。
http://www.nttdocomo.co.jp/service/communication/imode_mail/notice/mass_send/index.html
これによると、ドコモ側としては主として
- 過剰なSMTPセッション数
- 1セッション(短時間)の送信数
- 大量の宛先不明を含むメール
などが検知されると、迷惑なメール配信業者という扱いをするようですね。
まとめると、
- メール不達の原因の大きなものはISPなどにスパム扱いされてしまいブロックされている
- 短時間に大量のメール送信、宛先不明のアドレスに大量送信、をするとスパム扱いされやすい(下手するとブラックリストに入ってしまう)
ということのようですね。
■ Amazon SESの配信の信頼性を向上させる仕組み
ここで、やっとAmazon SESについて調べたことに入ります。(前置きが長いですね、すみません)
Amazon SESにはメール配信の信頼性を向上させるためにAmazon SES自体を外部ISPからの信頼性を損ねないよう、ISPのスパムフィルタにひっかからないようにする仕組みがあるとのことです。
具体的には、主に以下の手段で配信されるメールを高品質であるよう保ちます。
- Amazon SESのフィルタリングによりスパムメールの可能性が高いメールは外部へ配信しない。
- ユーザにメール品質向上のためのフィードバック情報を提供し、品質向上できるようにする。
- ユーザには急激なメール送信の増加をさせず、段階的にユーザのメール送信量を増やすようにし、継続的に高品質なメールを配信するユーザのみ大量メール配信できるようにする。
まず(1)ですが、スパムメールやその他低品質なメールはAmazon SES自体がそれらのメールを外部に送信しないばかりか、ひどい場合はアカウントの停止もあるとのことで、徹底して低品質なメールを外部に出さないようにしています。
次に(2)では、ユーザに対してバウンスメールの数、苦情メールの数など統計情報を提供し、ユーザ自身がそれらの統計情報を元にメールの品質を向上できるようにします。(具体的なAPIは次の記事で紹介します)
最後の(3)ですが、たとえば、プロダクション環境では最初は24時間に1000通のみの配信ができますが、高品質なメール配信を続けるとその制限が徐々に緩和され、10日間かけて10,000通程度メールが送れるようになります。その間、Amazon SESはそのユーザから送られるメールについて高品質なメールを送りつづけているか評価し、制限の緩和を判断するようです。
(参考:http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/)
これらのことを実施することにより、Amazon SES自体から発信されるメールが各ISPのブロックにかからないようになり、高い配信性能が保たれるということのようです。
■ 他サービスとの比較や気になる点
Amazon SESは「開発者のみなさんも品質向上に協力してね!」という姿勢が他社のサービスと比較すると強く感じます。セルフサービス要素が強い感じ。
国内にある他のメール配信サービス業者などでは、基本的には法人による契約なので、Amazon SESと同様の取り組みなどは必要ないのだと思います。
他のメール配信業者はより高価ですが、配信性能だけではなく、開封情報の取得や不達の管理や、ドコモ等キャリアへのメール配信など、Amazon SESにはない機能も備えているので、実は単純には価格では比較できるものではなく、それぞれの用途によって使い分けましょう、という話になるのかと思います。当たり前ですが。
実運用を見据えると、やはり国内用途ではドコモ、au、ソフトバンクの携帯メールへの配信は大丈夫かな、というのが気になります。たとえば、配信性能は満たしたとしても、配信の高速化(並列化)などはどれくらいできるのだろうか、、、など。機会があったら調べてみたいと思います。
■ まとめと次回
Amazon SES自体はまだベータ版で、導入例などもどれくらいあるかわからないので、当社でも実戦投入はまだ先なのかなとは思いますが、初期費用なく、ランニングも少ない、そして簡単なAPIで使え、配信性能もよい、ということでいつか実戦投入を模索したいな、と思います。
次回は実際にAmazon SESのAPIを使ってプログラミングをしてみたまとめなどを書きたいと思います。
■ おまけ ~中途採用のお知らせ~
フレクトではAWSやSalesforceを使ったソリューション事業の拡大をしております。クラウド環境を使った開発に興味がある人はぜひご連絡いただければと思います。以下、採用ページです。
コメント