SESを利用するにあたり必要な認識と対策(特にバウンス)

 

AWSのSESを利用するにあたり、あらかじめ認識しないといけないことが2つあると思います。

 

  • 場合により、SESを利用する権利を一時停止されてしまうことがある
  • 権利を一時停止されてしまった(もしくは警告を受けた)際には、その原因を自分で調査して、AWSに原因と対策を英文で報告する必要がある

 

また、あらかじめ以下いずれかの設定をしておく必要があります。(バウンスが多いために権利一時停止や警告を受けた場合原因調査のため)

 

  • メール送信プログラム側でReturn-Pathを指定し、Return-Pathに対して返信されたメールを調べる(デフォルトではSourceアドレスに対して返信)
  • Feedback NotificationsにてBounces SNS Notificationを指定しSNS経由で通知されたバウンス情報を調べる

 

権利一時停止や警告を受けてしまった際に、主にAWSのUSのフォーラムにおいて、あらかじめ上の2点の認識せず、対策をとっていないため混乱に陥っているポストを見かけます。混乱を避けるためにどうすればよいか、どのように権利一時停止や警告を受け、どのように対応すればよいのでしょうか。

 

* 前提知識

バウンスや苦情とは何か、どういうときに発生するのかという点がわからない人は以下を見るとよいと思います。

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Intro.ArchOverview.html

http://media.amazonwebservices.com/jp/wp/AWS_Amazon_SES_Best_Practices.pdf

 

 

どのように権利一時停止や警告を受けるのか

 

権利一時停止や警告を受ける理由には主に以下の3つの理由があるようです

  • バウンス率が高い(High Bounce Rate)
  • 苦情率が高い(High Complaint Rate)
  • メールコンテンツの質が低い(Low Content Quality) 

 

フォーラムを見ると、権利一時停止の場合はAWSからメールで以下のような通知が来るようです。この例では"Critically Low Content Quality"が原因です。suspendが権利一時停止を意味します

https://forums.aws.amazon.com/thread.jspa?messageID=369015#369015

"We have detected significant issue(s) with your sending pattern that require us to immediately suspend your SES sending privileges. This supersedes any previous probation warnings you may have received.The issue(s) triggering your suspension at this time, updated to reflect current statistics, are:

*Critically Low Content Quality: The average content quality has been critically low."

 

警告を受ける場合はAWSからメールで以下のような通知が来るようです。この例では"Unacceptably High Bounce Rate"が原因です。

https://forums.aws.amazon.com/message.jspa?messageID=283850

"Our analysis of your Simple Email Service sending pattern is showing that certain parameter(s) of your sending are at unacceptable levels. If these metrics do not improve, we will suspend your SES sending privileges. For each metric that is at an unacceptable level, we will allow you a defined number of emails to be sent to bring the metric back up to acceptable levels. Please note that if your sending quality decreases further actions may be taken before you have sent the number of emails noted below.

*Unacceptably High Bounce Rate: 1,216 of the last approximately 11,000 distinct emails addresses you have sent to have bounced.

*This issue must be fixed within the next 40,000 emails you send."

 

警告メールのタイトルは"Simple Email Service Probation Warning" のようです。Probationは、保護観察(期間)、謹慎期間を意味します。直ちに権利の利用一時停止にはならないものの改善がみられない場合は、権利の利用一時停止となる可能性があります。

https://forums.aws.amazon.com/thread.jspa?messageID=279816 

 

なお、権利一時停止の際に、AWSからのメールの通知に気づかないと以下のようにAPI callでsubscriptionを行う必要があると表示されたり、AWS Management ConsoleのSESタブで、SESのサービスに対してサインアップが必要と出るようです。最初にこの状況になった時は事態を理解できないでしょうね。

https://forums.aws.amazon.com/message.jspa?messageID=396422

"Noticed that my SES stopped working, any calls with our access/secret key result in a "403: The AWS Access Key Id needs a subscription for the service." I checked my management console and the SES tab says I'm not signed up for the service. AFAIK, we weren't breaking any rules and I didn't get any emails or anything about the service being halted."

 

 

どのような条件で権利一時停止や警告を受けるのか。

 

どのような条件で権利一時停止や警告を受けるのかについては、AWS側から明確に公開されていないようですが、Amazon Simple Email Service  E メール送信のベストプラクティスというドキュメントに「基本的に、バウンス率は 5% 以下に維持してください」、「基本的に、苦情率は 0.1% 未満に維持してください」という記述があります。こちらが一つの目安となるようです。

 

 

権利一時停止や警告を受けた理由は何であり、どのような対策をとるべきか。

 

AWSからの権利一時停止や警告の通知メールは英文ですが理由と取るべき対策が簡単に記述されているようです。

  • バウンス率が高いためか、苦情率が高いためか、メールコンテンツの質が低いためか
  • バウンス率、苦情率はどれくらいだったのか
  •  ses-support@amazon.com に原因と対策を英文で報告する必要があるのか、次のメール送信までに改善すればよいのか

 

