Amazon Simple Email Service
開発者ガイド

Amazon SES の Amazon SNS 通知のコンテンツ

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

オブジェクトのタイプごとの詳細については以下のセクションを参照してください。

以下は、Amazon SES の Amazon SNS 通知のコンテンツに関する重要事項です。

  • 受け取る通知のタイプにより、複数の受取人に対応する 1 つの Amazon SNS 通知を受け取ることも、各受取人に 1 つの Amazon SNS 通知を受け取ることもあります。コードでは Amazon SNS 通知を解析して、どちらの場合にも対応できるようにする必要があります。Amazon SNS で送信された通知に関しては、Amazon SES では順序付けや一括処理が保証されません。ただし、タイプの異なる Amazon SNS 通知 (バウンスと苦情など) が 1 つの通知にまとめられることは決してありません。

  • 1 人の受取人に対して複数のタイプの Amazon SNS 通知を受け取ることがあります。たとえば、受信メールサーバーは、E メールを受理した場合でも (配信の通知をトリガーします)、そのメールの処理後に、そのメールは実際にはバウンスであると判定する場合があります (バウンスの通知をトリガーします)。ただし、通知のタイプが異なるため、これらは常に個別に通知されます。

  • Amazon SES には、通知にフィールドを追加する権限があります。そのため、これらの通知を解析するアプリケーションには、不明なフィールドを処理できるだけの十分な柔軟性が必要です。

  • Amazon SES では、E メールの送信時にメッセージのヘッダーを上書きします。mail オブジェクトの headers および commonHeaders フィールドから元のメッセージのヘッダーを取得できます。

トップレベル JSON オブジェクト

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

フィールド名 説明

notificationType

通知のタイプを格納する文字列は、JSON オブジェクトによって表されます。想定される値は、BounceComplaint、および Delivery です。

mail

通知に関連する元のメールについての情報を含む JSON オブジェクト。詳細については、「Mail オブジェクト」を参照してください。

bounce

このフィールドは notificationTypeBounce である場合のみ存在し、バウンスに関する情報を持つ JSON オブジェクトが含まれます。詳細については、「Bounce オブジェクト」を参照してください。

complaint

このフィールドは notificationTypeComplaint である場合のみ存在し、苦情に関する情報を持つ JSON オブジェクトが含まれます。詳細については、「苦情のオブジェクト」を参照してください。

delivery

このフィールドは notificationTypeDelivery である場合のみ存在し、配信に関する情報を持つ JSON オブジェクトが含まれます。詳細については、「Delivery オブジェクト」を参照してください。

Mail オブジェクト

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

フィールド名 説明

timestamp

元のメッセージが送信された日時 (ISO 8601 形式)。

messageId

Amazon SES がメッセージに割り当てる固有 ID。メッセージを送信すると、この値が Amazon SES から返されます。

注記

このメッセージ ID は Amazon SES によって割り当てられます。元の E メールのメッセージ ID は、mail オブジェクトの headers および commonHeaders フィールドにあります。

source

元のメッセージが送信された E メールアドレス (エンベロープ MAIL FROM アドレス)。

sourceArn

E メールの送信に使用されたアイデンティティの Amazon リソースネーム (ARN)。送信承認の場合、sourceArn は、代理送信者が E メールの送信に使用することをアイデンティティ所有者により承認されたアイデンティティの ARN です。送信承認の詳細については、「送信承認の使用」を参照してください。

sourceIp

Amazon SES にリクエストを送信する E メールを実行するクライアントの送信側パブリック IP アドレス。

sendingAccountId

E メールの送信に使用されたアカウントの AWS アカウント ID。送信承認の場合、sendingAccountId は代理送信者のアカウント ID です。

destination

元のメールの受取人の E メールアドレスのリスト。

headersTruncated

(通知設定に元の E メールのヘッダーが含まれている場合にのみ表示。)通知でヘッダーが切り捨てられたかどうかを示す文字列。切り捨ては、ヘッダーが 10 KB を超える場合に発生します。指定できる値は true および false です。

headers

(通知設定に元の E メールのヘッダーが含まれている場合にのみ表示。)E メールの元のヘッダーの一覧。リスト内の各ヘッダーには、name フィールドと value フィールドがあります。

注記

headers フィールドのメッセージ ID は、Amazon SES に渡した元のメッセージからのものです。その後 Amazon SES によってメッセージに割り当てられたメッセージ ID は、mail オブジェクトの messageId フィールドにあります。

commonHeaders

