Amazon SESで送信したメールがバウンスを起こした場合にその旨通知されるよう、Amazon SNSを利用して設定します。
まずは、SESで承認済みのメールアドレスのリンクをクリックし、 「Notifications」を表示します。
以下の状態ですと、各Notificationが「none」になっているので、何も設定されていない状態です。
「Edit Configuration」ボタンを押し、「Click here to create a new Amazon SNS topic」をクリックするとTopicを作成することができます。
Topic Name と Display Name を入力して「Create Topic」を押します。
1つ前の画面に戻りますので、「Bounce」と「Complaints」のところで先程作成したTopicを選択し保存します。
Bounce(バウンス)=宛先不明等でメールが届かない
Complaint(苦情)=受信者からの苦情(迷惑メールの報告等)
一番始めの画面で作成されたTopicが設定されているのを確認できます。
次に、Amazon SNS に移動します。ここでリージョンを確認間違わないように注意してください。SESと同じリージョンを指定すること。
SNSダッシュボードに先程作成したTopicがあるのが確認できます。このTopicをクリックし、「Create New Subscription」をクリックします。
どのように通知するのかを選択する項目が表示されます。今回はEmailで通知してみたいと思います。
ちなみにHTTPだとスクリプトへのURLを指定しておけば、POSTで結果を通知してくれますので、バウンスの自動処理とか実装するのにいいですね。おいおい実装を検討したいと思います。
「Subscribe」すると、Endpointで設定したメールアドレス宛てに認証メールが届きますので、これを認証します。
認証が済むと、下記画面でリフレッシュすると「PendingConfirmation」からSubscription ID が振られたものに変化します。
最後に、実際にバウンスメールの通知が届くかどうか確認します。
SESに移動して、今回バウンスを設定したメールアドレスにチェックを入れて、「Send a test Email」をクリックすると、テストメールの宛先を入力する欄が表示されます。
テスト用のメールアドレスは以下の Amazon SES Mailbox Simulator を利用すると便利です。
Success : success@simulator.amazonses.com
無事に送信が成功するアドレス
Bounce : bounce@simulator.amazonses.com
宛先不明で戻ってくるアドレス
Out of the Office : ooto@simulator.amazonses.com
宛先のメールボックスには届くが、out-of-the-office(OOTO)で戻ってくるアドレス
Complaint : complaint@simulator.amazonses.com
宛先のメールボックスには届くが、スパムとして報告される挙動を示すアドレス
Address Blacklisted : blacklist@simulator.amazonses.com
SESでブラックリストに登録されているアドレス。
Bounce のアドレス宛てにテストメールを送信すると、きちんと通知が送信されてきました。