

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

# Amazon SES の Amazon SNS 通知コンテンツ
<a name="notification-contents"></a>

バウンス、苦情、および配信の通知は、JavaScript Object Notation (JSON) 形式で、[Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns) トピックに発行されます。トップレベル JSON オブジェクトには、`notificationType` 文字列と `mail` オブジェクトに加え、`bounce` オブジェクト、`complaint` オブジェクト、または `delivery` オブジェクトのいずれかが含まれます。

オブジェクトのタイプごとの詳細については以下のセクションを参照してください。
+ [トップレベル JSON オブジェクト](#top-level-json-object)
+ [`mail` オブジェクト](#mail-object)
+ [`bounce` オブジェクト](#bounce-object)
+ [`complaint` オブジェクト](#complaint-object)
+ [`delivery` オブジェクト](#delivery-object)

以下は、Amazon SES の Amazon SNS 通知の内容に関する重要な注意事項です。
+ 該当する通知タイプにより、複数の受信者に対応する 1 つの Amazon SNS 通知を受け取ることもあれば、各受信者に 1 つの Amazon SNS 通知を受け取ることもあります。コードでは Amazon SNS 通知を解析して、どちらの場合にも対応できる必要があります。Amazon SNS を使用して送信された通知に関しては、SES では順序付けや一括処理が保証されません。ただし、タイプの異なる Amazon SNS 通知 (バウンスと苦情など) が 1 つの通知にまとめられることはありません。
+ 1 人の受信者に対して複数のタイプの Amazon SNS 通知を受け取ることがあります。たとえば、受信メールサーバーは、E メールを受理した場合でも (配信の通知をトリガーします)、そのメールの処理後に、そのメールは実際にはバウンスであると判定する場合があります (バウンスの通知をトリガーします)。ただし、通知のタイプが異なるため、これらは常に個別に通知されます。
+ SES には、通知にその他のフィールドを追加する権限があります。そのため、これらの通知を解析するアプリケーションには、不明なフィールドを処理できるだけの十分な柔軟性が必要です。
+ SES は、E メールの送信時にメッセージのヘッダーを上書きします。`mail` オブジェクトの `headers` および `commonHeaders` フィールドから元のメッセージのヘッダーを取得できます。

## トップレベル JSON オブジェクト
<a name="top-level-json-object"></a>

SES 通知のトップレベル JSON オブジェクトには、以下のフィールドが含まれています。


| フィールド名 | 説明 | 
| --- | --- | 
| notificationType | 通知のタイプを格納する文字列は、JSON オブジェクトによって表されます。想定される値は、`Bounce`、`Complaint`、および `Delivery` です。<br />[イベント発行をセットアップ](monitor-sending-using-event-publishing-setup.md)する場合、このフィールドの名前は `eventType` です。 | 
| mail | 通知に関連する元のメールについての情報を含む JSON オブジェクト。詳細については、「[Mail オブジェクト](#mail-object)」を参照してください。 | 
| bounce | このフィールドは `notificationType` が `Bounce` である場合のみ存在し、バウンスに関する情報を持つ JSON オブジェクトが含まれます。詳細については、「[Bounce オブジェクト](#bounce-object)」を参照してください。 | 
| complaint | このフィールドは `notificationType` が `Complaint` である場合のみ存在し、苦情に関する情報を持つ JSON オブジェクトが含まれます。詳細については、「[苦情のオブジェクト](#complaint-object)」を参照してください。 | 
| delivery | このフィールドは `notificationType` が `Delivery` である場合のみ存在し、配信に関する情報を持つ JSON オブジェクトが含まれます。詳細については、「[配信オブジェクト](#delivery-object)」を参照してください。 | 

## Mail オブジェクト
<a name="mail-object"></a>

バウンス、苦情、または配信の通知にはそれぞれ、`mail` オブジェクト内の元の E メールについての情報が含まれます。`mail` オブジェクトについての情報を含む JSON オブジェクトには次のフィールドが含まれます。


| フィールド名 | 説明 | 
| --- | --- | 
|  timestamp  | 元のメッセージが送信された日時 (ISO 8601 形式)。 | 
|  messageId  | SES がメッセージに割り当てた一意の ID。ユーザーがメッセージを送信すると、SES はこの値を返します。 このメッセージ ID は SES によって割り当てられたものです。元の E メールのメッセージ ID は、`mail` オブジェクトの `headers` フィールドにあります。  | 
|  source  | 元のメッセージが送信された E メールアドレス (エンベロープ MAIL FROM アドレス)。 | 
|  sourceArn  | E メールの送信に使用された ID の Amazon リソースネーム (ARN)。送信承認の場合、`sourceArn` は、代理送信者が E メールの送信に使用することをアイデンティティ所有者により承認されたアイデンティティの ARN です。送信承認の詳細については、「[E メールの認証方法送信承認の使用](sending-authorization.md)」を参照してください。 | 
|  sourceIp  | SES に対して E メールの送信リクエストを実行したクライアントの送信側パブリック IP アドレス。 | 
|  sendingAccountId  | E メールの送信に使用されたアカウントの AWS アカウント ID。送信承認の場合、`sendingAccountId` は代理送信者のアカウント ID です。 | 
|  callerIdentity  | E メールを送信した SES ユーザーの IAM ID | 
|  destination  | 元のメールの受取人の E メールアドレスのリスト。 | 
|  headersTruncated  | 元の E メールからヘッダーを含めるように通知設定を構成した場合にのみ、このオブジェクトが表示されます。<br />ヘッダーが通知で切り詰められるかどうかを示します。SES では、元のメッセージのヘッダーのサイズが 10 KB 以上の場合、通知のヘッダーが切り詰められます。指定できる値は `true` および `false` です。 | 
|  headers  | 元の E メールからヘッダーを含めるように通知設定を構成した場合にのみ、このオブジェクトが表示されます。<br />E メールの元のヘッダーの一覧。リスト内の各ヘッダーには、`name` フィールドと `value` フィールドがあります。 `headers` オブジェクト内のメッセージ ID は、SES に渡した元のメッセージのものです。その後 SES がメッセージに割り当てるメッセージ ID は、`mail` オブジェクトの `messageId` フィールドのものです。  | 
|  commonHeaders  | 元の E メールからヘッダーを含めるように通知設定を構成した場合にのみ、このオブジェクトが表示されます。<br />元の E メールからの一般的な E メールヘッダーに関する情報 (送信元、宛先、件名フィールドなど) が含まれます。このオブジェクト内では、各ヘッダーはキーとなります。送信元フィールドと宛先フィールドは、複数の値を含むことができる配列で表されます。 イベントの場合、`commonHeaders` フィールド内のメッセージ ID は、Amazon SES が後でメールオブジェクトの `messageId` フィールドでメッセージに割り当てたメッセージ ID です。通知には、元の E メールのメッセージ ID が含まれます。  | 

以下は、元の E メールヘッダーを含む `mail` オブジェクトの例です。この通知タイプが元の E メールヘッダーを含めるように設定されていない場合は、`mail` オブジェクトに `headersTruncated`、`headers` および `commonHeaders` フィールドが含まれません。

```
{
   "timestamp":"2018-10-08T14:05:45 +0000",
   "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000",
   "source":"sender@example.com",
   "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
   "sourceIp": "127.0.3.0",
   "sendingAccountId":"123456789012",
   "destination":[
      "recipient@example.com"
   ],
   "headersTruncated":false,
   "headers":[ 
      { 
         "name":"From",
         "value":"\"Sender Name\" <sender@example.com>"
      },
      { 
         "name":"To",
         "value":"\"Recipient Name\" <recipient@example.com>"
      },
      { 
         "name":"Message-ID",
         "value":"custom-message-ID"
      },
      { 
         "name":"Subject",
         "value":"Hello"
      },
      { 
         "name":"Content-Type",
         "value":"text/plain; charset=\"UTF-8\""
      },
      { 
         "name":"Content-Transfer-Encoding",
         "value":"base64"
      },
      { 
         "name":"Date",
         "value":"Mon, 08 Oct 2018 14:05:45 +0000"
      }
   ],
   "commonHeaders":{ 
      "from":[ 
         "Sender Name <sender@example.com>"
      ],
      "date":"Mon, 08 Oct 2018 14:05:45 +0000",
      "to":[ 
         "Recipient Name <recipient@example.com>"
      ],
      "messageId":" custom-message-ID",
      "subject":"Message sent using SES"
   }
}
```

## Bounce オブジェクト
<a name="bounce-object"></a>

バウンスに関する情報を含む JSON オブジェクトには以下のフィールドがあります。


| フィールド名 | 説明 | 
| --- | --- | 
|  bounceType  | バウンスのタイプ。SES によって決定されます。詳細については、「[バウンスのタイプ](#bounce-types)」を参照してください。 | 
|  bounceSubType  | バウンスのサブタイプ。SES によって決定されます。詳細については、「[バウンスのタイプ](#bounce-types)」を参照してください。 | 
|  bouncedRecipients  | バウンスとなった元のメールの受取人についての情報を含むリスト。詳細については、「[バウンスとなった受取人](#bounced-recipients)」を参照してください。 | 
|  timestamp  | バウンスが送信された日時 (ISO 8601 形式)。この時刻は、ISP によって通知が送信された時刻であり、SES が通知を受け取った時刻ではないことに注意してください。 | 
|  feedbackId  | バウンスの一意の ID。 | 

SES がリモートの Message Transfer Authority (MTA) に接続できた場合は、次のフィールドも表示されます。


| フィールド名 | 説明 | 
| --- | --- | 
|  remoteMtaIp  | SES で E メールの配信を試みた先の MTA の IP アドレス。 | 

配信状態通知 (DSN) がバウンスに添付されている場合は、次のフィールドも表示されます。


| フィールド名 | 説明 | 
| --- | --- | 
|  reportingMTA  | DSN の `Reporting-MTA` フィールドの値。これは、DSN に記述された配信、リレー、またはゲートウェイのオペレーションを試みた MTA の値です。 | 

以下は、`bounce` オブジェクトの例です。

```
{
   "bounceType":"Permanent",
   "bounceSubType": "General",
   "bouncedRecipients":[
      {
         "status":"5.0.0",
         "action":"failed",
         "diagnosticCode":"smtp; 550 user unknown",
         "emailAddress":"recipient1@example.com"
      },
      {
         "status":"4.0.0",
         "action":"delayed",
         "emailAddress":"recipient2@example.com"
      }
   ],
   "reportingMTA": "example.com",
   "timestamp":"2012-05-25T14:59:38.605Z",
   "feedbackId":"000001378603176d-5a4b5ad9-6f30-4198-a8c3-b1eb0c270a1d-000000",
   "remoteMtaIp":"127.0.2.0"
}
```

### バウンスとなった受取人
<a name="bounced-recipients"></a>

バウンスの通知には、1 人の受信者に関するものと複数の受信者に関するものがあります。`bouncedRecipients` フィールドはオブジェクトのリスト (バウンスの通知が関係する受取人ごとに 1 つのオブジェクト) を保持し、常に次のフィールドが含まれます。


| フィールド名 | 説明 | 
| --- | --- | 
|  emailAddress  | 受取人の E メールアドレス。DSN が利用できる場合、これが DSN の `Final-Recipient` フィールドの値です。 | 

オプションで、DSN がバウンスに添付されている場合、以下のフィールドも表示される場合があります。


| フィールド名 | 説明 | 
| --- | --- | 
|  action  | DSN の `Action` フィールドの値。このフィールドには、Reporting-MTA により実行された、この受取人に対してメッセージを送信しようとした結果のアクションが示されます。 | 
|  status  | DSN の `Status` フィールドの値。これは、メッセージの配信状態を示す、受取人ごとに個別の、トランスポート独立型ステータスコードです。 | 
|  diagnosticCode  | ステータスコードは、Reporting-MTA により発行されます。これは、DSN の `Diagnostic-Code` フィールドの値です。このフィールドが DSN に存在しない場合もあります (その場合 JSON オブジェクトにも表示されません)。 | 

以下は、`bouncedRecipients` のリストに示されるオブジェクトの例です。

```
{
    "emailAddress": "recipient@example.com",
    "action": "failed",
    "status": "5.0.0",
    "diagnosticCode": "X-Postfix; unknown user"
}
```

### バウンスのタイプ
<a name="bounce-types"></a>

バウンスオブジェクトには、バウンスタイプとして `Undetermined`、`Permanent` *(ハード)*、または `Transient` *(ソフト)* が含まれます。`Permanent` *(ハード)* および `Transient` *(ソフト)* バウンスタイプには、いくつかあるバウンスサブタイプの 1 つも含まれます。

バウンスタイプが `Transient` *(ソフト)* のバウンス通知を受信した場合は、メッセージのバウンスを起こした問題が解決されたときに、この受取人に対して将来 E メールを送信できる可能性があります。

バウンスタイプが `Permanent` *(ハード)* のバウンス通知を受信した場合、この受取人に将来 E メールを送信できる可能性はありません。このため、バウンスを生じたアドレスを持つ受取人はメーリングリストから即座に削除してください。

**注記**  
*ソフトバウンス* (受取人の受信トレイがいっぱいであるなどの一時的な問題に伴うバウンス) が発生すると、SES は一定期間にわたり、E メールの再配信を試行します。この期間の終了時に、まだ E メールを送信できない場合、SES は試行を停止します。  
SES は、ハードバウンスの通知に加えて、配信の試行を停止したソフトバウンスの通知を提供します。ソフトバウンスが発生するたびに通知を受信する場合は、[イベントの公開を有効](monitor-sending-using-event-publishing-setup.md)にし、配信遅延イベントが発生したときに通知を送信するように設定します。


| bounceType | bounceSubType | 説明 | 
| --- | --- | --- | 
|  Undetermined  |  Undetermined  | 受取人の E メールプロバイダーはバウンスメッセージを送信しました。バウンスメッセージには、SES がバウンスの理由を判断できるだけの十分な情報が含まれていませんでした。バウンスを生じた E メールのリターンパスヘッダーのアドレスに送信されたバウンス E メールには、E メールのバウンスを起こした問題について追加情報が含まれている可能性があります。 | 
|  Permanent  |  General  | 受取人の E メールプロバイダーはハードバウンスメッセージを送信しました。 このタイプのバウンス通知を受信した場合は、受取人の E メールアドレスをメーリングリストから即座に削除してください。ハードバウンスを生じたアドレスにメッセージを送信すると、送信者としての評価に悪影響を及ぼす可能性があります。ハードバウンスを生じたアドレスに E メールを送信し続けると、追加の E メールの送信機能が一時停止される場合があります。「[Amazon SES アカウントレベルのサプレッションリストの使用](sending-email-suppression-list.md)」を参照してください。  | 
|  Permanent  |  NoEmail  | バウンスメッセージから受信者のメールアドレスを取得できませんでした。 | 
|  Permanent  |  Suppressed  | 受信者の E メールアドレスは、最近の履歴でハードバウンスを生じているため、SES サプレッションリストに追加されています。グローバルサプレッションリストを上書きするには、「[Amazon SES アカウントレベルのサプレッションリストの使用](sending-email-suppression-list.md)」を参照してください。 | 
|  Permanent  |  OnAccountSuppressionList  | SES は、アドレスが[アカウントレベルのサプレッションリスト](sending-email-suppression-list.md)に追加されているため、このアドレスへの送信を抑制しました。これは、バウンス率のメトリクスに対してはカウントされません。 | 
|  Permanent  |  UnsubscribedRecipient  | このバウンスタイプは、受信者の連絡先がトピックから登録を解除し、[リスト管理オプション](sending-email-list-management.md#configuring-list-management-list-contacts)を使用してメールが受信者に送信された場合に発生します。SES は問い合わせ設定を尊重し、配信を試みません。また、このバウンスは、配信が試行されなかったために送信者の評価に影響を与えたり、バウンスが原因で受信者の連絡先がサプレッションリストに追加されたりすることはありません。 UnsubscribedRecipient イベントをサブスクライブして、登録されていない受信者に引き続き送信されないようにすることをお勧めします。「[リスト管理の使用](sending-email-list-management.md)」を検討してください。リスト管理は、サブスクライバーリストの信頼できるソースである必要があります。SES の強制適用の観点から、抑制された受信者または登録されていない受信者に送信を続けた場合、E メール送信のベストプラクティスに従っていないという評価を受けます。  | 
|  Transient  |  General  | 受取人の E メールプロバイダーは一般的なバウンスメッセージを送信しました。メッセージのバウンスを生じた問題が解決された場合、将来、同じ受取人にメッセージを送信できる可能性があります。 アクティブな自動応答ルール (不在メッセージなど) が設定されている受取人に E メールを送信すると、このタイプの通知を受け取る場合があります。レスポンスの通知タイプが `Bounce` であっても、SES は自動応答をカウントすることなくアカウントのバウンス率を計算します。  | 
|  Transient  |  MailboxFull  | 受取人の E メールプロバイダーは、受取人の受信トレイが満杯であるために、バウンスメッセージを送信しました。メールボックスが満杯でなくなった場合、将来、同じ受取人に送信できる可能性があります。 | 
|  Transient  |  MessageTooLarge  | 受取人の E メールプロバイダーは、受信したメッセージが大きすぎるために、バウンスメッセージを送信しました。メッセージのサイズを小さくすることで、同じ受取人にメッセージを送信できる可能性があります。 | 
|  Transient  |  ContentRejected  | 受取人の E メールプロバイダーは、受信したメッセージにプロバイダーが許可しないコンテンツが含まれていたために、バウンスメッセージを送信しました。メッセージのコンテンツを変更することで、同じ受取人にメッセージを送信できる可能性があります。 | 
|  Transient  |  AttachmentRejected  | 受取人の E メールプロバイダーは、メッセージ内に許容されないコンテンツが含まれていたために、バウンスメッセージを送信しました。たとえば、一部の E メールプロバイダーは特定のファイルタイプのファイルが添付されたメッセージや、非常に大きなファイルが添付されたメッセージを拒否する場合があります。添付ファイルのコンテンツを削除または変更することで、同じ受取人にメッセージを送信できる可能性があります。 | 

## 苦情のオブジェクト
<a name="complaint-object"></a>

苦情に関する情報を含む JSON オブジェクトには以下のフィールドが含まれます。


| フィールド名 | 説明 | 
| --- | --- | 
|  complainedRecipients  | 苦情の原因である可能性がある受取人についての情報を含むリスト。詳細については、「[苦情を申告した受取人](#complained-recipients)」を参照してください。 | 
|  timestamp  | ISP が苦情通知を ISO 8601 形式で送信した日時。このフィールドの日時は、SES が通知を受信した日時とは同じでない可能性があります。 | 
|  feedbackId  | 苦情に関連付けられた一意の ID。 | 
|  complaintSubType  | `complaintSubType` フィールドの値は、null または `OnAccountSuppressionList` のいずれかになります。値が `OnAccountSuppressionList` の場合、SES はメッセージを受け入れますが、[アカウントレベルのサプレッションリスト](sending-email-suppression-list.md)に含まれているため、送信を試みません。 | 

また、フィードバックレポートが苦情に添付されている場合、以下のフィールドが示される場合があります。


| フィールド名 | 説明 | 
| --- | --- | 
|  userAgent  | フィードバックレポートの `User-Agent` フィールドの値。これは、レポートを生成したシステムの名前とバージョンを示します。 | 
|  complaintFeedbackType  | ISP から受け取ったフィードバックレポートの `Feedback-Type` フィールドの値。これには、フィードバックのタイプが含まれます。 | 
|  arrivalDate  | ISO 8601 形式のフィードバックレポートの `Arrival-Date` フィールドまたは `Received-Date` フィールドの値。このフィールドがレポートにない場合もあります (その場合、JSON オブジェクトにも表示されません)。 | 

以下は、`complaint` オブジェクトの例です。

```
{
   "userAgent":"ExampleCorp Feedback Loop (V0.01)",
   "complainedRecipients":[
      {
         "emailAddress":"recipient1@example.com"
      }
   ],
   "complaintFeedbackType":"abuse",
   "arrivalDate":"2009-12-03T04:24:21.000-05:00",
   "timestamp":"2012-05-25T14:59:38.623Z",
   "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000"
}
```

### 苦情を申告した受取人
<a name="complained-recipients"></a>

`complainedRecipients` フィールドには、苦情の送信元と思われる受信者のリストが含まれます。この情報を使用して、苦情の送信元の受取人を特定し、この受取人をメーリングリストから即座に削除する必要があります。

**重要**  
ほとんどの ISP は、苦情の送信元である受取人の E メールアドレスを苦情通知から削除します。このため、このリストに含まれている苦情の送信元と思われる受信者に関する情報は、元のメッセージの受信者と、苦情の送信元の ISP に基づくものです。SES は、この受信者のリストを確認するために元のメッセージを参照します。

このリストの JSON オブジェクトには以下のフィールドが含まれます。


| フィールド名 | 説明 | 
| --- | --- | 
|  emailAddress  | 受取人の E メールアドレス。 | 

以下は、苦情を申告した受取人のオブジェクトの例です。

```
{ "emailAddress": "recipient1@example.com" }
```

**注記**  
受信者 1 人につき 1 つのメッセージが送信されるように制限している (BCC 行に 30 個の異なる E メールアドレスを指定して送信しない) 場合は、この動作を利用して、メッセージに関する苦情を伝えている E メールアドレスをより確実に特定することできます。

#### 苦情のタイプ
<a name="complaint-types"></a>

`complaintFeedbackType` フィールドには以下の苦情のタイプが示されます ([Internet Assigned Numbers Authority ウェブサイト](http://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-2) に基づいて、報告する ISP により割り当てられます)。
+ `abuse` — 未承諾またはその他種類の不正使用メールを示します。
+ `auth-failure` — E メールの認証の障害を示します。
+ `fraud` — なんらかの詐欺またはフィッシング行為を示します。
+ `not-spam` — レポートの提供者がこのメッセージをスパムではないと見なしていることを示します。このタイプは、誤ってスパムとしてタグ付けまたは分類されたメッセージを修正するために使用される場合があります。
+ `other` — その他の登録されたタイプに該当しないフィードバックを示します。
+ `virus` — 元のメッセージでウイルスが見つかったことを示します。

## 配信オブジェクト
<a name="delivery-object"></a>

配信に関する情報を含む JSON オブジェクトには常に以下のフィールドがあります。


| フィールド名 | 説明 | 
| --- | --- | 
|  timestamp  | SES が E メールを受信者のメールサーバーに配信した時間 (ISO8601 形式)。 | 
|  processingTimeMillis  | SES が送信者からのリクエストを承諾したときから、受信者のメールサーバーにそのメッセージを渡したときまでの時間 (ミリ秒単位)。 | 
|  recipients  | 配信通知を適用する E メールの対象となる受信者のリスト。 | 
|  smtpResponse  | SES から E メールを受け取ったリモート ISP の SMTP 応答メッセージ。このメッセージは、E メール、受信メールサーバー、および受信 ISP ごとに異なります。 | 
|  reportingMTA  | メールを送信した SES メールサーバーのホスト名。 | 
|  remoteMtaIp  | SES が E メールを配信した先の MTA の IP アドレス。 | 

以下は、`delivery` オブジェクトの例です。

```
{
   "timestamp":"2014-05-28T22:41:01.184Z",
   "processingTimeMillis":546,
   "recipients":["success@simulator.amazonses.com"],
   "smtpResponse":"250 ok:  Message 64111812 accepted",
   "reportingMTA":"a8-70.smtp-out.amazonses.com",
   "remoteMtaIp":"127.0.2.0"
}
```