(通知設定に元の E メールのヘッダーが含まれている場合にのみ表示。)よく使用される E メールの元のヘッダーの一覧。リスト内の各ヘッダーには、name フィールドと value フィールドがあります。

注記

commonHeaders フィールドのメッセージ ID は、Amazon SES に渡した元のメッセージからのものです。その後 Amazon SES によってメッセージに割り当てられたメッセージ ID は、mail オブジェクトの messageId フィールドにあります。

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

{ "timestamp":"2016-01-27T14:05:45 +0000", "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000", "source":"john@example.com", "sourceArn": "arn:aws:ses:us-west-2:888888888888:identity/example.com", "sourceIp": "127.0.3.0", "sendingAccountId":"123456789012", "destination":[ "jane@example.com" ], "headersTruncated":false, "headers":[ { "name":"From", "value":"\"John Doe\" <john@example.com>" }, { "name":"To", "value":"\"Jane Doe\" <jane@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":"Wed, 27 Jan 2016 14:05:45 +0000" } ], "commonHeaders":{ "from":[ "John Doe <john@example.com>" ], "date":"Wed, 27 Jan 2016 14:05:45 +0000", "to":[ "Jane Doe <jane@example.com>" ], "messageId":" custom-message-ID", "subject":"Hello" } }

Bounce オブジェクト

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

フィールド名 説明

bounceType

バウンスのタイプ。Amazon SES によって決定されます。詳細については、「バウンスのタイプ」を参照してください。

bounceSubType

バウンスのサブタイプ。Amazon SES によって決定されます。詳細については、「バウンスのタイプ」を参照してください。

bouncedRecipients

バウンスとなった元のメールの受取人についての情報を含むリスト。詳細については、「バウンスとなった受取人」を参照してください。

timestamp

バウンスが送信された日時 (ISO 8601 形式)。この時刻は、ISP から通知が送信された時刻であり、Amazon SES で通知を受け取った時刻ではないことに注意してください。

feedbackId

バウンスの一意の ID。

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

フィールド名 説明

remoteMtaIp

Amazon 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" }

バウンスとなった受取人

バウンスの通知には、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" }

バウンスのタイプ

バウンスオブジェクトには、バウンスタイプとして UndeterminedPermanent、または Transient が含まれます。Permanent バウンスタイプと Transient バランスタイプには、複数のバウンスサブタイプのいずれかも含まれます。

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

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

注記

ソフトバウンス (受取人の受信トレイが満杯であるなどの一時的な問題に伴うバウンス) が発生すると、Amazon SES は一定期間にわたり、E メールの再配信を試行します。この期間の終了時に、まだ E メールを送信できない場合、Amazon SES は試行を停止します。

Amazon SES は、ハードバウンスの通知に加えて、配信の試行を停止したソフトバウンスの通知を提供します。

bounceType bounceSubType 説明

Undetermined

Undetermined

受取人の E メールプロバイダーはバウンスメッセージを送信しました。バウンスメッセージには、Amazon SES がバウンスの理由を判断できるだけの十分な情報が含まれていませんでした。バウンスを生じた E メールのリターンパスヘッダーのアドレスに送信されたバウンス E メールには、E メールのバウンスを起こした問題について追加情報が含まれている可能性があります。

Permanent

General

受取人の E メールプロバイダーは、ハードバウンスメッセージを送信しましたが、ハードバウンスの原因を示していません。

重要

このタイプのバウンス通知を受信した場合は、受取人の E メールアドレスをメーリングリストから即座に削除してください。ハードバウンスを生じたアドレスにメッセージを送信すると、送信者としての評価に悪影響を及ぼす可能性があります。ハードバウンスを生じたアドレスに E メールを送信し続けると、追加の E メールの送信機能が一時停止される場合があります。

Permanent

NoEmail

対象の受取人の E メールプロバイダーから、E メールアドレスが存在しないというバウンスメッセージが送信されました。

重要

このタイプのバウンス通知を受信した場合は、受取人の E メールアドレスをメーリングリストから即座に削除してください。存在しないアドレスにメッセージを送信すると、送信者としての評価に悪影響を及ぼす可能性があります。存在しないアドレスに E メールを送信し続けると、追加の E メールの送信機能が一時停止される場合があります。

Permanent

Suppressed

受取人の E メールアドレスは、最近の履歴でハードバウンスを生じているため、Amazon SES サプレッションリストに追加されています。Amazon SES サプレッションリストからアドレスを削除する方法については、「Amazon SES サプレッションリストからの E メールアドレスの削除」を参照してください。

