将 CloudWatch Insights 与 Amazon WorkMail 结合使用
如果您已在 Amazon WorkMail 控制台中开启电子邮件事件日志记录,或者启用了向 CloudWatch Logs 传送审计日志,则可以使用 Amazon CloudWatch Logs Insights 来查询事件日志。有关启用电子邮件事件日志记录的更多信息,请参阅启用电子邮件事件日志记录。有关 CloudWatch Logs Insights 的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的使用 CloudWatch Logs Insights 分析日志数据。
以下示例演示如何查询 CloudWatch 日志中的常见电子邮件事件。您在 CloudWatch 控制台中运行这些查询。有关如何运行这些查询的说明,请参阅《Amazon CloudWatch Logs 用户指南》中的教程:运行和修改示例查询。
例 查看为何用户 B 没有收到用户 A 发送的电子邮件。
以下代码示例演示了如何查询用户 A 向用户 B 发送的传出电子邮件(按时间戳排序)。
fields @timestamp, traceId | sort @timestamp asc | filter (event.from like /(?i)userA@example.com/ and event.eventName = "OUTGOING_EMAIL_SUBMITTED" and event.recipients.0 like /(?i)userB@example.com/)
这将返回已发送的邮件和跟踪 ID。使用以下代码示例中的跟踪 ID 查询已发送邮件的事件日志。
fields @timestamp, event.eventName | sort @timestamp asc | filter traceId = "$TRACEID"
这将返回电子邮件 ID 和电子邮件事件。OUTGOING_EMAIL_SENT 表示电子邮件已发送。OUTGOING_EMAIL_BOUNCED 表示电子邮件被退回。要了解是否收到了电子邮件,请使用以下代码示例中的邮件 ID 进行查询。
fields @timestamp, event.eventName | sort @timestamp asc | filter event.messageId like "$MESSAGEID"
这还应该返回收到的邮件,因为它具有相同的邮件 ID。使用以下代码示例中的跟踪 ID 可查询送达情况。
fields @timestamp, event.eventName | sort @timestamp asc | filter traceId = "$TRACEID"
这将返回传送操作以及任何合适的规则操作。
例 查看从某个用户或域收到的所有邮件
以下代码示例演示了如何查询从指定用户接收的所有邮件。
fields @timestamp, event.eventName | sort @timestamp asc | filter (event.from like /(?i)user@example.com/ and event.eventName = "ORGANIZATION_EMAIL_RECEIVED")
以下代码示例演示了如何查询从指定域接收的所有邮件。
fields @timestamp, event.eventName | sort @timestamp asc | filter (event.from like "example.com" and event.eventName = "ORGANIZATION_EMAIL_RECEIVED")
例 查看被退回电子邮件的发件人
以下代码示例演示了如何查询被退回的传出电子邮件,并返回了退回的原因。
fields @timestamp, event.destination, event.reason | sort @timestamp desc | filter event.eventName = "OUTGOING_EMAIL_BOUNCED"
以下代码示例演示了如何查询退回的传入电子邮件。它还会返回退回邮件的收件人的电子邮件地址和退回的原因。
fields @timestamp, event.bouncedRecipient.emailAddress, event.bouncedRecipient.reason, event.bouncedRecipient.status | sort @timestamp desc | filter event.eventName = "INCOMING_EMAIL_BOUNCED"
例 查看正在发送垃圾邮件的域
以下代码示例演示了如何查询您组织中正在接收垃圾邮件的收件人。
stats count(*) as c by event.recipients.0 | filter (event.eventName = "ORGANIZATION_EMAIL_RECEIVED" and event.spamVerdict = "FAIL") | sort c desc
以下代码示例演示了如何查询垃圾电子邮件的发件人。
fields @timestamp, event.recipients.0, event.sender, event.from | sort @timestamp asc | filter (event.spamVerdict = "FAIL")
例 查看为何电子邮件会发送到收件人的垃圾邮件文件夹
以下代码示例演示了如何查询被认定为垃圾邮件的电子邮件(按主题进行筛选)。
fields @timestamp, event.recipients.0, event.spamVerdict, event.spfVerdict, event.dkimVerdict, event.dmarcVerdict | sort @timestamp asc | filter event.subject like /(?i)$SUBJECT/ and event.eventName = "ORGANIZATION_EMAIL_RECEIVED"
您还可以通过电子邮件跟踪 ID 进行查询以查看该电子邮件的所有事件。
例 查看与电子邮件流规则匹配的电子邮件
以下代码示例演示了如何查询与出站电子邮件流规则匹配的电子邮件。
fields @timestamp, event.ruleName, event.ruleActions.0.action | sort @timestamp desc | filter event.ruleType = "OUTBOUND_RULE"
以下代码示例演示了如何查询与入站电子邮件流规则匹配的电子邮件。
fields @timestamp, event.ruleName, event.ruleActions.0.action, event.ruleActions.0.recipients.0 | sort @timestamp desc | filter event.ruleType = "INBOUND_RULE"
例 查看您的组织接收或发送的电子邮件数量
以下代码示例演示了如何查询您组织中的每个收件人接收的电子邮件数。
stats count(*) as c by event.recipient | filter event.eventName = "MAILBOX_EMAIL_DELIVERED" | sort c desc
以下代码示例演示了如何查询您组织中的每个发件人发送的电子邮件数。
stats count(*) as c by event.from | filter event.eventName = "OUTGOING_EMAIL_SUBMITTED" | sort c desc