AWS CLIでメールアドレスがサプレッションリストにあるかを調べる
始めに
Amazon SESでメールを送った際に、サプレッションリストに登録される可能性があります。サプレッションリストとは、特定のメールアドレスに送信しないようにする仕組みです。登録されるパターンとしては、メールアドレスが存在しない場合や迷惑メールとしてフィルタリングされるBounce
、スパムとして報告されるComplaint
のどちらかで登録されます。
このサプレッションリストに登録されている限り、該当のお客様にメールを送ることができないのでメールが有効であることを確認したらサプレッションリストを解除する必要があります。ただし、AWS コンソール上ではサプレッションリストから解除はできるものの、該当のメールアドレスが登録されているか簡単には検索できません。ページ遷移で頑張って該当ページにたどり着く必要があります。また、解除自体は簡単なものの、Bounceが原因だったのか、Complaintが原因だったのか、どのタイミングからメールがサプレッションリストに登録されていたのか等は判断できません。
今回の記事では、AWS コンソールではなく、AWS CLIを使用してサプレッションリストに該当メールアドレスが登録されているかどうかを調べます。
環境
- AWS CLI
- 2.25.1
実装
次のコマンドで、a@example.com
がサプレッションリストに登録されているかどうかを調べられます。
aws --profile {profile} --region {region} sesv2 list-suppressed-destinations | grep -A2 'a@example.com'
ただし、検索できるのは最初の1000件だけです。次の1000件を検索するためにはnext token
が返却されるためそのトークンを使用します。該当のメールアドレスがヒットするまで検索する必要があります。
aws --profile {profile} --region {region} sesv2 list-suppressed-destinations --next-token {nextToken} | grep -A2 'a@example.com'
なお、理由(--reasons)やサプレッションリストに登録された日付(--start-date, --end-date)を期間で絞ることも可能なので、該当メールアドレスのサプレッションリストに登録された期間にあたりを付けられたらページング処理を頑張る必要はなかったりします。
ソースコード
なし
終わりに
基本的にはサプレッションリストに登録されているメールに送ってしまうと、バウンスとしてカウントされてAmazon SESの送信制限に引っかかる可能性があるので、自前のDBでも管理する必要があります。しかし、運用開始初期でうまく処理が動いていない時だと、サプレッションリストに登録されたメールアドレスを自前のDBに反映することが漏れることがあります。
その場合に、念のために原因がBounce
かComplaint
であるかを調べる必要がありました。
基本的には何も考えずにサプレッションリストを削除すればOKですが、万が一調べたくなったとき用としてブログに残しておきます。
Discussion