はじめに
Amazon SESでメールを送信してもメールが届かないケースの中で送信先のメールアドレスがsuppression listに登録されている場合がある。
その場合はsuppression listから削除する必要があるので、そのやり方について紹介します。
この記事はブログでも公開しています。
suppression List
suppression listとはメールが到達できないアドレスに何度も送信しないようにするためのリストです。SESは送信時にsuppression listを見て送信先のメールアドレスが存在すればバウンスとして処理をしてメールの送信は行いません。
そのsupression listにもglobal suppresion list と account-level suppression list の2種類があります。
2種類ともリストから削除の仕方も違うのでそれぞれ説明をしていきます。
global suppression list
global suppression list はハードバウンスが起こると登録されるようです。ハードバウンスとはメールアドレスが存在しないなど恒久的にメールが送信できない状況です。
一定期間リストに登録されると自動的に削除されますが、もう一度ハードバウンスになると前回よりも長期間リストに登録されることになります。(最大で14日間残ることになります。)
Amazon SES のユーザーから送信された E メールがハードバウンスを起こすと、Amazon SES はバウンスを起こした E メールアドレスをグローバルサプレッションリストに追加します。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/sending-email-global-suppression-list.html
リスト に登録されるとAmazon SESを利用している全てのユーザーに適用されてメール送信できなくなります。
global suppression listから削除する
gloval suppression list から対象のメールアドレスを削除は、コンソールからしかできません。
削除できるリージョンも決まっていて、米国東部 (バージニア北部)、米国西部 (オレゴン)、またはヨーロッパ (アイルランド)のいずれかとなります。(どのリージョンから削除しても問題はありません)
https://us-west-2.console.aws.amazon.com/ses/home?region=us-west-2#suppressionlist-removal:
Email Address と画面に表示されている文字列を Type charactersに入力してSubmitをするとリストから削除されます。
account-level suppression list
AWSアカウントに適用されるsuppression listでハードバウンスやメールが苦情として処理された場合に適用されて次回以降にメールが送信されないようにします。
globalは追加などできないですが、account-levelは追加・削除をすることができます。
2019年11月25日以降にAmazonSESを使用した場合は自動で適用されますが、それより以前から利用している場合は、Amazon SES APIのPutAccountSuppressionAttributesで有効にする必要があります。
account-level suppresion list を有効にする
AWS CLIを利用すると以下のコマンドで有効にすることができます。
aws sesv2 put-account-suppression-attributes \
--suppressed-reasons BOUNCE COMPLAINT
suppressed-reasons パラメータには、BOUNCE か COMPLAINT もしくは両方を設定する必要があります。
account-level suppresion list に追加する
aws sesv2 put-suppressed-destination \
--email-address recipient@example.com \
--reason BOUNCE
recipient@example.com を BOUNCE の理由で追加します。
account-level suppresion list の一覧を取得する
aws sesv2 list-suppressed-destinations
コマンドを実行すると以下のような結果が返ってきます。
{
"SuppressedDestinationSummaries": [
{
"EmailAddress": "recipient2@example.com",
"Reason": "COMPLAINT",
"LastUpdateTime": 1586552585.077
},
{
"EmailAddress": "recipient0@example.com",
"Reason": "COMPLAINT",
"LastUpdateTime": 1586552666.613
},
{
"EmailAddress": "recipient1@example.com",
"Reason": "BOUNCE",
"LastUpdateTime": 1586556479.141
}
]
}
account-level suppresion list から削除する
aws sesv2 delete-suppressed-destination \
--email-address recipient@example.com
recipient@example.com に対象となるメールアドレスを指定して実行するとリストから削除されます。
最後に
Amazon SESを利用しているとメールが届かないというケースが出てきてきます。その場合はsuppresion listを確認してみるのも対応の一つです。
同じようなことで悩まれている人の参考になればと思います。