目次
Amazon SES のサプレッションリストについて
こんにちは。SRE 課の栩野です。
前回 Amazon SES のメール送信ログを表示する設定方法についてブログにしましたが
バウンスで送信に失敗したメールのログを確認していた際、以下のようなログが出力されていました。
「Amazon SES did not send the message to this address because it is on the suppression list for your account」
(Amazon SES はアカウントの抑制リストに入っているため、このアドレスにメッセージを送信しませんでした)
翻訳した日本語の通り、あなたのアカウントのサプレッションリスト(抑制リスト)というリストに送信先のアドレスが
登録されているので、そのアドレスにはメールを送信しませんでしたよー。といった内容になっています。
今回のテーマは、このサプレッションリストが一体何なのか。
リストに登録されたアドレスにメールを送信するためにはどうすればいいのか。等々紹介していきます。
前回のブログ:Amazon SES のメール送信ログを表示
サプレッションリストについては以下の AWS ドキュメントを参考にしています。
アカウントレベルのサプレッションリストの使用
Amazon SES グローバルサプレッションリストの使用
サプレッションリストとは
Amazon SES にはサプレッションリスト (Suppression list) という
メール送信時、過去にバウンスや苦情が発生したアドレスが登録されるリストが存在します。
サプレッションとは日本語で抑制の意味で、このリストに登録されたアドレスに対しては
メールを送信しても、Amazon SES でメールは受け付けられますが、送信はされないといった
挙動がとられます。
またこのサプレッションリストには、グローバルとして世界中の Amazon SES 全体に適用される
「グローバルサプレッションリスト」と、AWS アカウント単位にだけ適用される
「アカウントレベルのサプレッションリスト」といった二つのサプレッションリストが存在します。
このようなサプレッションリストが存在することによって、Amazon SES はバウンスや
苦情イベントが発生したアドレスへのメール送信を防止する。といったことが出来るようになっています。
グローバルサプレッションリストについて
Amazon SES を使ってメールを送信した際、送ったメールがハードバウンスを起こすと
発生したメールアドレスがグローバルサプレッションリストに自動で追加されます。
このグローバルサプレッションリストは、世界中全ての Amazon SES に対して適用され
参照されるのでグローバルの名前になっています。
グローバルサプレッションリストがどのようなリストなのかは以下簡単にまとめます。
-
リストに登録されているアドレスに対してメールを送信すると、Amazon SES は
メールの受付は行いますが、送信はされません。 -
リストは全ての Amazon SES アカウントに対してデフォルトで有効化され
無効化することは出来ません。 -
リストには、手動でアドレスを追加することはできません。
行えるのはリストに登録されたアドレスの削除だけになります。 -
リストに登録されたアドレスは時間経過によりリストから削除されますが
登録されるたびにリストに残る時間が長くなり、最大では 14 日間リストに残ります。 -
リストにアドレスが登録されているか知るには、バウンス通知やログを確認する必要があります。
(グローバルサプレッションリストに登録されてる場合、ログや通知をみれば
それが分かるような文言が出力されるかと思われます。) -
リストに登録されたアドレスにメールを送信すると、アカウントのバウンスレートにカウントされます。
アカウントレベルのサプレッションリストについて
次にアカウントレベルのサプレッションリストについてですが
グローバル同様に、Amazon SES を使ってメールを送信した際、送ったメールがハードバウンス
を起こすと、バウンスが発生したメールアドレスがアカウントレベルのサプレッションリストにも
追加されます。
こちらは Amazon SES を利用する AWS のアカウント単位で適用されるためアカウントレベルと呼ばれます。
アカウントレベルのサプレッションリストについても、どのようなリストか以下簡単にまとめます。
-
リストに登録されているアドレスに対してメールを送信すると、Amazon SES は
メールの受付は行いますが、送信はされません。 -
リストはグローバルと違い有効化や無効化の選択ができ、また登録されたアドレスの確認や
アドレスの登録・削除も行えます。 -
2019 年 11 月 25 日以降に Amazon SES の利用を開始した場合はデフォルトで有効化されており
それ以前から利用している場合は、管理者が有効化する必要があります。 -
リストに登録されたアドレスは、管理者が削除するまでは残り続けます。
-
リストに登録されたアドレスにメールを送信した場合、アカウントのバウンスレートにはカウントされません。
サプレッションリストにアドレスが登録された際の対応方法
では Amazon SES から送信したいメールアドレスが、サプレッションリストに登録されてしまっている場合
どのようにすればリストからアドレスを削除し、メール送信が行えるようになるのか以下紹介していきます。
グローバルサプレッションリストに登録された場合
グローバルサプレッションリストに登録されたアドレスをリストから削除する方法は
米国東部(バージニア北部)、米国西部 (オレゴン)、または 欧州 (アイルランド) のいずれか
1 つのリージョンから Amazon SES のコンソール経由で削除申請を行うことで削除できます。
Amazon SES のサービスコンソールに移動し、上記いずれかのリージョンを選択します。
次にナビゲーションから[Suppression List Removal (サプレッションリストの削除)] を選択します。
(東京リージョンの場合は薄字になっておりクリック出来ません。)
[Email Address] のフィールドに、グローバルサプレッションリストから削除したい
メールアドレスを入力し、[Type characters] に表示された文字を入力して[Submit] をクリックします。
アドレスが登録されていても、いなくても
「Success! If the address was on the suppression list, it has been successfully removed.」
と表示され、登録されていた場合グローバルサプレッションリストからすぐにアドレスが削除されます。
アカウントレベルのサプレッションリストに登録された場合
アカウントレベルのサプレッションリストからアドレスを削除する方法は
Amazon SES を AWS CLI で操作できるロールが割り当てられた環境から
以下コマンド操作によって削除することが可能です。
- リストから削除
aws sesv2 delete-suppressed-destination \
--email-address recipient@example.com
aws sesv2 で delete-suppressed-destinatio を入力し
オプションとして --email-address に削除したいアドレスを指定することで削除できます。
上記は例として[recipient@example.com]をリストから削除するコマンドになります。
アカウントレベルのサプレッションリストの操作
アカウントレベルのサプレッションリストは削除以外にも様々な操作が
AWS CLI から可能です。
以下その操作の一部を紹介します。
- サプレッションリストの有効化
aws sesv2 put-account-suppression-attributes \
--suppressed-reasons BOUNCE COMPLAINT
サプレッションリストをアカウントで有効化したい場合は put-account-suppression-attributes で
オプション --suppressed-reasons を付けて、リストに登録する理由を BOUNCE か COMPLAINT もしくは
その両方を記載します。 (理由を付けない場合リストが無効化されます。)
- リストの無効化
aws sesv2 put-account-suppression-attributes --suppressed-reasons
逆にサプレッションリストを使いたくない場合は --suppressed-reasons を指定しないことで無効化できます。
- リストの一覧表示
aws sesv2 list-suppressed-destinations
// このように表示されます。
{
"SuppressedDestinationSummaries": [
{
"EmailAddress": "recipient2@example.com",
"Reason": "COMPLAINT",
"LastUpdateTime": 1586552585.077
}
リストに登録されたアドレスの一覧を確認したい場合は、list-suppressed-destinations で
リストの一覧を表示することが出来ます。
(1 ページあたりデフォルトで 1000 件までの表示なので、それ以上登録されている場合は
--next-token オプションを使って 2 ページ目以降の確認が必要です。)
- 手動でリストへのアドレス追加
aws sesv2 put-suppressed-destination \
--email-address recipient@example.com \
--reason BOUNCE
手動でリストにアドレスを追加したい場合は、put-suppressed-destination で
--email-address に登録したいアドレス、--reason に登録の理由(BOUNCE または COMPLAINT)
を指定して登録します。
最後に
サプレッションリストにはグローバルなリストとアカウントレベルのリストが存在し
グローバルなリストは Amazon SES 全体で適用され、行えるのはアドレス削除の申請のみです。
アカウントレベルなリストは AWS CLI から確認・登録・削除・有効化・無効化が行えました。
サプレッションリストの管理は面倒ですが、適切に利用できていなければ
バウンスや苦情イベントが多く発生してしまい、Amazon SES の利用が停止されてしまう可能性もあります。
Amazon SES から上手くメールが送信できない時は、一度このサプレッションリスト周りも疑って
本記事が少しでも参考になればと思います。
以上、最後までありがとうございました。
参考
Amazon SES のメール送信ログを表示
アカウントレベルのサプレッションリストの使用
Amazon SES グローバルサプレッションリストの使用
運用サービス課 課長
運用・監視の設計から導入まで、運用サービスを担当してます。
運用監視やセキュリティ関連の話題に興味があるので、そのあたりのブログを多めで投稿していきたいと思ってます。
LINK
クラウドベリージャム:プロフィールページ