Amazon-Simple-Email-Service-SES

Amazon SES でのメール送信ログを表示する

Amazon SES でのメール送信ログを表示する

こんにちは。SRE 課の栩野です。

先日、Amazon SES からのメールを正常に配信することが出来ない事象があり
失敗の原因を特定するため、メールの送信ログを可視化する設定を行ってみたので
その設定方法を今回ブログのネタにします。

以下のサイトと動画を参考にしています。

Amazon SES で E メール送信履歴を表示するにはどうすればよいですか ?
Amazon SES でメールの送信履歴を保存する方法を教えてください。(動画)

送信ログを表示するための設定

それでは、実際にメールの送信ログを可視化するための設定手順を説明していきます。
Amazon SES には既にドメインもしくはメールアドレスの設定は完了している前提で進めていきます。

Amazon SES 単体ではメールの送信ログを確認する方法が提供されていないため
今回ログの保存先に Amazon Elasticsearch Service を使い、ログの配信には
Amazon Kinesis Data Firehose といったサービスを使っていきます。

Amazon Elasticsearch Service の作成

まずは Amazon SES の送信ログを保存するための Elasticsearch を作成していきます。
以下の手順で作成していきます。

マネージメントコンソールから Amazon Elasticsearch Service のサービスコンソールに移動し
[新しいドメインの作成]をクリックします。

[Step 1: デプロイタイプの選択] でデプロイタイプは[開発およびテスト]を選択し
バージョンは(latest)がついた最新バージョンを選択します。

[Step 2: ドメインの設定] でドメイン名には任意の名前を入力します。
今回は[ses-logs]と入力し、インスタンスタイプは費用の安い[t3.small.elasticsearch]
を選択し、ノード数は[1]で設定します。その他はデフォルトのまま[次へ]をクリックします。

[Step 3: アクセスとセキュリティの設定] でネットワーク構成を[パブリックアクセス]にし
細かいアクセスコントロールを有効化についたチェックを外します。

アクセスポリシーを[カスタムアクセスポリシー]に設定し、送信ログを確認する際に
接続するアクセス元となる自分の IP アドレスを許可するよう以下画像のように設定します。

その他はデフォルト設定のまま[次へ]をクリックします。

[Step 4: 確認]で全体の設定を確認して、一番下にある[確認]をクリックします。

Amazon Elasticsearch Service の作成までには 10 分ほど時間がかかりますが
作成はこれで完了です。

Amazon Kinesis Data Firehose の作成

次に SES のログを Elasticsearch に配信するための Kinesis Data Firehose の作成していきます。
Amazon Kinesis のサービスコンソールから Kinesis Data Firehose を選択し[配信ストリームの作成]を
クリックします。

[Step 1: Name and source] では Delivery stream name に任意のストリームネームを設定します。
ここでは[ses-stream]で入力します。
Choose a source では[Direct PUT or other sources]に選択が入っていることを確認します。

その他はデフォルトのままで[Next]をクリックします。

[Step 2: Process records] はデフォルトのまま[Next]をクリックします。

[Step 3: Choose a destination] の destination でストリーム先に[Amazon Elasticsearch]を選択します。
Domain の部分では、先ほど作成した Elasticsearch のドメイン名を選択します。
(この時点で作成処理が終わってなければ待ちます。)

Index には任意で名前を付けます。今回は[ses-logs]と入力します。

次に Elasticsearch への配信に失敗したデータを保管するための S3 backup を作成します。
[Failed records only]にチェックをいれ[Create new]をクリックし任意のバケットネームを入力します。
ここでは[ses-failedlog]で作成し、その他はデフォルトで[Next]をクリックします。


[Step 4: Configure settings] ではログを配信するために必要な IAM ロールの作成だけ行います。
Create or update IAM role の部分のボタンを選択し[Next]をクリックします。

[Step 5: Review] で設定内容を確認し[Create delivery stream]をクリックして
Kinesis Data Firehose の作成も完了です。

