Mail Manager のログ記録 - Amazon Simple Email Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Mail Manager のログ記録

Mail Manager のログ記録は、Mail Manager オペレーションを詳細に可視化します。ログ記録機能では、設定されたルールセットとルールに基づいて、イングレスエンドポイントでの最初の受信からメッセージ処理までのメッセージフローが追跡されます。

Mail Manager は、次のリソースのログ記録を提供します。

  • イングレスエンドポイント

  • ルールセット

Mail Manager は Amazon CloudWatch Logs サービスを使用してログを配信します。ログは、CloudWatch LogsAmazon S3、または Amazon Data Firehose のいずれかの送信先に配信できます。

Mail Manager ログ配信の設定

動作しているログ配信は、次の 3 つの要素で構成されます。

  • DeliverySource – ログを送信するリソースを表す論理オブジェクト (イングレスエンドポイントまたはルールセット) です。

  • DeliveryDestination – 実際の配信先 (CloudWatch Logs、S3、または Firehose) を表す論理オブジェクトです。

  • 配信 – 配信ソースを配信先に接続します。

このセクションでは、これらのオブジェクトを作成する方法と、Mail Manager のログ記録を使用するために必要なアクセス許可について説明します。

前提条件

Mail Manager のログ記録を設定する前に、以下のことを確認してください。

  1. イングレスエンドポイントまたはルールセットを作成した。

  2. Mail Manager リソースから配信先にログを配信するために必要な CloudWatch Logs および SES 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. SES コンソール (https://console.aws.amazon.com/ses/) を開きます。

  2. [Mail Manager] のナビゲーションペインで、[イングレスエンドポイント] または [ルールセット] のいずれかを選択し、ログ記録を有効にする特定のリソースを選択します。

  3. リソースの詳細ページで、[ログ配信を追加] を展開し、[CloudWatch Logs][S3]、または [Firehose] への配信を選択します。

  4. 選択した送信先の [配信を追加] ダイアログボックスで、プロンプトに従って送信先タイプに固有のログ配信オプションを設定します。

  5. (オプション) [追加設定] を展開して、レコードのフィールド、出力形式、フィールド区切り文字、および送信先タイプに固有のその他のパラメータをカスタマイズします。

CloudWatch Logs API を使用したログ記録の有効化

CloudWatch Logs API を使用して Mail Manager リソースのログ記録を有効にするには、以下のことが必要です。

  1. PutDeliverySource を使用して DeliverySource を作成します。

  2. PutDeliveryDestination を使用して DeliveryDestination を作成します。

  3. CreateDelivery を使用して、1 つの配信元と 1 つの配信先だけをペアリングして配信を作成します。

Amazon CloudWatch Logs ユーザーガイド」の「追加のアクセス許可が必要なロギング [V2]」セクションで、特定のログ記録先に必要なすべてのアクセス許可を持つ IAM ロールとアクセス許可ポリシーの例を確認して、CloudWatch LogsS3Firehose といった特定のログ記録先リソースの更新を許可するなど、ログ記録先の IAM ロールとアクセス許可ポリシーの例に従うことができます。

注記

DeliverySource を作成する場合、resourceArn はイングレスエンドポイント ARN またはルールセット ARN にすることができます。DeliverySource に応じて、logType は次のようになります。

  • イングレスエンドポイント ARNAPPLICATION_LOGS または TRAFFIC_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 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 を共有します。message_id はメッセージの承諾後まで使用できないため、この 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 – アクション失敗の詳細を示します (アクションが失敗した場合のみ)。例えば、指定されたロールにアクションを実行するための十分なアクセス許可がない場合です。

さらに、ルール条件がメッセージと一致しない場合、つまり、メッセージがルールによって処理されない場合、メッセージがルールセットによって処理されたが、それに対して実行されたアクションがないことを示す 1 つのログが発行されます。

{ "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 クエリの例

特定の 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

ルールセットの 2 番目のルールによって処理されなかったメッセージのクエリ (メッセージはルールの条件を満たしませんでした):

fields @timestamp, @message, @logStream, @log | filter recipients_matched = '[]' and rule_index = 2 | sort @timestamp desc | limit 10000