本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 記錄之前,請確定:
所需的許可
您將需要如 Amazon CloudWatch Logs 使用者指南的 記錄 中所述,設定 提供的日誌許可,該記錄需要額外的許可 【V2】 區段,並套用對應至您交付目的地的許可:
此外,Mail Manager 需要下列使用者許可才能設定日誌交付:
-
ses:AllowVendedLogDeliveryForResource
– 允許 Mail Manager 代表您將日誌提供給 CloudWatch Logs 以取得特定資源的必要項目,如範例所示:
{
"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/
://。 -
在郵件管理員下的導覽窗格中,選擇傳入端點或規則集,然後選取您要啟用記錄的特定資源。
-
在資源的詳細資訊頁面上,展開新增日誌交付,然後選擇交付至 CloudWatch Logs、S3 或 Firehose。
-
在新增交付至您選擇的目的地對話方塊中,依照提示設定目的地類型特定的日誌交付選項。
-
(選用) 展開其他設定,以自訂記錄、輸出格式、欄位分隔符號,以及目的地類型特定的其他參數。
使用 CloudWatch Logs API 啟用記錄
若要使用 CloudWatch Logs API 啟用 Mail Manager 資源的記錄,您需要:
-
使用 建立交付來源
PutDeliverySource
。 -
使用 建立交付目的地
PutDeliveryDestination
。 -
使用 ,透過完全配對一個交付來源和一個交付目的地來建立交付
CreateDelivery
。
您可以在 Amazon CloudWatch Logs 使用者指南的 日誌中,檢視 IAM 角色和許可政策的範例,其中包含您特定日誌目的地所需的所有必要許可,這些許可需要額外許可 【V2】 區段,並遵循日誌目的地的 IAM 角色和許可政策範例,包括允許更新特定日誌目的地資源,例如 CloudWatch Logs、S3 或 Firehose。
注意
建立 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 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
規則集日誌
日誌是針對每個動作的每個訊息產生。這表示每當規則集中規則中的動作處理訊息時,就會產生日誌記錄:
{
"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