LoginSignup
0
0

More than 1 year has passed since last update.

Amazon WorkMail でバウンスログを出力して検索してみた

Posted at

はじめに

前回の記事では、Amazon WorkMail を構築したあとに、Web UI を利用したメールの送受信を行いました。メールサーバーを自前で管理運用する必要がなく、AWS 側に負担をオフロードでき、軽減できるメリットがわかりました。

メールを運用する中で、バウンスメールや苦情メールなどを適切に管理運用する必要があります。バウンス率が高くなると、メール送信元が怪しいとインターネット上で評価されるため、健全なメール活動を続けるうえで、バウンス率や苦情率は重要な要素です。WorkMail を利用しているうえで、ログを出力して、バウンスメールなどの管理に活かすことが可能です。

今回は、WorkMail を使ってメール送受信に関するログを CloudWatch Logs に出力して検索をしてみる手順となります。

WorkMail で Log を有効化

WorkMail の画面でログを有効化していきます。デフォルトで無効になっています。

image-20220122154007455.png

default settings を利用して保存を押します。保存期間などを変更したい場合は、カスタムも可能となっています。

  • 出力先のロググループが、/aws/workmail/emailevents/workmail-sugiaws となる
  • ロググループの保存期間が30日となる

image-20220122154121241.png

ログ設定が保存されました

image-20220122154348988.png

正常なメールを送付し、ログを確認

以前の記事で、Outlook からメールを送受信できるようにしました。この環境を使って、メールをおくってみて、その時のログを確認してみましょう。

WorlMail 内のユーザーにメールを送る

image-20220122154802132.png

CloudWatch Logs の画面に移動すると、WorkMail 用のロググループが自動生成されています。

image-20220122160642915.png

Log Stream も自動生成されています。

image-20220122160836815.png

1回のメール送付につき、4個のイベントが記録されています。WorkMail の内部の user001 から user002 に送付しているため、送付と受信の両方でログが記録されている状態です。

image-20220122160939704.png

メールを送信した時の 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 から送付

image-20220122161856885.png

バウンスメールなので、すぐに mailer-daemon よりメールが送付されます。

image-20220122161946061.png

CloudWatch Logs には、新たなログが生成されています。

  • OUTGOING_EMAIL_SUBMITTED : メールの送信リクエストを受け付けたイベント
  • OUTGOING_EMAIL_BOUNCED : メールの送信がバウンスしたときのイベント

image-20220122162153802.png

ログはこんな感じです。

{
    "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 ページを開きます。

image-20220122163428242.png

該当の Log Group を選択します。

image-20220122163513976.png

次の文字列で検索します。OUTGOING_EMAIL_BOUNCED を指定しているのがポイントです。

fields @timestamp, event.destination, event.reason
| sort @timestamp desc
| filter event.eventName = "OUTGOING_EMAIL_BOUNCED"

image-20220122163606945.png

2回バウンスメールが発生していることがわかります。1個の詳細ログを見てみましょう。

image-20220122163707821.png

ログの内容を確認できます。バウンスメールの送信先メールアドレスはログでわかりますが、送信元が不明です。さらにドリルダウンするために、traceid を控えます。

image-20220122164103659.png

以下のクエリーを行います。

fields @timestamp, event.eventName
| sort @timestamp asc
| filter traceId = "d0db181f7cca69cb4269c5723f11b98d"

検索結果を見ると、次の内容を見つけ出すことができ、バウンスメールを適切に管理するための材料を取得できます。

  • メールタイトル
  • timestamp や 検索時のグラフで、おおよその時刻
  • メール送信元アドレス
  • メール送信先アドレス

image-20220122164515173.png

検証を通じてわかったこと

  • WorkMail のログを CloudWatch Logs に出力可能
  • Logs Insights を利用して、バウンスメールのタイプや、ドメインなどの条件を指定した検索が可能
  • ログにはいろいろな情報が含まれる。メールタイトルまではログに出るが、本文はログに出ない。

参考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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0