はじめに
AWS SESを使用してメールを配信する際に、何らかの原因により正常に配信できなかったメールをバウンスメール
と呼びます。
SESではバウンスメールの発生率が一定の割合を超えると、メール配信機能が停止されるというヤバめの仕様があります。
そのため、SESを利用するエンジニアにとって、バウンスメール対策は気を配らなくてはいけないポイントとなっています。
SESにてバウンスメールが発生した際、マネージメントコンソール上からでは、どのアドレスを宛先としているメールにてバウンスが発生しているかを確かめる術がありません。(2021年7月現在)
バウンスが発生している宛先がわからないとトラブルシュートが進みません。困りました。。
なんと、SNSとSESの標準機能だけを利用して、バウンス対象アドレスが含まれたバウンス情報をメールで受信することが可能です。
この記事では、その手順について記載します。
実現すること
SESとSNSの標準機能のみを使用して、バウンス発生時にバウンス対象アドレスを含むバウンス情報をメールで受け取る
設定手順
SNSトピックの作成
上記以外はデフォルトで問題ありません。
SESの設定
"Email Addresses" -> "Verify a New Email Address"から送信元として使用するアドレスを入力します。
AWSから確認メールが来るので、リンクに飛んでメールアドレスを認証させます。
認証したメールアドレスから同一メールアドレスにテストメールを送信します。
メールが届いたことを確認します。
"Email Addresses" -> "Notifications" -> "Edit Configuration"
Bouncesに作成したSNSトピックを指定します。
original headerの内容はMailオブジェクトを参照してください
元の E メールヘッダーの内容については、Amazon SNS 通知の内容の mail オブジェクトを参照してください。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/configure-sns-notifications.html#configure-feedback-notifications-console
SNSにてTopicにサブスクリプションを紐付ける
プロトコルをEメールとして、バウンス情報を送信するメールアドレスをエンドポイントに指定します。
(それ以外はデフォルトでOKです)
エンドポイントに指定したメールアドレス宛に、確認メールが届くのでリンクに飛んでConfirmします。
Bounceのテストを実施する
SESからメールアドレスを選択して、Send Test Mailにて以下の通り、bounceテスト用のメールアドレスを指定して、送信します。
bounceテスト用のメールアドレスについてはこちらを参照
メールの内容を見ると、バウンス対象となっているメールアドレスも表示されています。
参考
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ses-resolve-account-review-pause/
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/notification-contents.html#mail-object
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-email-simulator.html
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/sending-email-global-suppression-list.html#sending-email-global-suppression-list-considerations