【Amazon SES】メールが届かない!サプレッションリストを確認する

AWS

はじめに

 Amazon SESでメールを送信してもメールが届かないケースの中で送信先のメールアドレスがサプレッションリスト(suppression list)に登録されている場合がある。
 その場合はサプレッションリストから削除する必要があるので、そのやり方について紹介します。

サプレッションリスト

 サプレッションリストとはメールが到達できないアドレスに何度も送信しないようにするためのリストです。SESは送信時にサプレッションリストを見て送信先のメールアドレスが存在すればバウンスとして処理をしてメールの送信は行いません。

 そのサプレッションリストにはグローバルサプレッションリスト(global suppresion list)と アカウントレベルのサプレッションリスト(account-level suppression list)の2種類があります。
2種類ともリストから削除の仕方も違うのでそれぞれ説明をしていきます。

グローバルサプレッションリスト

 グローバルサプレッションリスト はハードバウンスが起こると登録されるようです。ハードバウンスとはメールアドレスが存在しないなど恒久的にメールが送信できない状況です。

 一定期間リストに登録されると自動的に削除されますが、もう一度ハードバウンスになると前回よりも長期間リストに登録されることになります。(最大で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を利用している全てのユーザーに適用されてメール送信できなくなります。

グローバルサプレッションリストから削除する

 グローバルサプレッションリストから対象のメールアドレスを削除は、コンソールからしかできません。
削除できるリージョンも決まっていて、米国東部 (バージニア北部)、米国西部 (オレゴン)、またはヨーロッパ (アイルランド)のいずれかとなります。(どのリージョンから削除しても問題はありません)

https://us-west-2.console.aws.amazon.com/ses/home?region=us-west-2#suppressionlist-removal:

 Email Address と画面に表示されている文字列を Type charactersに入力してSubmitをするとリストから削除されます。

アカウントレベルのサプレッションリスト

 AWSアカウントに適用されるサプレッションリストでハードバウンスやメールが苦情として処理された場合に適用されて次回以降にメールが送信されないようにします。
 グローバルはリストの追加などはできないですが、アカウントレベルでは追加・削除をすることができます。

 2019年11月25日以降にAmazonSESを使用した場合は自動で適用されますが、それより以前から利用している場合は、Amazon SES APIのPutAccountSuppressionAttributesで有効にする必要があります。

アカウントレベルのサプレッションリスト を有効にする

 AWS CLIを利用すると以下のコマンドで有効にすることができます。

aws sesv2 put-account-suppression-attributes \
--suppressed-reasons BOUNCE COMPLAINT

suppressed-reasons パラメータには、BOUNCECOMPLAINT もしくは両方を設定する必要があります。

アカウントレベルのサプレッションリストに追加する

aws sesv2 put-suppressed-destination \
--email-address [email protected] \
--reason BOUNCE

[email protected]BOUNCE の理由で追加します。

アカウントレベルのサプレッションリストの一覧を取得する

aws sesv2 list-suppressed-destinations

コマンドを実行すると以下のような結果が返ってきます。

{
    "SuppressedDestinationSummaries": [
        {
            "EmailAddress": "[email protected]",
            "Reason": "COMPLAINT",
            "LastUpdateTime": 1586552585.077
        },
        {
            "EmailAddress": "[email protected]",
            "Reason": "COMPLAINT",
            "LastUpdateTime": 1586552666.613
        },
        {
            "EmailAddress": "[email protected]",
            "Reason": "BOUNCE",
            "LastUpdateTime": 1586556479.141
        }
    ]
}

アカウントレベルのサプレッションリストから削除する

aws sesv2 delete-suppressed-destination \
--email-address [email protected]

[email protected] に対象となるメールアドレスを指定して実行するとリストから削除されます。

最後に

 Amazon SESを利用しているとメールが届かないというケースが出てきてきます。その場合はサプレッションリストを確認してみるのも対応の一つです。

 同じようなことで悩まれている人の参考になればと思います。

コメント

タイトルとURLをコピーしました