📧
【AWS SES】ユーザー「メールが届かない!」への対処ログ
概要
EC2 + SES + WordPress環境で特定ユーザーへのメール不達が発生。調査の結果、原因は対象アドレスのサプレッションリスト登録であった。本稿はその調査・解決の記録。
- 問題: WordPressから特定新規ユーザーにメール不達(迷惑メールにもなし)。
- 環境: AWS EC2 (WordPress) + AWS SES。
-
原因: SESサプレッションリストへの該当アドレス登録 (
BOUNCE
)。 - 解決: リストから該当アドレスを削除。
- 背景: アドレス有効化前のユーザー作成時にバウンスしたと推測。
事象
WordPressから以下へ一斉メール送信。
-
送信先:
- A:
user1-admin@example.com
(既存) - B:
user2-manager@example.com
(既存) - C:
user3-new-staff@example.com
(新規1) - D:
user4-new-staff@example.com
(新規2)
- A:
- 結果: A, B は受信OK。C, D は受信NG(迷惑メールフォルダにも存在せず)。
環境
- AWS EC2 (WordPress ホスティング)
- AWS SES (メール送信)
- WordPress (SMTP経由でSES利用)
調査フロー
- ユーザー環境確認: 迷惑メール等を確認依頼 → 発見されず。
- SESコンソール確認: メトリクス、送信ドメイン設定等に異常なし。
- CloudWatch Logs確認: バウンス件数は記録されているが、どの宛先でいつバウンスしたかの特定は困難。
- 仮説: SESのサプレッションリストが原因で、送信そのものが実行されていない可能性がある?
-
サプレッションリスト全件取得 (AWS CLI): GUIでの特定アドレス検索が困難なため、CLIを使用。
aws sesv2 list-suppressed-destinations --region リージョン名 --no-paginate > ses_suppression_list_all.json
- ファイルダウンロード & 確認: 出力されたJSONファイルをダウンロード。
-
原因特定: ファイル内でC, Dのアドレスを検索。
Reason: BOUNCE
でリスト登録されていることを確認。これが原因と断定。 -
対処: SESサプレッションリストからC, Dのアドレスを削除(コンソール or
aws sesv2 delete-suppressed-destination
)。
参考:サプレッションリストのエクスポート結果
- ユーザーC,Dのメールアドレスがサプレッションリスト上に存在している
{
"EmailAddress": "user3-new-staff@example.com",
"Reason": "BOUNCE",
"LastUpdateTime": "2025-03-25T08:34:09.779000+00:00"
},
...
{
"EmailAddress": "user4-new-staff@example.com",
"Reason": "BOUNCE",
"LastUpdateTime": "2025-03-25T08:34:09.787000+00:00"
},
原因
メール不達アドレス (C, D) が、AWS SESのサプレッションリストに BOUNCE
として登録されていたこと。
対処
AWS SESのサプレッションリストから該当アドレス (C, D) を削除。
リスト登録の経緯(推測)
- メールアドレス(メールボックス)有効化前に、WordPressで先行してユーザー作成処理を実行。
- ユーザー作成時の自動メール送信(Welcomeメール等)が試行される。
- 宛先が存在しないためバウンス発生。
- SESがバウンスを検知し、該当アドレスを自動的にサプレッションリストに追加。
- その後アドレスが有効化されても、リストに載っているためメール送信がブロックされた。
学び・ポイント
- SESでメールが届かない場合、サプレッションリストの確認は必須。
- CloudWatch Logsだけではバウンスした特定アドレス・日時の特定は難しい場合がある。
- リスト確認・操作にはAWS CLI (
list-suppressed-destinations
,delete-suppressed-destination
等) が有効。 - ユーザー作成・メール送信のタイミングに注意。アドレス有効化を確認してから関連メールを送信するフローが望ましい。
Discussion