Mail Manager 日志记录 - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Mail Manager 日志记录

Mail Manager 日志记录为您的 Mail Manager 操作提供详细的可见性。日志记录功能跟踪消息流,从在入口端点初始接收到基于您配置的规则集和规则进行消息处理。

Mail Manager 为以下资源提供日志记录:

  • 入口端点

  • 规则集

Mail Manager 使用亚马逊 CloudWatch 日志服务传送日志,日志可以传送到以下任何目的地:日CloudWatch 志Amazon S3 或 Amazon Data Firehose

设置 Mail Manager 日志交付

工作日志传输由三个元素组成:

  • DeliverySource— 表示发送日志的资源的逻辑对象,可以是入口端点或规则集。

  • DeliveryDestination— 表示实际传送目标的逻辑对象(CloudWatch 日志、S3 或 Firehose)。

  • Delivery:将交付源连接到交付目的地。

本节将解释如何创建这些对象以及使用 Mail Manager 日志记录所需的必要权限。

先决条件

在设置 Mail Manager 日志记录之前,请确保:

  1. 您已创建入口端点规则集

  2. 您拥有必要的 CloudWatch 日志和 SES Mail Manager 权限,可以将邮件管理器资源中的日志发送到其送达目的地。

所需的权限

您需要按照《A mazon Logs 用户指南》的 “需要额外权限的日志记录 [V2]” 部分中的说明设置销售 CloudWatch 日志权限,并应用与您的配送目的地相对应的权限:

此外,Mail Manager 需要以下用户权限来配置日志交付:

  • ses:AllowVendedLogDeliveryForResource— 需要允许 Mail Manager 代表你将 CloudWatch 日志发送到特定资源的日志,如示例所示:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowSesMailManagerLogDelivery", "Effect": "Allow", "Action": [ "ses:AllowVendedLogDeliveryForResource" ], "Resource": [ "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/inp-xxxxx", "arn:aws:ses:us-east-1:111122223333:mailmanager-rule-set/rs-xxxx" ] } ] }

在 SES 控制台中启用日志记录

要使用控制台为 Mail Manager 资源启用日志记录,请执行以下操作:

  1. 打开 SES 控制台,网址为https://console.aws.amazon.com/ses/

  2. Mail Manager 下的导航窗格中,选择入口端点规则集,并选择要启用日志记录的特定资源。

  3. 在资源的详细信息页面上,展开添加日志传输,然后选择传送CloudWatch 日志S3Firehose

  4. 在所选目的地的添加交付到对话框中,按照提示配置特定于目的地类型的日志交付选项。

  5. (可选)展开其他设置以自定义记录的字段、输出格式、字段分隔符和特定于目的地类型的其他参数。

使用 CloudWatch 日志 API 启用日志记录

要使用 CloudWatch 日志 API 为 Mail Manager 资源启用日志记录,您需要:

  1. 使用创 DeliverySource 建 PutDeliverySource.

  2. 使用创 DeliveryDestination 建 PutDeliveryDestination.

  3. 通过使用 CreateDelivery 将恰好一个交付源和一个交付目的地配对来创建 Delivery。

您可以在《A mazon Logs 用户指南》的 “需要额外权限的日志记录 [V2]” 部分中查看包含特定日志目标所需的所有权限的 IAM 角色和权限策略示例,并按照 CloudWatch 日志目标的 IAM 角色和权限策略示例进行操作,包括允许更新您的特定日志目标资源,例如CloudWatch 日志S3 或 Fireh os e。

注意

创建时 DeliverySource,resourceArn可以是入口端点 ARN 或规则集 ARN。视情况而定 DeliverySource,logType可能如下所示:

  • 入口端点 ARNAPPLICATION_LOGSTRAFFIC_POLICY_DEBUG_LOGS

  • 规则集 ARNAPPLICATION_LOGS

解释日志

日志可用于在接收到的消息被 Mail Manager 处理时,深入了解其流程。

以下示例详细说明了每种资源和日志类型的日志的不同字段:

入口端点日志——APPLICATION_LOGS

日志按消息生成。

{ "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

入口端点日志——TRAFFIC_POLICY_DEBUG_LOGS

日志按收件人生成。

{ "resource_arn": "arn:aws:ses:us-east-1:1234567890:mailmanager-ingress-point/inp-xxxxx", "event_timestamp": 1728562395042, "ingress_point_type": "OPEN" | "AUTH", "ingress_point_id": "inp-xxxx", "ingress_point_session_id": "xxxx", "traffic_policy_id": "tp-xxxx", "traffic_policy_evaluation": [ // Array of policy evaluations { "action": "ALLOW" | "DENY", "conditions": [ // Array of conditions { "expression": { "attribute": "RECIPIENT", "operator": "CONTAINS", "value": ["@domain.com", "@mydomain.com"] }, "expressionResult": true | false }], "policyStatementMatched": true | false }, // If no policy statement match then default action will be applied { "action": "ALLOW" | "DENY", "policyStatementMatched": true, "type": "DefaultAction", "scope": "Recipient" }, // Only present if the email was too large according to the traffic policy { "action": "DENY", "allowedMessageSize": 41943040, "receivedMessageSize": 42495384, "scope": "Data" } ], "traffic_policy_verdict": "REJECT" | "ACCEPT", "sender_ip_address": "1.2.3.4", "smtp_mail_from": "someone@domain.com", "smtp_helo": "domain.com", "tls_protocol": "TLSv1.2", "recipient": "me@mydomain.com", "tls_cipher_suite": "TLS_AES_256_GCM_SHA384" }
注意
  • 为所有在入口端点被流量策略评估的消息创建日志,无论它们是被接受还是被拒绝。

  • 属于同一消息(在同一 SMTP 会话内)的所有收件人流量策略评估共享一个共同的 ingress_point_session_id。此 ID 用作关联标识符,因为 message_id 在消息接受之前不可用。

  • traffic_policy_evaluation 内容根据您的配置而变化,并且可能在判定确定后提前终止。

CloudWatch 日志见解查询示例

查询来自 sender@domain.com 的消息:

fields @timestamp, @message, @logStream, @log | filter smtp_mail_from like /sender@domain.com/ | sort @timestamp desc | limit 10000

查询属于特定 ingress_point_session_id 的消息:

fields @timestamp, @message, @logStream, @log | filter ingress_point_session_id = 'xxx' | sort @timestamp desc | limit 10000

查询被拒绝的消息:

fields @timestamp, @message, @logStream, @log | filter traffic_policy_verdict = 'REJECT' | sort @timestamp desc | limit 10000

规则集日志:APPLICATION_LOGS

日志按每个操作的每个消息生成。这意味着每次消息被规则集中的某个规则的操作处理时,都会生成一条日志记录:

{ "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 日志见解查询示例

查询特定 message-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