📧

【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, B は受信OK。C, D は受信NG(迷惑メールフォルダにも存在せず)。

環境

  • AWS EC2 (WordPress ホスティング)
  • AWS SES (メール送信)
  • WordPress (SMTP経由でSES利用)

調査フロー

  1. ユーザー環境確認: 迷惑メール等を確認依頼 → 発見されず。
  2. SESコンソール確認: メトリクス、送信ドメイン設定等に異常なし。
  3. CloudWatch Logs確認: バウンス件数は記録されているが、どの宛先でいつバウンスしたかの特定は困難。
  4. 仮説: SESのサプレッションリストが原因で、送信そのものが実行されていない可能性がある?
  5. サプレッションリスト全件取得 (AWS CLI): GUIでの特定アドレス検索が困難なため、CLIを使用。
    aws sesv2 list-suppressed-destinations --region リージョン名 --no-paginate > ses_suppression_list_all.json
    
  6. ファイルダウンロード & 確認: 出力されたJSONファイルをダウンロード。
  7. 原因特定: ファイル内でC, Dのアドレスを検索。Reason: BOUNCE でリスト登録されていることを確認。これが原因と断定
  8. 対処: 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) を削除。

リスト登録の経緯(推測)

  1. メールアドレス(メールボックス)有効化前に、WordPressで先行してユーザー作成処理を実行。
  2. ユーザー作成時の自動メール送信(Welcomeメール等)が試行される。
  3. 宛先が存在しないためバウンス発生。
  4. SESがバウンスを検知し、該当アドレスを自動的にサプレッションリストに追加。
  5. その後アドレスが有効化されても、リストに載っているためメール送信がブロックされた。

学び・ポイント

  • SESでメールが届かない場合、サプレッションリストの確認は必須。
  • CloudWatch Logsだけではバウンスした特定アドレス・日時の特定は難しい場合がある。
  • リスト確認・操作にはAWS CLI (list-suppressed-destinations, delete-suppressed-destination等) が有効。
  • ユーザー作成・メール送信のタイミングに注意。アドレス有効化を確認してから関連メールを送信するフローが望ましい。

Discussion