

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

# Mail Manager のログ記録
<a name="eb-logging"></a>

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

Mail Manager は、次のリソースのログ記録を提供します。
+ イングレスエンドポイント
+ ルールセット

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

## Mail Manager ログ配信の設定
<a name="setting-up-log-delivery"></a>

動作しているログ配信は、次の 3 つの要素で構成されます。
+ **DeliverySource** – ログを送信するリソースを表す論理オブジェクト (イングレスエンドポイントまたはルールセット) です。
+ **DeliveryDestination** – 実際の配信先 (CloudWatch Logs、S3、または Firehose) を表す論理オブジェクトです。
+ **配信** – 配信ソースを配信先に接続します。

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

### 前提条件
<a name="logging-prerequisites"></a>

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

1. [イングレスエンドポイント](eb-ingress.md)または[ルールセット](eb-rules.md)を作成した。

1. Mail Manager リソースから配信先にログを配信するために必要な CloudWatch Logs および SES Mail Manager のアクセス許可がある。

#### 必要なアクセス許可
<a name="logging-permissions"></a>

「*Amazon CloudWatch Logs ユーザーガイド*」の「[追加のアクセス許可が必要なロギング [V2]](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions-V2)」セクションで説明されているように、提供されたログのアクセス許可を設定し、配信先に対応するアクセス許可を適用する必要があります。
+ [CloudWatch Logs に送信されたログ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)
+ [Amazon S3 に送信されたログ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)
+ [Firehose に送信されたログ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)

さらに、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 コンソールでログ記録を有効にする
<a name="enable-logging-console"></a>

コンソールを使用して Mail Manager リソースのログ記録を有効にするには:

1. SES コンソール ([https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)) を開きます。

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

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

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

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

### CloudWatch Logs API を使用したログ記録の有効化
<a name="enable-logging-api"></a>

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

1. [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html) を使用して DeliverySource を作成します。

1. [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) を使用して DeliveryDestination を作成します。

1. [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) を使用して、1 つの配信元と 1 つの配信先だけをペアリングして配信を作成します。

「*Amazon CloudWatch Logs ユーザーガイド*」の「[追加のアクセス許可が必要なロギング [V2]](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions-V2)」セクションで、特定のログ記録先に必要なすべてのアクセス許可を持つ IAM ロールとアクセス許可ポリシーの例を確認して、*CloudWatch Logs*、*S3*、*Firehose* といった特定のログ記録先リソースの更新を許可するなど、ログ記録先の IAM ロールとアクセス許可ポリシーの例に従うことができます。

**注記**  
DeliverySource を作成する場合、[https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html#API_PutDeliverySource_RequestSyntax](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html#API_PutDeliverySource_RequestSyntax) はイングレスエンドポイント ARN またはルールセット ARN にすることができます。DeliverySource に応じて、[https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html#API_PutDeliverySource_RequestSyntax](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html#API_PutDeliverySource_RequestSyntax) は次のようになります。  
**イングレスエンドポイント ARN** – `APPLICATION_LOGS` または `TRAFFIC_POLICY_DEBUG_LOGS`
**ルールセット ARN** – `APPLICATION_LOGS`

## ログの解釈
<a name="interpreting-logs"></a>

ログを使用して、Mail Manager によって処理される受信メッセージのフローに関する追加のインサイトを取得できます。

次の例では、各リソースとログタイプのログのさまざまなフィールドについて詳しく説明します。

**Topics**
+ [イングレスエンドポイントログ – `APPLICATION_LOGS`](#ingress-endpoint-logs-app)
+ [イングレスエンドポイントログ – `TRAFFIC_POLICY_DEBUG_LOGS`](#ingress-endpoint-logs-traffic)
+ [ルールセットログ – `APPLICATION_LOGS`](#rule-set-logs)

### イングレスエンドポイントログ – `APPLICATION_LOGS`
<a name="ingress-endpoint-logs-app"></a>

ログはメッセージごとに生成されます。

```
{
  "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 クエリの例
<a name="ingress-endpoint-app-queries"></a>

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`
<a name="ingress-endpoint-logs-traffic"></a>

ログは受信者ごとに生成されます。

```
{
    "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 クエリの例
<a name="ingress-endpoint-traffic-queries"></a>

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`
<a name="rule-set-logs"></a>

ログは、メッセージごと、アクションごとに生成されます。つまり、ルールセットのルールのアクションによってメッセージが処理されるたびに、ログレコードが生成されます。

```
{
   "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 クエリの例
<a name="rule-set-queries"></a>

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