はじめに
前回の記事では、Amazon WorkMail を構築したあとに、Web UI を利用したメールの送受信を行いました。メールサーバーを自前で管理運用する必要がなく、AWS 側に負担をオフロードでき、軽減できるメリットがわかりました。
メールを運用する中で、バウンスメールや苦情メールなどを適切に管理運用する必要があります。バウンス率が高くなると、メール送信元が怪しいとインターネット上で評価されるため、健全なメール活動を続けるうえで、バウンス率や苦情率は重要な要素です。WorkMail を利用しているうえで、ログを出力して、バウンスメールなどの管理に活かすことが可能です。
今回は、WorkMail を使ってメール送受信に関するログを CloudWatch Logs に出力して検索をしてみる手順となります。
WorkMail で Log を有効化
WorkMail の画面でログを有効化していきます。デフォルトで無効になっています。
default settings を利用して保存を押します。保存期間などを変更したい場合は、カスタムも可能となっています。
- 出力先のロググループが、
/aws/workmail/emailevents/workmail-sugiaws
となる - ロググループの保存期間が30日となる
ログ設定が保存されました
正常なメールを送付し、ログを確認
以前の記事で、Outlook からメールを送受信できるようにしました。この環境を使って、メールをおくってみて、その時のログを確認してみましょう。
WorlMail 内のユーザーにメールを送る
CloudWatch Logs の画面に移動すると、WorkMail 用のロググループが自動生成されています。
Log Stream も自動生成されています。
1回のメール送付につき、4個のイベントが記録されています。WorkMail の内部の user001 から user002 に送付しているため、送付と受信の両方でログが記録されている状態です。
- OUTGOING_EMAIL_SUBMITTED : メールの送信リクエストを受け付けたイベント
- OUTGOING_EMAIL_SENT : メールが正常に配信されたイベント
- ORGANIZATION_EMAIL_RECEIVED : WorkMail がメールを受信したイベント
- MAILBOX_EMAIL_DELIVERED : メールボックスにメールが配信されたイベント
- 詳細は Document に記載されています。
メールを送信した時の OUTGOING_EMAIL_SUBMITTED
はこんな感じでログが出力されます。
- 送信元、送信先、メールタイトルが記録されてる
- メール本文は記録されていない
{
"accountId": "xxxxxxxxxxxx",
"organizationId": "m-be3ce98c53314e96bad137a1e9a6a884",
"traceId": "7c0c8c4b91b323ca7b2caf824c1f739a",
"eventTime": 1642834087633,
"event": {
"eventName": "OUTGOING_EMAIL_SUBMITTED",
"from": "user001@workmail.sugiaws.tokyo",
"sender": "",
"recipients": [
"user002@workmail.sugiaws.tokyo"
],
"subject": "WorkMail 内の user002 あてのメール"
}
}
同様にメールを受信したときの ORGANIZATION_EMAIL_RECEIVED
のログはこんな感じです。
- 送信元、送信先、メールタイトルが記録されてる
- メール本文は記録されていない
{
"accountId": "xxxxxxxxxxxx",
"organizationId": "m-be3ce98c53314e96bad137a1e9a6a884",
"traceId": "493088f7f0bd472498d67978658e5670",
"eventTime": 1642834089463,
"event": {
"spamVerdict": "PASS",
"recipients": [
"user002@workmail.sugiaws.tokyo"
],
"subject": "WorkMail 内の user002 あてのメール",
"messageId": "<0100017e808ad0c6-c4e66064-51bf-4ab1-b392-0954707468a4-000000@email.amazonses.com>",
"eventName": "ORGANIZATION_EMAIL_RECEIVED",
"from": "user001@workmail.sugiaws.tokyo",
"dmarcVerdict": "PASS",
"spfVerdict": "PASS",
"messageTimestamp": 1642834088996,
"dkimVerdict": "PASS"
}
}
バウンスメールを送付し、ログを確認
AWS にはバウンスメールをシミュレートしてくれるメールアドレスを用意してくれており、これを使ってテストをします。メールアドレスは bounce@simulator.amazonses.com
です。
Document
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/send-email-simulator.html
Outlook から送付
バウンスメールなので、すぐに mailer-daemon よりメールが送付されます。
CloudWatch Logs には、新たなログが生成されています。
- OUTGOING_EMAIL_SUBMITTED : メールの送信リクエストを受け付けたイベント
- OUTGOING_EMAIL_BOUNCED : メールの送信がバウンスしたときのイベント
ログはこんな感じです。
{
"accountId": "xxxxxxxx",
"organizationId": "m-be3ce98c53314e96bad137a1e9a6a884",
"traceId": "d0db181f7cca69cb4269c5723f11b98d",
"eventTime": 1642835944318,
"event": {
"eventName": "OUTGOING_EMAIL_SUBMITTED",
"from": "user001@workmail.sugiaws.tokyo",
"sender": "",
"recipients": [
"bounce@simulator.amazonses.com"
],
"subject": "バウンスメールタイトル"
}
}
もうひとつ
{
"accountId": "xxxxxxxxxxxx",
"organizationId": "m-be3ce98c53314e96bad137a1e9a6a884",
"traceId": "d0db181f7cca69cb4269c5723f11b98d",
"eventTime": 1642835947603,
"event": {
"bouncedRecipient": {
"status": "5.1.1",
"action": "failed",
"emailAddress": "bounce@simulator.amazonses.com",
"reason": "smtp; 550 5.1.1 user unknown"
},
"eventName": "OUTGOING_EMAIL_BOUNCED"
}
}
バウンスメールをログから検索して見つける
CloudWatch Logs で出力したログは、CloudWatch Logs Insights の機能を使うことで、わかりやすく各種条件を付けた検索が出来ます。例えば、バウンスメールだけに限定した検索などが可能です。Document にいくつかの検索サンプルがあり、気になる方はご覧ください。
それでは、バウンスメールで検索をしてみます。Logs Insights ページを開きます。
該当の Log Group を選択します。
次の文字列で検索します。OUTGOING_EMAIL_BOUNCED
を指定しているのがポイントです。
fields @timestamp, event.destination, event.reason
| sort @timestamp desc
| filter event.eventName = "OUTGOING_EMAIL_BOUNCED"
2回バウンスメールが発生していることがわかります。1個の詳細ログを見てみましょう。
ログの内容を確認できます。バウンスメールの送信先メールアドレスはログでわかりますが、送信元が不明です。さらにドリルダウンするために、traceid を控えます。
以下のクエリーを行います。
fields @timestamp, event.eventName
| sort @timestamp asc
| filter traceId = "d0db181f7cca69cb4269c5723f11b98d"
検索結果を見ると、次の内容を見つけ出すことができ、バウンスメールを適切に管理するための材料を取得できます。
- メールタイトル
- timestamp や 検索時のグラフで、おおよその時刻
- メール送信元アドレス
- メール送信先アドレス
検証を通じてわかったこと
- WorkMail のログを CloudWatch Logs に出力可能
- Logs Insights を利用して、バウンスメールのタイプや、ドメインなどの条件を指定した検索が可能
- ログにはいろいろな情報が含まれる。メールタイトルまではログに出るが、本文はログに出ない。
- 本文まで含めて、メールの監査を実施したい場合は、E メールジャーナリングが利用できそうかも?後で確認したい
- https://docs.aws.amazon.com/ja_jp/workmail/latest/adminguide/journaling_overview.html
参考URL
メッセージの追跡
https://docs.aws.amazon.com/ja_jp/workmail/latest/adminguide/tracking.html
Amazon CloudWatch による Amazon WorkMail のモニタリング
https://docs.aws.amazon.com/ja_jp/workmail/latest/adminguide/monitoring-workmail-cloudwatch.html