Amazon SESのVirtual Deliverability Managerでバウンスメールの送信イベント履歴を確認してみた

Amazon SESのVirtual Deliverability Managerが便利すぎるので、有効化しましょう。
2023.09.25

こんにちは!AWS事業本部のおつまみです。

みなさん、Amazon SES でどのメールがなぜバウンスされたか確認したいなと思ったことはありますか?私はあります。

バウンスメールとは、メールアドレス誤りなどにより正常に配信できなかったメールのことを指します。
Amazon SES を使用する際、バウンス率が一定以上を超えると、Amazon SES の利用が制限されることがあります。
そのため、バウンスメール対策をすることが非常に重要となります。

バウンス率自体は、このようにSESのアカウントダッシュボードからすぐ確認することができます。

しかし、どのメールがなぜバウンスされたか確認するためには追加で下記のような実装をする必要があります。

  • SNSでメール通知にて確認
  • Lambda + CloudWatch Logでログを保管
  • Kinesis + S3でログを保管

そこで今回は有効化するだけで使用できるAmazon SESのVirtual Deliverability Manager(VDM)を使って、バウンスメールの送信イベント履歴を確認してみようと思います。

Amazon SESのVDMとは

Amazon SESのVDMとは、2022年11月のアップデートで追加された新しいコンソールの機能です。

この機能を使用するとダッシュボードを通して E メールの配信率を分析することができ、さらに現在のメール送信設定に対してのレコメンデーションを受けることが出来ます。
さらに、2023年8月のアップデートで一定期間(最長30日)メールログ保持できるようようになっています!
詳細はこちらのブログをご確認ください。

今回はこのメールログ保持の機能を使って、バウンスメールの送信イベント履歴を確認してみようと思います。

やってみた

有効化

Amazon SESのVDMでデフォルトで無効になっているため、有効化する必要があります。
有効化手順はこちらのブログをご確認ください。10秒ほどで完了します。

送信イベントを見てみた

検証のために有効化後、下記の通りメールを送信します。

  • 1通目:正常なアドレス宛
  • 2通目:存在しないアドレス宛
  • 3通目:2通目と同じ存在しないアドレス宛

送信イベントを確認するために、VDMの「ダッシュボード」を選択します。

「ダッシュボード」画面の「メッセージ」タブを選択します。

メールを送信した時間帯を選択し、「Apply」を選択します。

「Delivery event」欄から、正常に配信できたものはDelivery、バウンスメールになったものはPermanent bounceになっていることが確認できます。

他には、以下の情報が確認できます。

  • Recipient:受信アドレス
  • From address:送信元アドレス
  • Subject line:件名
  • Send date:配信日時
  • ISP:Amazon,AmazonSESなどのISP
  • Engagement event:オープンおよびクリックなどのイベント

まずは1通目の正常なアドレス宛に送信したメール詳細を確認します。 メールを選択し、「View details」を選択します。

画面右側に送信したメール詳細が表示されます。 メール詳細は、Message infoEvent historyに分かれています。

Event historyには、メールを送信してからのイベント履歴が表示されています。
上が最新の送信イベントになっているようですね。

1通目の正常なアドレス宛に送信したメールは、SendDeliveryとなっているため、正常にメール配信できたことが確認できます。

次に2通目の存在しないアドレス宛に送信したメールを選択し、「View details」を選択します。

Event historyDiagnostic codeにバウンスメールとなった理由が記載されていました!

smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 https://support.google.com/mail/?p=NoSuchUser j22-20020a05620a411600b0076ef52df469si400343qko.7 - gsmtp (訳:smtp; 550-5.1.1 送信しようとしたメールアカウントは存在しません。受信者のメールアドレスにタイプミスや不要なスペースがないか、550-5.1.1で再確認してみてください。詳細は 550 5.1.1 https://support.google.com/mail/?p=NoSuchUser j22-20020a05620a411600b0076ef52df469si400343qko.7 - gsmtp をご覧ください。)

となっているので、想定通りの理由が記載されていることがわかりました!

ちなみに3通目に存在しないアドレス宛に送信したメールのDiagnostic codeは以下の通りでした。

Amazon SES did not send the message to this address because it is on the suppression list for your account. For more information about removing addresses from the suppression list, see the Amazon SES Developer Guide at https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-email-suppression-list.html (訳:このアドレスはアカウントの抑制リストにあるため、Amazon SESはこのアドレスにメッセージを送信しませんでした。抑制リストからアドレスを削除する方法の詳細については、以下のAmazon SES開発者ガイドを参照してください。)

よって、一度バウンスとなったメールはSuppression list(抑制リスト)に登録されるため、そもそもメール送信を行なっていないようでした。

以上が確認した結果となります。

注意点

Amazon SESのVDMはとても便利な機能なため、今すぐ有効化してほしい!と言いたいのですが、いくつか注意点があるためご紹介します。

多少コストがかかる

VDMを有効化すると、以下のように追加料金が必要となります。

  • 送信メール1000件あたり $0.07
  • AWS コンソール、CLI、または API を使用してVDMの情報にアクセスすると、1,000 クエリごとに$0.0005 (5,000クエリ/月は無料)

料金 - Amazon SES | AWS

Amazon SESでのメールの送信量が少ない環境であれば、そこまで高額にはなりませんが、コストがかかることは注意してください。

保持期間が決まっている

VDMのメッセージは過去 30 日以内に送信したものとなります。 そのため、直近配信したメールイベントをささっと確認できる点は優れていますが、過去送信したメールイベントを見ることはできません。

VDMで確認できない情報もある

VDMでは、Amazon SESへの送信元となるIP利用したSMTPユーザ等の細かい情報は確認できませんでした。 そのため、これらの情報が必要な場合は冒頭でご紹介したログ保管の機能が必要となります。

実装方法はこちらのブログをご参考ください。

  • Lambda + CloudWatch Logでログを保管

  • Kinesis + S3でログを保管

さいごに

今回はAmazon SESのVirtual Deliverability Manager(VDM)を使ってバウンスメールを送信イベント履歴を確認する方法をお伝えしました。

有効化するだけで、送信イベント履歴を確認できるのはすごく便利ですね!
ささっと確認したいときなどにぜひお使いいただければと思います。

最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。

以上、おつまみ(@AWS11077)でした!

参考資料

Virtual Deliverability Manager ダッシュボード - Amazon Simple Email Service

Amazon SES の新機能 Virtual Deliverability Manager を使ってみた | DevelopersIO

[アップデート]Amazon SESのVirtual Deliverability Managerでメール個別の送信イベントが閲覧できるようになりました | DevelopersIO

SESでバウンスメールを確認する方法をいくつか試してみた | DevelopersIO