本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
邮件管理器日志记录提供邮件管理器操作的详细可见性。日志记录功能可根据您配置的规则集和规则,跟踪从最初在入口端点收到消息到消息处理的消息流。
邮件管理器提供以下资源的日志记录:
-
入口端点
-
规则集
Mail Manager 使用亚马逊 CloudWatch 日志服务传送日志,日志可以传送到以下任何目的地:日CloudWatch 志、Amazon S3 或 Amazon Data Firehose。
设置邮件管理器日志传送
工作日志传输由三个元素组成:
-
DeliverySource— 表示发送日志的资源的逻辑对象,可以是入口端点或规则集。
-
DeliveryDestination— 表示实际传送目标的逻辑对象(CloudWatch 日志、S3 或 Firehose)。
-
交付-将传送源连接到传送目的地。
本节将说明如何创建这些对象以及使用 Mail Manager 日志记录所需的必要权限。
先决条件
在设置 Mail Manager 日志记录之前,请确保:
-
您已经创建了 Ingress 端点或规则集。
-
您拥有必要的 CloudWatch 日志和 SES Mail Manager 权限,可以将邮件管理器资源中的日志发送到其送达目的地。
所需的权限
您需要按照《A mazon Logs 用户指南》的 “需要额外权限的日志记录 [V2]” 部分中的说明设置销售 CloudWatch 日志权限,并应用与您的配送目的地相对应的权限:
此外,Mail Manager 需要以下用户权限才能配置日志传送:
-
ses:AllowVendedLogDeliveryForResource
— 需要允许 Mail Manager 代表你将 CloudWatch 日志发送到特定资源的日志,如示例所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSesMailManagerLogDelivery",
"Effect": "Allow",
"Action": [
"ses:AllowVendedLogDeliveryForResource"
],
"Resource" [
"arn:aws:ses:us-east-1:1234567890:mailmanager-ingress-point/inp-xxxxx",
"arn:aws:ses:us-east-1:1234567890:mailmanager-rule-set/rs-xxxx"
]
}
]
}
在 SES 控制台中启用日志记录
要使用控制台启用 Mail Manager 资源的日志记录,请执行以下操作:
-
打开 SES 控制台,网址为https://console.aws.amazon.com/ses/
。 -
在 Mail Manager 下的导航窗格中,选择入口端点或规则集,然后选择要启用日志记录的特定资源。
-
在资源的详细信息页面上,展开添加日志传输,然后选择传送到CloudWatch 日志、S3 或 Firehose。
-
在所选目标的添加投递到对话框中,按照提示配置特定于目标类型的日志传送选项。
-
(可选)展开 “其他设置”,自定义记录字段、输出格式、字段分隔符和其他特定于目标类型的参数。
使用 CloudWatch 日志 API 启用日志记录
要使用 CloudWatch 日志 API 为 Mail Manager 资源启用日志记录,您需要:
-
使用创建交付来源
PutDeliverySource
。 -
使用创建配送目的地
PutDeliveryDestination
。 -
通过使用将一个配送来源和一个配送目的地精确配对来创建配送
CreateDelivery
。
您可以在《A mazon Logs 用户指南》的 “需要额外权限的日志记录 [V2]” 部分中查看包含特定日志目标所需的所有权限的 IAM 角色和权限策略示例,并按照 CloudWatch 日志目标的 IAM 角色和权限策略示例进行操作,包括允许更新您的特定日志目标资源,例如CloudWatch 日志、S3 或 Fireh os e。
注意
创建时 DeliverySource,resourceArn
应为入口端点 ARN 或规则集 ARN,SES Mail Manager 日志必须设置为。logType
APPLICATION_LOGS
解释日志
在 Mail Manager 处理收到的邮件时,可以使用这些日志进一步了解这些邮件的流向。
以下部分详细介绍了每种资源的不同日志字段。
入口端点日志
日志是按每条消息生成的。
{
"resource_arn": "arn:aws:ses:us-east-1:1234567890:mailmanager-ingress-point/inp-xxxxx",
"event_timestamp": 1728562395042,
"ingress_point_type": "OPEN" | "AUTH",
"ingress_point_name": "MyIngressPoint",
"message_id": "0000llcki1jmushh817gr586f963a5inhkvnh81",
"message_size_bytes": 100000,
"rule_set_id": "rs-xxxx",
"sender_ip_address": "1.2.3.4",
"smtp_mail_from": "someone@domain.com",
"smtp_helo": "domain.com",
"tls_protocol": "TLSv1.2",
"tls_cipher_suite": "TLS_AES_256_GCM_SHA384",
"recipients": ["me@mydomain.com", "you@mydomain.com", "they@mydomain.com"],
"ingress_point_metadata": { // only applies to AUTH Ingress Endpoint
"password_version": "",
"secrets_manager_arn": ""
}
}
注意
仅为入口端点接受的消息创建日志。拒绝所有传入消息的入口端点不会发布任何日志。
CloudWatch 日志见解查询示例
查询来自 sender@domain.com 的消息:
fields @timestamp, @message, @logStream, @log
| filter smtp_mail_from like /sender@domain.com/
| sort @timestamp desc
| limit 10000
查询大小大于 5000 字节的消息:
fields @timestamp, @message, @logStream, @log
| filter message_size_bytes > 5000
| sort @timestamp desc
| limit 10000
规则集日志
日志是按每个操作的每条消息生成的。这意味着,每当规则集中的规则中的操作处理消息时,都会生成一条日志记录:
{
"resource_arn": "arn:aws:ses:us-east-1:1234567890:mailmanager-rule-set/rs-xxxx",
"event_timestamp": 1732298258254,
"message_id": "0000llcki1jmushh817gr586f963a5inhkvnh81",
"rule_set_name": "MyRuleSet",
"rule_name": "MyRule",
"rule_index": 1,
"recipients_matched": ["recipient1@domain.com", "recipient2@domain.com"],
"action_metadata": {
"action_name": "WRITE_TO_S3" | "DROP" | "RELAY" | "DELIVER_TO_MAILBOX" | etc.,
"action_index": 2,
"action_status": "SUCCESS" | "FAILURE" | "IN_PROGRESS",
"action_failure": "Access denied"
}
}
-
recipients_matched
— 与正在执行操作的规则条件相匹配的收件人。 -
rule_index
— 规则在规则集中的顺序。 -
action_index
— 规则中的动作顺序。 -
action_status
— 表示对给定消息执行操作的结果。 -
action_failure
— 表示操作的失败详细信息(仅在操作失败时适用)。例如,如果提供的角色没有足够的权限来执行操作。
此外,如果一条消息的规则条件不匹配,即该消息未被规则处理,则会发布一条日志,表明该消息已由规则集处理,但未对其执行任何操作:
{
"resource_arn": "arn:aws:ses:us-east-1:1234567890:mailmanager-rule-set/rs-xxxx",
"event_timestamp": 1732298258254,
"message_id": "0000llcki1jmushh817gr586f963a5inhkvnh81",
"rule_set_name": "MyRuleSet",
"rule_name": "MyRule",
"rule_index": 1,
"recipients_matched": [],
}
CloudWatch 日志见解查询示例
查询特定的消息 ID(显示通过规则集的消息流):
fields @timestamp, @message, @logStream, @log
| filter message_id = 'message-id-123'
| sort @timestamp desc
| limit 10000
查询失败的 WRITE_TO_S3 操作:
fields @timestamp, @message, @logStream, @log
| filter action_metadata.action_name = 'WRITE_TO_S3'
and action_metadata.action_status = 'FAILURE'
| sort @timestamp desc
| limit 10000
查询未被规则集的第二条规则处理的消息(邮件不符合规则的条件):
fields @timestamp, @message, @logStream, @log
| filter recipients_matched = '[]'
and rule_index = 2
| sort @timestamp desc
| limit 10000