SES のバウンス、苦情、拒否イベントをシミュレートする
シミュレーターアドレスを使って、実際の受信者にメールを送ることなく SES のバウンス、苦情、拒否通知をトリガーする方法を紹介します。
Amazon SES には、実際の受信者へメールを送信せずに、アプリケーションによるバウンス、苦情、拒否通知の処理をテストできるシミュレーターアドレスが用意されています。詳細は公式ドキュメントを参照してください。
前提条件
始める前に、以下を完了させてください。
- Amazon SES でメールアドレスを検証する。
- 登録したメールアドレスに対して Email Feedback Forwarding を有効化する。

バウンスのシミュレーション
バウンスは以下でシミュレートできます。
aws ses send-email \ --from <YOUR_EMAIL> \ --subject test \ --text test--from オプションで指定したアドレスに、バウンスが発生したことを示すメールが届きます。

苦情のシミュレーション
苦情も同様のパターンで、異なるシミュレーターアドレスを指定します。
aws ses send-email \ --from <YOUR_EMAIL> \ --subject test \ --text test苦情を示すメールが --from アドレスに送信されます。

拒否のシミュレーション
拒否をシミュレートするには、EICAR テストファイルを添付したメールを送信する必要があります。SES のウイルススキャンがこれを検知します。
FROM=<YOUR_EMAIL>MESSAGE='{"Data": "From: $FROM\nTo: $FROM\nSubject: test\nMIME-Version: 1.0\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\n\n--NextPart\nContent-Type: text/plain\n\ntest\n\n--NextPart\nContent-Type: text/plain;\nContent-Disposition: attachment; filename=\"sample.txt\"\n\nX5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\n\n--NextPart--"}'MESSAGE=$(echo $MESSAGE | sed "s/\$FROM/$FROM/g")aws ses send-raw-email \ --cli-binary-format raw-in-base64-out \ --raw-message "$MESSAGE"FROM アドレスに拒否通知メールが届きます。

まとめ
SES のメールボックスシミュレーターを使うと、実際の受信者へメールを送信せずに、バウンス、苦情、拒否通知を発生させられます。
[email protected] と [email protected] は、通常の send-email の呼び出しで利用できるため、開発中に各通知の処理を確認できます。
拒否をテストするには、EICAR テストファイルを添付した MIME ペイロードを send-raw-email で送信します。バウンス処理と同じコードでウイルススキャンによる拒否も扱えると仮定せず、この経路は個別にテストしてください。
Related posts
Cognito User Pools と OIDC で Slack サインインを実装する
Cognito user pool を OIDC 経由で Slack と連携させ、"Sign in with Slack" を Amplify で Next.js アプリケーションに組み込みます。
Lambda Web Adapter で FastAPI を AWS Lambda にデプロイする
FastAPI で書いた API バックエンドをコンテナ化し、Lambda Web Adapter と AWS CDK を使って単一の Lambda 関数へデプロイします。
API Gateway WebSocket:モック統合の実装
バックエンドの Lambda を使わず、モック統合のみで API Gateway WebSocket API を構築し、あらかじめ用意したレスポンスを返します。
CloudFront 署名付き URL 経由で S3 にアップロードする
CloudFront の署名付き URL を使い、独自ドメイン経由で S3 にアップロードする方法を紹介します。S3 の署名付き URL を直接使えない場合に有用です。
AWS EventBridge Scheduler:スケジュールに沿って EC2 を起動・停止する
Lambda を介さず、EventBridge Scheduler から EC2 API を直接呼び出し、cron スケジュールに従って EC2 インスタンスを起動・停止します。
