AWS SESメールボックスシミュレーターにて、カスタムヘッダや添付ファイル付きのテストEメールを送信する
背景
AWS SESでメール送信環境を構築したときは、合わせて メールが不達になったこと
を検知する仕組みも構築します。 AWS SESから送信したメールでメール不達があまりにも多いと、AWS SESの利用が停止されるためです。
さらに、AWS SESの本番運用を始める前に、メール不達を検知する仕組みの動作確認も大切です。
その動作確認で役立つのが Amazon SES メールボックスシミュレーター
です (以降 シミュレーター
と表記)。
シミュレーターを使用した Amazon SES でのテストメール送信 - Amazon Simple Email Service
シミュレーターには バウンス
や 苦情
などのシナリオが用意されています。
このシナリオを使えば、AWS SES環境のバウンス率・苦情率に影響することなく、メール不達を検知する仕組みの動作確認ができます。
さらに、シナリオとして用意されていないケース、例えば
カスタムメールヘッダ付きのメールを送信し、メールが不達になる
reject
イベントが発生するメールを送信し、メールが不達になる
であっても、シミュレーターを使って動作確認ができます。
この記事では、シナリオとして用意されてないケースに対する、シミュレーターの使い方を記載します。
なお、不達を検知する仕組み 「AWS SESで発生したイベントの通知情報が AWS SES → AWS SNS → AWS SQS
の順で流れていく環境」 は、すでに構築済であるとして、ここでは記載しません。
カスタムメールヘッダ付きのメールを送信し、メールが不達になるケース
まずはこのケースを試してみます。
今回は、「カスタムメールヘッダ X-My-Custom-Header
を含むメールを送信したが、バウンスによりメールが不達になる」ケースをシミュレーターで試してみます。
まずはシミュレーターで以下の設定を行います。
Eメール形式欄では、
Raw
を選択するシナリオ欄では、
バウンス
を選択するメッセージ欄では、以下のようなMIMEメッセージを入力する
参考までに、設定した後のスクリーンショットは以下となります。
以上で準備ができました。
では、シミュレーターの テストEメールの送信
ボタンをクリックしてメールを送信してみましょう。
すると、このメールはバウンスし、AWS SQSへとイベント情報が連携されます。
AWS SQSのコンソールにて確認すると、以下のスクリーンショットのようなメッセージを受信できました。カスタムメールヘッダ X-My-Custom-Header
が含まれています。
reject イベントが発生するメールを送信し、メールが不達になるケース
まず、「 reject
(拒否)イベントとは何か」 から記載します。
rejectイベントについて、AWSドキュメントの記載は以下です。
拒否イベントのテスト
Amazon SES を介して送信するすべてのメッセージでウイルスがスキャンされます。ウイルスを含むメッセージを送信すると、Amazon SES はメッセージを受け入れ、ウイルスを検出して、そのメッセージ全体を拒否します。Amazon SES でメッセージが拒否されると、メッセージの処理が停止され、受取人のメールサーバーへのメッセージ配信は試行されません。次に、拒否イベントが生成されます。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/send-an-email-from-console.html#send-email-simulator
ただ、「実際にウィルスを含むファイルを作成し、AWS SESでそのファイルを添付してメールを送信する」を試すのは色々問題があります。
その問題を避けるため、AWSドキュメントにあるように、AWS SESでは
拒否イベントは、欧州コンピューターウイルス対策研究所(EICAR)テストファイルを使用してテストできます
という方法で reject
イベントの発生をテストできそうです。
しかし、シミュレーターではEICARの内容をそのまま添付することはできません。
以下のドキュメントにあるように、シミュレーターでファイルを添付したい場合、ファイルの中身の文字列を base64
エンコードして メッセージ
欄へ設定する必要があるためです。
MIME の使用 - Amazon SES API v2 を使用した raw E メールの送信 - Amazon Simple Email Service
文字列をbase64エンコードするには、各プログラミング言語のライブラリを使うのが簡単です。
今回はRubyのirbを使って base64
エンコードします。
これでEICARテストファイルは添付できそうです。
では、実際にシミュレーターで送信してみましょう。
今回は、「カスタムメールヘッダ X-My-Custom-Header
があり、かつ、EICARファイルを添付した状態でメールを送信する」ケースをシミュレータで試してみます。
まずはシミュレーターで以下の設定を行います。
Eメール形式欄では、
Raw
を選択するシナリオ欄では、
カスタム
を選択するカスタム受信者欄では、任意の受信可能なメールアドレスを指定する
メッセージ欄では、カスタムメールヘッダと添付ファイルを含んだMIMEメッセージを入力する
ここで、添付ファイルを含むMIMEメッセージをゼロから作るのは手間がかかります。
そこで、AWSドキュメントの MIMEの使用 | Amazon SES API v2 を使用した raw E メールの送信 - Amazon Simple Email Service をベースに
カスタムメールヘッダ
X-My-Custom-Header
を追加元々ある添付ファイルの値を、EICARテストファイルをbase64エンコードした値へと差し替え
という編集を加えて利用します。
具体的には、以下の内容をメッセージ欄へと入力します。
次に、シミュレーターの テストEメールの送信
ボタンをクリックしてメールを送信してみましょう。
すると、このメールの送信時にrejectイベントが発生し、AWS SQSへとイベント情報が連携されます。
AWS SQSのコンソールにて確認すると、以下のスクリーンショットのような
eventTypeが
Reject
カスタムメールヘッダ
X-My-Custom-Header
が含まれる
というメッセージを受信できました。
以上より、シミュレーターのシナリオとして用意されていないケースであっても、シミュレーターで試せると分かりました。
本サイトの更新情報は、Twitterの株式会社プレセナ・ストラテジック・パートナーズエンジニア公式アカウントで発信しています。ご確認ください。
最終更新