SESのアカウントレベル抑制リストをCLIで確認・削除する

  • AWS
  • SES
  • CLI

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

SESで特定のメールアドレスがサプレッション(送信抑制)されているか確認して、必要なら削除する手順のメモ。対象はアカウントレベル抑制リスト。

確認する

$ aws --region ap-northeast-1 sesv2 list-suppressed-destinations

結果はこんな感じで返ってくる。

{
"SuppressedDestinationSummaries": [
{
"EmailAddress": "target@example.com",
"Reason": "BOUNCE",
"LastUpdateTime": "2020-12-25T15:05:07.620000+09:00"
},
{
"EmailAddress": "target@example.jp",
"Reason": "BOUNCE",
"LastUpdateTime": "2021-02-09T21:06:06.817000+09:00"
}
]
}

Reason は BOUNCE か COMPLAINT。件数が多いと NextToken が返ってくるので、その場合は --next-token を付けて追加取得する。

削除する

$ aws --region ap-northeast-1 sesv2 delete-suppressed-destination --email-address target@example.jp

これでアカウントレベル抑制リストから該当アドレスが消える。特にレスポンスは返らない。

コンソールからも同じことができる。SESコンソールの Suppression list メニューを開くと、個別削除はもちろんCSVでの一括削除もできる(一括操作を使うにはサンドボックスを抜けて本番アクセスになっている必要がある)。

補足:「グローバル抑制リスト」とはまた別物

ここが混同しやすいポイントで、SESには実はもう一つ「グローバル抑制リスト」というものが別に存在する。

  • グローバル抑制リストはSES側が裏側で管理しているもので、こちらから直接クエリしたり手動で追加削除したりはできない
  • ハードバウンスを起こしたアドレスが一時的に(最大14日程度)載る、SES利用者全体で共有される仕組み
  • 昔(2019年より前)はこのグローバル抑制リストに対して、コンソール上のフォームからアドレスを自分で削除申請する機能があった。当時は「ブラックリスト」と呼ばれていたものが2013年に「サプレッションリスト」という名前に変わり、フォームで削除できるようになったのがその由来
  • 2019年11月にアカウントレベル抑制リストが新設されてからは、そちらでクエリ・追加・削除ができるようになったため、グローバル抑制リスト側の削除申請フォームはコンソールから既に姿を消している

なので今「Suppression list」としてコンソールやCLIで触っているのは基本的にアカウントレベル抑制リストの方で、グローバル抑制リストは触れない・見えないものだと思っておけばいい。もし送信先がグローバル抑制リストの方に載っていても、アカウントレベル抑制リストに入れていなければSES自体は送信を試みる(バウンスすればそのアカウントの評判には影響する)。