権利一時停止や警告の通知メールだけでは状況を把握するのが困難です。そんなときには、以下のベストプラクティスを見るとよさそうです。

日本語: http://media.amazonwebservices.com/jp/wp/AWS_Amazon_SES_Best_Practices.pdf

英語: http://media.amazonwebservices.com/AWS_Amazon_SES_Best_Practices.pdf

 

苦情率が高いため、またはメールコンテンツの質が低いために権利一時停止や警告のメールを受信した場合は、上のベストプラクティスに対策に関する十分な情報が含まれているように思います。しかし、バウンス率が高いため権利一時停止や警告のメールを受信した場合への対処に関しては残念ながら十分な情報が載っていないように思えます。

 

 

バウンス率が高く、権利を一時停止されてしまった(もしくは警告を受けた)際にはどうすればよいのか。

 

結論からいうと、下のいずれかの方法による原因調査しかありません。

 

  • メール送信プログラム側でReturn-Pathを指定し、Return-Pathに対して返信されたメールを調べる(デフォルトではSourceアドレスに対して返信)
  • Feedback NotificationsにてBounces SNS Notificationを指定し、SNS経由で通知されたバウンス情報を調べる

 

ここで注意しなければならないのは、「あらかじめこれらの設定を行っていなければならない」という点です。

 

Return-PathもしくはBounces SNS Notificationを指定し、再度メールを送信した後に取得する情報を元に原因の特定をする必要があります。(ただし送信先メールアドレスが存在しないなどハードバウンスされた場合は、14日間はSESにblacklistとしてマークされ、相手側MTAまで送信されず、SES側でblaclisted addressとしてメールを送信できなかったというエラーが返ります)

 

バウンス対策に余分な費用を使いたくない、そんな方はReturn-Pathを使用するとよいと思います。ただし、Return-Pathで返ってくる情報はメール形式であり、これらの情報量が多くなると分析するために手間がかかかります。

 

* Return-Pathを使用する際の情報 *

 Return-Pathで指定するアドレスもVerifying Email AddressesでVerifyされている必要があります。

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Intro.AnatomyOfMessage.html

"Return-Path?The email address to which message bounces should be sent. We recommend that you always set the Return-Path parameter so that you can be aware of bounces and take corrective action if they occur. The address specified in Return-Path must be verified by Amazon SES?for more information, see Verifying Email Addresses"

 

SendEmail APIではReturnPathに指定する必要があり、SendRawEmail APIではReturn-Pathを指定していればReturn-Pathに指定したアドレスに情報が届き、Return-Pathを指定していない場合はSourceのアドレスに情報が届くようです。

 

なお、Verified Senders > 送信元Emailアドレス > Feedback DetailsのEmail Forwarding Feedbackが有効(デフォルト有効)になっていれば、送信元Emailアドレスに情報が届くようですが、やはりReturn-Pathに指定する方法が管理が煩雑にならずよいでしょう。送信元アドレスとバウンスとなったメールを受信するアドレスを区別することができます。どのように通知されるのかは以下のFAQに情報があります。

http://aws.amazon.com/jp/ses/faqs/#41

Q. バウンスや苦情の通知はどこに送信されますか?

 

 

 追加の費用が少々かかっても利便性を追求したい、そんな方はFeedback NotificationsにてSNS Notificationを使用するとよいと思います。

 

* SNSを使用する際の情報 *

 以下のような情報があるようです。

http://blog.suz-lab.com/2012/10/amazon-ses-mailbox-simulator-sns-sns.html

https://forums.aws.amazon.com/ann.jspa?annID=1765

 

あらかじめこれらの方法を参考に、バウンスバウンス発生時の処理を自動化させると非常に運用が容易になります。

 

しつこいようですが、バウンスの原因調査はあくまでReturn-PathもしくはSNS Notificationを使用するしか手段はありません。APIでメールを送信した際に返されるエラーメッセージを利用してのバウンス調査はできません。

        メール送信クライアントプログラム ---> SESエンドポイント ---> 受信側MTA

バウンスは受信側MTAで何らかの理由により、メールを受信できない場合に発生します。裏を返せば、受信側MTAまでメールは配達されています。受信側MTAまでメールが配達されたということは、SESエンドポイントはメール送信クライアントプログラムからの要求を正常に受け付けています。メール送信クライアントプログラムには、SESエンドポイントからエラーなどは返ってきません。

 

最後に

SESを利用する前に、あらかじめの認識及び対策をしておきたいものです。これらの認識や対策がない場合、いざ事が起こったときに、AWS、SIer、エンドユーザ企業皆が不幸な状況になってしまうことがあります。このようなことを書くと、SESを利用するハードルが高いように思えてしまいますが、実際に対策自体はそれほど難しいものではなく、過去にメール関連の仕事してきた人には簡単なことであると思います。また、SESをきっかけにメール関連の仕事を行う人にもそれほどハードルは高くないものだと思います。特徴をきちんと把握して利用すれば、SESでは非常に簡単に、低コストで質の良いメールを送ることができます。