Amazon SES Configuration Sets の作成

Amazon SES のサービスコンソールから[Configuration Sets]に移動し
[Create Configuration Set]をクリックします。

Configuration Set Name には任意で名前を入力します。
今回は[to-firehose]で作成します。

次に作成した Configuration Set を選択して

Event Destinations タブから Destination の設定を行っていきます。
Add Destination で firehose を選択するとポップアップが表示されるので
設定を入力していきます。

Name は任意で to-firehose と入力し Event types には以下画像の通り
Send、Reject、Delivery、Bounce、Complaint にチェックをいれます。

Stream には先ほど作成した firehose のストリームを選択し、IAM role は
[Let SES make a new role]を選択し、Role name に任意の名前を入力します。
今回は[ses-firehose-role]と入力し、右側にある[Create Role]を選択します。

最後に[Save]をクリックします。

これで全体の設定が完了しました。

メール送信ログの確認

それでは、実際にテストメールを送信してメールの送信ログを確認してみます。

テストメールの送信

Amazon SES の Domains もしくは Email Addresses の画面から登録している
ドメインまたはアドレスを選択して[Send a Test Email]をクリックします。

するとテストメール送信のポップアップ画面が表示されるので
テストメールを作成していきます。

まず[More Options] をクリックして入力項目を増やします。

Email Format は[Formatted]を選択し、From には任意で適当な名前を入力します。

今回 To には SES で用意されているメールシミュレーターを使用します。
正常な配信用のシナリオとして用意されている[success@simulator.amazonses.com]を入力します。

そして Configuration Set には先ほど作成した[to-firehose]の名前を入力します。

Subject と Body には任意の文字列を入力し、入力出来れば[Send Test Email]でメールを送信します。

今回はバウンス用のシナリオも試したいので、同様のやり方で
[bounce@simulator.amazonses.com]宛にもメールを送信してくだささい。

kibana から送信ログの確認

いよいよ SES のメール送信ログを確認します。

Amazon Elasticsearch のサービス画面に移動し、先ほど作成した ses-logs のドメイン名をクリックすると
Kibana の URL 出来上がっているのでクリックします。

すると Welcome to Elastic 画面が表示されるので[Explore on my own]をクリックします。

次に[Discover]をクリックします。

右上の[Create index pattern]をクリックします。

[Step 1 of 2: Define index pattern] では index pattern name に firehose で作成した
index 名を入力します。ここでは[ses-logs*]と入力し[Next Step >]をクリックします。

[Step 2 of 2: Configure settings] では Time field で[mail.timestamp]を選択し
[Create index pattern]をクリックします。

最後にハンバーガーメニューから[Discover]をクリックすると...

無事 SES からのメール送信ログが表示されました!

正常配送のシナリオは eventType が[Delivery]になっており、バウンスのシナリオは[Bounce]になっていることが確認できます。


左側の矢印をクリックすることで、Bounce の詳細まで確認することができます。

あとがき

以上が Amazon SES から送信したメールの送信ログを確認する設定方法でした。

ちなみに、SES から正常に配送出来なかったメールの送信ログを可視化させて調査していた時

「Amazon SES did not send the message to this address because it is on the suppression list for your account」

配信に失敗したログにこのようなメッセージが出力されていました。

これは SES から送信したメールがバウンスされた際、サプレッションリストという
AWS アカウント毎に管理されるリストにバウンスされた宛先のアドレスが登録されるのですが

このリストに載ってしまうと、そのアドレス宛てのメールは配送されなくなってしまい
このようなメッセージが出力されるようになります。

サプレッションリストにアドレスが登録されてしまった際の対応方法は
次回のブログで取り上げようと思います。

以上、最後までありがとうございました。

参考

Amazon SES で E メール送信履歴を表示するにはどうすればよいですか ?

以下動画でも設定方法が紹介されています。
Amazon SES でメールの送信履歴を保存する方法を教えてください。(動画)

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA