View a markdown version of this page

Mail Manager 記錄 - Amazon Simple Email Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Mail Manager 記錄

Mail Manager 記錄可讓您詳細了解 Mail Manager 操作。記錄功能會根據您設定的規則集和規則,透過訊息處理來追蹤從輸入端點的初始接收的訊息流程。

Mail Manager 提供下列資源的記錄:

  • 輸入端點

  • 規則集

Mail Manager 會使用 Amazon CloudWatch Logs 服務交付日誌,而日誌可以交付到下列任何目的地:CloudWatch Logs、Amazon S3 或 Amazon Data Firehose。

設定 Mail Manager 日誌交付

工作日誌交付包含三個元素:

  • DeliverySource – 代表傳送日誌之資源的邏輯物件,可以是輸入端點或規則集。

  • DeliveryDestination – 代表實際交付目的地 (CloudWatch Logs、S3 或 Firehose) 的邏輯物件。

  • 交付 – 將交付來源連接到交付目的地。

本節將說明如何建立這些物件,以及使用 Mail Manager 記錄所需的必要許可。

先決條件

設定 Mail Manager 記錄之前,請確定:

  1. 您已建立傳入端點或規則集。

  2. 您擁有必要的 CloudWatch Logs 和 SES Mail Manager 許可,可將日誌從 Mail Manager 資源提供給其交付目的地。

所需的許可

您將需要如 Amazon CloudWatch Logs 使用者指南的 日誌記錄 一節中所述,設定已佈建的日誌許可,該許可需要額外許可 【V2】,並套用對應至交付目的地的許可:

此外,Mail Manager 需要下列使用者許可才能設定日誌交付:

  • ses:AllowVendedLogDeliveryForResource – 允許 Mail Manager 代表您將日誌提供給 CloudWatch Logs 以取得特定資源的必要項目,如範例所示:

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. 在 https://https://console.aws.amazon.com/ses/ 開啟 SES 主控台。

  2. 在郵件管理員下的導覽窗格中,選擇傳入端點或規則集,然後選取您要啟用記錄的特定資源。

  3. 在資源的詳細資訊頁面上,展開新增日誌交付,然後選擇交付至 CloudWatch Logs、S3 或 Firehose。

  4. 在新增交付至您選擇的目的地對話方塊中,依照提示設定目的地類型特定的日誌交付選項。

  5. (選用) 展開其他設定,以自訂記錄、輸出格式、欄位分隔符號和其他特定於目的地類型的參數。

使用 CloudWatch Logs API 啟用記錄

若要使用 CloudWatch Logs API 啟用 Mail Manager 資源的記錄,您需要:

  1. 使用 建立 DeliverySourcePutDeliverySource。

  2. 使用 建立 DeliveryDestinationPutDeliveryDestination。

  3. 使用 ,透過完全配對一個交付來源和一個交付目的地來建立交付CreateDelivery。

您可以在 Amazon CloudWatch Logs 使用者指南的 日誌中,檢視 IAM 角色和許可政策的範例,其中包含您特定日誌目的地所需的所有必要許可,這些許可需要額外許可 【V2】 區段,並遵循日誌目的地的 IAM 角色和許可政策範例,包括允許更新特定日誌目的地資源,例如 CloudWatch Logs、S3 或 Firehose。

注意

建立 DeliverySource 時, resourceArn 可以是傳入端點 ARN 或規則集 ARN。根據 DeliverySource, logType可以如下所示:

  • 輸入端點 ARN – APPLICATION_LOGS或 TRAFFIC_POLICY_DEBUG_LOGS

  • 規則集 ARN – APPLICATION_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" | "MTLS", "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": "", // Only applies to MTLS Ingress endpoint "client_certificate_details": { "common_names": ["mail.example.com"], "serial_number": "0A:DE:EB:89:42:FB:1C:67", "subject_alternative_names": ["mail.example.com", "smtp.example.com"], "issuer": "CN=Example CA,O=Example Corp,C=US", "not_before": "2025-01-15T00:00:00Z", "not_after": "2026-01-15T23:59:59Z" }, "trust_store_monitoring": { "ca_invalid_or_near_expiry": [ { "subject": "CN=Example CA,O=Example Corp,C=US", "not_before": "2023-06-01T00:00:00Z", "not_after": "2025-05-15T23:59:59Z" }, ... ], "crl_invalid_or_near_expiry": [ { "issuer": "CN=Example CA,O=Example Corp,C=US", "this_update": "2025-03-01T00:00:00Z", "next_update": "2025-04-01T00:00:00Z" }, ... ] } } }
注意

日誌只會針對輸入端點接受的訊息建立。拒絕所有傳入訊息的傳入端點將不會發佈任何應用程式日誌。

注意

trust_store_monitoring 清單 (ca_invalid_or_near_expiry 和 crl_invalid_or_near_expiry) 每個最多傳回 10 個項目。「即將到期」表示憑證或 CRL 會在 90 天內過期。

CloudWatch Logs Insights 查詢範例

從 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 Logs Insights 查詢範例

從 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 Logs Insights 查詢範例

查詢特定訊息 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