SESでバウンスした場合に送信元メールアドレスによってバウンス通知先を変える方法

SESのバウンス通知をSNSトピックのサブスクリプションに送信するよう設定し、対応するSNSトピックのサブスクリプションにサブスクリプションフィルターポリシーを設定します。
2023.05.16

困っていた内容

SESでバウンスした場合に、送信元メールアドレスによってバウンス通知先を変えたいのですがどうすればいいですか?

どう対応すればいいの?

結論からお伝えします。 既にSESからメール送信が可能であり、SESのバウンス通知先としてSNSトピックを設定している場合は、設定しているSNSトピックのサブスクリプションのサブスクリプションフィルターポリシーに、本文ベースのポリシーを以下のように設定することで、指定の送信元メールアドレスの場合にのみバウンス通知を配信することができます。

{
  "mail": {
    "source": [
      "<通知を配信したい送信元メールアドレス>"
    ]
  }
}

試してみた

下記の挙動となるように設定します。

  • メールアドレスA(SES)のバウンスは メールアドレスC(SNSトピックのサブスクリプション)で受信する。
  • メールアドレスB(SES)のバウンスは メールアドレスD(SNSトピックのサブスクリプション)で受信する。

SNS側の設定

SNSトピックを作成する

SNSトピック作成で、タイプは「スタンダード」を選択し、名前を入力してトピックを作成します。

SNS トピックにサブスクリプションを作成する

先ほど作成したSNSトピックの「サブスクリプションの作成」から、サブスクリプションを作成します。

プロトコルは「Eメール」とし、エンドポイントに受信可能なメールアドレスを入力します。「サブスクリプションの作成」で登録します。

次に、サブスクリプションフィルターポリシーを設定します。以下のように設定すると、SESからメールアドレス sender@example.com でメール送信しバウンスした場合に、このサブスクリプションで受信することになります。

SES側の設定

検証済みIDを作成する

SESには、検証済みIDとしてドメインとメールアドレスを設定できますが、今回は以下のようにメールアドレスを登録しました。

設定すると指定のメールアドレスに確認メールが届くので、URLをクリックし confirm します。

動作確認のため検証済みIDを2つ登録しました。IDステータスが「検証済み」になっていることを確認します。

SNSトピックをバウンス通知先として設定する

登録した検証済みIDの通知タブの「フィードバック通知」の「編集」から、SNSトピックを設定します。

「バウンスフィードバック」で、先ほど作成した SNSトピックを選び「変更の保存」から保存します。

テストメールを送ってみる

「テスト E メールの送信」ボタンから、テストメールを送ることができます。

シナリオで「バウンス」を選択し、メールアドレスAとBで件名を変えて送ってみました。

メールアドレスAからテストメールを送る

メールアドレスBからテストメールを送る

設定したそれぞれのメールアドレス(SNS トピックのサブクリプション) に届きました。

メールアドレスCで受信

メールアドレスDで受信

参考資料

Amazon SNS バウンス通知の例

シミュレーターを使用した Amazon SES でのテストメール送信