Transient

General

受取人の E メールプロバイダーは一般的なバウンスメッセージを送信しました。メッセージのバウンスを生じた問題が解決された場合、将来、同じ受取人にメッセージを送信できる可能性があります。

注記

アクティブな自動応答ルール (不在メッセージなど) が設定されている受取人に E メールを送信すると、このタイプの通知を受け取る場合があります。レスポンスの通知タイプが Bounce であっても、Amazon SES は自動応答をカウントすることなくアカウントのバウンス率を計算します。

Transient

MailboxFull

受取人の E メールプロバイダーは、受取人の受信トレイが満杯であるために、バウンスメッセージを送信しました。メールボックスが満杯でなくなった場合、将来、同じ受取人に送信できる可能性があります。

Transient

MessageTooLarge

受取人の E メールプロバイダーは、受信したメッセージが大きすぎるために、バウンスメッセージを送信しました。メッセージのサイズを小さくすることで、同じ受取人にメッセージを送信できる可能性があります。

Transient

ContentRejected

受取人の E メールプロバイダーは、受信したメッセージにプロバイダーが許可しないコンテンツが含まれていたために、バウンスメッセージを送信しました。メッセージのコンテンツを変更することで、同じ受取人にメッセージを送信できる可能性があります。

Transient

AttachmentRejected

受取人の E メールプロバイダーは、メッセージ内に許容されないコンテンツが含まれていたために、バウンスメッセージを送信しました。たとえば、一部の E メールプロバイダーは特定のファイルタイプのファイルが添付されたメッセージや、非常に大きなファイルが添付されたメッセージを拒否する場合があります。添付ファイルのコンテンツを削除または変更することで、同じ受取人にメッセージを送信できる可能性があります。

苦情のオブジェクト

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

フィールド名 説明

complainedRecipients

苦情の原因である可能性がある受取人についての情報を含むリスト。詳細については、「苦情を申告した受取人」を参照してください。

timestamp

ISP が苦情通知を ISO 8601 形式で送信した日時。このフィールドの日時は、Amazon SES が通知を受信した日時とは同じでない可能性があります。

feedbackId

苦情に関連付けられた一意の ID。

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

フィールド名 説明

userAgent

フィードバックレポートの User-Agent フィールドの値。これは、レポートを生成したシステムの名前とバージョンを示します。

complaintFeedbackType

ISP から受け取ったフィードバックレポートの Feedback-Type フィールドの値。これには、フィードバックのタイプが含まれます。

arrivalDate

ISO 8601 形式のフィードバックレポートの Arrival-Date フィールドまたは Received-Date フィールドの値。このフィールドがレポートにない場合もあります (その場合、JSON オブジェクトにも表示されません)。

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

{ "userAgent":"AnyCompany 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" }

苦情を申告した受取人

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

重要

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

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

フィールド名 説明

emailAddress

受取人の E メールアドレス。

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

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

注記

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

苦情のタイプ

complaintFeedbackType フィールドには以下の苦情のタイプが示されます (Internet Assigned Numbers Authority ウェブサイト に基づいて、報告する ISP により割り当てられます)。

  • abuse - 未承諾 E メールまたはある種の迷惑 E メール。

  • auth-failure - E メールの認証失敗を示します。

  • fraud - ある種の詐欺やフィッシング行為。

  • not-spam - 報告者がこのメッセージはスパムではないと判断しました。このタイプは、誤ってスパムとしてタグ付けまたは分類されたメッセージを修正するために使用される場合があります。

  • other - その他の登録されたタイプに該当しないフィードバックです。

  • virus - 元のメッセージにウイルスが見つかったことを示します。

Delivery オブジェクト

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

フィールド名 説明

timestamp

Amazon SES が E メールを受取人のメールサーバーに配信した時間 (ISO8601 形式)。

processingTimeMillis

Amazon SES で送信者からのリクエストを受理したときから受取人のメールサーバーにそのメッセージが渡されたときまでの時間 (ミリ秒単位)。

recipients

配信の通知を適用する E メールの対象となる受取人のリスト。

smtpResponse

Amazon SES から E メールを受け取ったリモート ISP からの SMTP 応答メッセージ。このメッセージは、E メール、受信メールサーバー、および受信 ISP ごとに異なります。

reportingMTA

メールを送信する Amazon SES メールサーバーのホスト名。

remoteMtaIp

Amazon 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" }