プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWSで大量メール配信するなら、Amazon SESで決まり

 何度かAmazon Simple Email Service(SES)の使い方の紹介をしてきましたが、そもそもSESとは何ぞやという話をしていなかったです。最近整理してたので、簡単にまとめてみます。

Amazon Simple Email Service(SES)とは?



 Amazon SESは、一言でまとめると、「信頼性の高いバルクメール送信サービス」です。まず、信頼性の高いの部分についてです。自身でSMTPサーバを運用したことがある人は解ると思いますが、近年SMTPサーバを運用するのは非常に面倒くさいのです。不正中継されないようにセキュリティホールを塞ぐのはもちろんのこと、SMTPサーバのレピュテーション(信頼性)を下げない為に不適切なメールを送っていないかの監視、バウンスメールの比率を下げる為に定期的に配信するメールアドレスのお掃除などが必要です。しかし、Bounceの返り方はメールサーバごとに違うので、それを吸収して処理をする必要があります。また短時間での大量メールの配信は、通信キャリアーやISPから規制を受ける可能性が高いです。それを回避するには、複数のIPを使って1IP/1時間あたりの配信数の制御が必要になります。面倒くさいですね。
 この辺りを全部やってくれるのが、Amazon SESなのです。信頼性を高める為に、コンテンツやスパム/ウィルスのチェックされています。また、簡単にBounceの処理が出来るように、微妙に異なるBounce内容を吸収して扱い易くしてくれるAPIも提供されています。そして、短時間で大量に配信出来るように流量制限のコントロールをしてくれます。ということで、とっても便利なAmazon SESです。
 しかも料金は、1,000通あたり$0.10+通信料のみです。10万通送っても1,000〜2,000円で収まります。結構、驚異的な値段ですね。

Amazon SESの制約



 とっても便利なAmazon SESですが、信頼性を保つ為に幾つか制約があります。まずSESは、登録済みのメールアドレスもしくはドメインからしか送信できません。次に、以下の3つを守り続けないといけません。

  • Bounce Mail(配信不能メール)の比率を5%以下に保ち続ける
  • 苦情を防ぐ(0.1%未満)
  • 悪意のあるコンテンツを送らない


 まずBounce Mailについては後で説明しますので、苦情(Complaint)と悪意のあるコンテンツについてです。まず苦情ですが、これだけみると???となると思います。つまりは受け取った人にスパムとして報告させないようにするということです。最近ですと、メールクライアント側、もしくはスパムフィルターと連携してスパムを報告する仕組みが色々とあります。それを使ってスパムとして報告されないようにするということです。まぁつまりスパムメール送るなということですね。次に悪意のあるコンテンツですが、ウィルスやマルウェアの他にフィッシングメールのようなものも含まれるようです。つまりは、コンテンツの中まで機械的にチェックしているようですね。
 さて、上記の制約を守らないと、どうなるのでしょうか?最悪の場合、SESの利用の一時停止される場合があるようです。対策の詳細は、"Amazon Simple Email Service Eメール送信のベストプラクティス"に載っているので、SESを使う場合は一読しておくと良いと思います。

Bounce Mail(配信不能メール)と苦情(スパム申告)の処理



 それでは、配信不能メールと苦情をどう処理したら良いのでしょうか?"AWS Developer Forums: バウンス(Bounce)と苦情(Complaint)処理の自動化について"に詳しく書いていますが、SNSのTopicにSESから通知をいくようにして、それをSQSが拾ってバッチサーバで処理させるというのが王道のようです。SNSとSQSの連携、いいですよね。

まとめ



 SESは幾つか制約があるものの、コスト面や利便性から是非使うべきといえるだけのサービスとなっています。特に、送信元アドレス/ドメインの事前登録については、システムの性質にとってはかなり大きな制約になると思います。しかし、それ以上にメリットがあると思います。正直、もうSMTPサーバのメンテナンスなんかやりたくないですしね。そんな方は、Let's Try!!


See Also:
第8回JAWSUG大阪 JAWSUG大阪 連携サービス(SNS,SQS,SES)
マイナー三兄弟なAmazon SNS,SQS,SESを激しくお勧めする
Amazon Simple Email Service(SES)のSMTP機能を使ってみる。サーバサイド編
Amazon Simple Email Service(SES)のSMTP機能を使ってみる。メールクライアント編
Amazon Simple Email Service(SES)のメール送信テスト用機能(Amazon SES Mailbox Simulator)を試してみた

参照:
Amazon Simple Email Service Eメール送信のベストプラクティス
AWSマイスターシリーズ Amazon Simple Email Service
AWS Developer Forums: バウンス(Bounce)と苦情(Complaint)処理の自動化について