

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon SES 中已验证的身份
<a name="verify-addresses-and-domains"></a>

在 Amazon SES 中，*已验证的身份*是您用来发送或接收电子邮件的域或电子邮件地址。在使用 Amazon SES 发送电子邮件之前，您必须创建并验证将要用作 From (发件人)、Source (源)、Sender (发件人) 或 Return-Path (返回路径) 地址的每个身份。通过 Amazon SES 验证身份可以确认您拥有该身份，并有助于防止未经授权的使用。

如果您的账户仍在 Amazon SES 沙盒中，则还必须验证您计划向其发送电子邮件的所有电子邮件地址，除非您要向 [Amazon SES 邮箱模拟器](send-an-email-from-console.md#send-email-simulator)提供的测试收件箱发送电子邮件。有关更多信息，请参阅 [手动使用邮箱模拟器](send-an-email-from-console.md#send-email-simulator)。

您可以使用 Amazon SES 控制台或 Amazon SES API 来创建身份。身份验证过程取决于您选择创建的身份类型。

**提示**  
如果您是首次使用 SES，可以使用[入门向导](setting-up.md#quick-start-verify-email-addresses)来创建和验证您的第一个身份（电子邮件地址或域）。

**Topics**
+ [在 Amazon SES 中创建和验证身份](creating-identities.md)
+ [在 Amazon SES 中管理身份](managing-identities.md)
+ [在 Amazon SES 中配置身份](configure-identities.md)
+ [使用模拟器在 Amazon SES 中发送测试电子邮件](send-an-email-from-console.md)

# 在 Amazon SES 中创建和验证身份
<a name="creating-identities"></a>

在 Amazon SES 中，您可以在域级别创建身份，也可以创建电子邮件地址身份。这些身份类型并不相互排斥。在大多数情况下，创建域身份就不需要再创建和验证单个电子邮件地址身份，除非您希望对特定电子邮件地址应用自定义配置。无论您是创建域并使用基于域的电子邮件地址，还是创建单独的电子邮件地址，这两种方法都有好处。您选择哪种方法取决于您的具体需求，如下所述。

创建和验证电子邮件地址身份是 SES 中最快的开启方式，但在域级别验证身份也有益处。当您验证电子邮件地址身份时，只有该电子邮件地址可用于发送邮件，但当您验证域身份时，您可以从已验证域的任何子域或电子邮件地址发送电子邮件，而无需单独验证每一个。例如，如果您创建并验证名为 example.com 的域身份，则无需为 a.example.com、a.b.example.com 创建单独的子域身份，也无需为 user@example.com、user@a.example.com 等创建单独的电子邮件地址身份。

然而，请记住，使用从其域继承的验证的电子邮件地址身份仅限于直接发送电子邮件。如果想要进行更高级的发送，您还必须明确地将其验证为电子邮件地址身份。高级发送包括将电子邮件地址与配置集、委托发送的策略授权以及覆盖域设置的配置一起使用。

为了帮助阐明上面讨论的验证继承和电子邮件发送功能，下表对 domain/email 地址验证的每种组合进行了分类，并列出了每种组合的继承、发送级别和显示状态：


|   | 仅验证域 | 仅验证电子邮件地址 | 验证域和电子邮件地址 | 
| --- | --- | --- | --- | 
| 继承级别 | 子域和电子邮件地址继承父域的验证。 | 明确验证电子邮件地址。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/creating-identities.html) | 
| 发送级别 | 电子邮件地址限制为直接发送电子邮件。 | 电子邮件地址可用于高级发送\$1。 | 电子邮件地址可用于高级发送\$1。 | 
| 显示的状态 | 控制台/API 状态：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/creating-identities.html) | 控制台/API 状态：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/creating-identities.html) | 控制台/API 状态：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/creating-identities.html) | 

*\$1高级发送包括将电子邮件地址与配置集、委托发送的策略授权以及覆盖域设置的配置一起使用。*

要从同一个域名或多个电子邮件地址发送电子邮件 AWS 区域，您必须为每个区域创建并验证单独的身份。在每个区域中，您最多可以验证 10,000 个身份。

**在创建和验证域与电子邮件地址身份时，请考虑以下各项：**
+ 您可以从已验证域的任意子域或电子邮件地址发送电子邮件，而无需单独验证每个子域或电子邮件地址。例如，如果您为 example.com 创建并验证身份，则不需要为 a.example.com、a.b.example.com、user@example.com、user@a.example.com 等创建单独的身份。
+ 按照 [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.6) 中的规定，每个 DNS 标签最多可包含 63 个字符，域名总长度不得超过 255 个字符。
+ 如果您验证共享一个根域的域、子域或电子邮件地址，则身份设置（例如反馈通知）将应用于您已验证的最精细级别。
  + 已验证的电子邮件地址身份设置会覆盖已验证的域身份设置。
  + 已验证子域身份设置会覆盖已验证的域身份设置，较低级别的子域设置会覆盖较高级别的子域设置。

    例如，假设您验证了 user@a.b.example.com、a.b.example.com、b.example.com 和 example.com。这些已验证的身份设置将用于以下场景：
    + 从 user@example.com (该电子邮件地址未经专门验证) 发送的电子邮件将使用 example.com 的设置。
    + 从 user@a.b.example.com (该电子邮件地址经过专门验证) 发送的电子邮件将使用 user@a.b.example.com 的设置。
    + 从 user@b.example.com (该电子邮件地址未经专门验证) 发送的电子邮件将使用 b.example.com 的设置。
+ 您可以向已验证的电子邮件地址添加标签而无需执行额外的验证步骤。要向电子邮件地址添加标签，请在账户名称和“at”符号 (@) 之间添加加号 (\$1)，后跟文本标签。例如，如果您已验证 sender@example.com，则可以使用 sender\$1myLabel@example.com 作为您的电子邮件的“From”或“Return-Path”地址。您可以使用此特征来实施可变信封退回路径 (VERP)。然后，您可以使用 VERP 检测无法送达的电子邮件地址并从您的邮件列表中删除它们。
+ 域名不区分大小写。如果您验证了 example.com，则也可以从 EXAMPLE.com 发送电子邮件。
+ 电子邮件地址*区分*大小写。如果您验证了 sender@EXAMPLE.com，将无法从 sender@example.com 发送电子邮件，除非同时验证了 sender@example.com。
+ 在每个身份中 AWS 区域，您可以验证多达 10,000 个身份（域名和电子邮件地址的任意组合）。

**提示**  
如果您是首次使用 SES，可以使用[入门向导](setting-up.md#quick-start-verify-email-addresses)来创建和验证您的第一个身份（电子邮件地址或域）。

**Topics**
+ [创建域身份](#verify-domain-procedure)
+ [与您的 DNS 提供商一起验证 DKIM 域身份](#just-verify-domain-proc)
+ [创建电子邮件地址身份](#verify-email-addresses-procedure)
+ [验证电子邮件地址身份](#just-verify-email-proc)
+ [创建和验证身份并同时分配默认配置集](#default-config-set-at-create-api)
+ [使用自定义验证电子邮件模板](#send-email-verify-address-custom)

## 创建域身份
<a name="verify-domain-procedure"></a>

创建域名身份的一部分是配置其基于 DKIM 的验证。 DomainKeys识别邮件 (DKIM) 是一种电子邮件身份验证方法，Amazon SES 使用它来验证域名所有权，接收邮件服务器使用它来验证电子邮件的真实性。您可以选择使用 Easy DKIM 或自带 DKIM（BYODKIM）来配置 DKIM，根据您的选择，您必须按照以下方式配置私有密钥的签名密钥长度：
+ **Easy DKIM** - 接受 Amazon SES 默认的 2048 位，或选择 1024 位进行覆盖。
+ **BYODKIM** - 私有密钥长度必须至少为 1024 位，最多为 2048 位。

有关 DKIM 签名密钥长度以及如何更改密钥长度的详情，请参阅 [DKIM 签名密钥长度](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

以下过程介绍如何使用 Amazon SES 控制台来创建域身份。
+ 如果您已创建域且只需要验证域，请跳到本页面上的过程[与您的 DNS 提供商一起验证 DKIM 域身份](#just-verify-domain-proc)。

**创建域身份**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 选择**创建身份**。

1. 在**身份详细信息**下，选择**域**作为要创建的身份类型。您必须有权访问域的 DNS 设置才能完成验证过程。

1. 在**域**字段中输入域或子域的名称。
**提示**  
如果您的域是 *www.example.com*，请输入 *example.com* 作为您的域。请勿包含“www.” 部分，如果包含，域验证过程将不会成功。

1. <a name="verified-domain-identity-default-config-set"></a>（可选）如果要**分配默认配置集**，请选中该复选框。

   1. 对于**默认配置集**，选择要分配给身份的现有配置集。如果尚未创建任何配置集，请参阅 [在 SES 中使用配置集](using-configuration-sets.md)。
**注意**  
只有当发送时未指定其他配置集时，Amazon SES 才会按默认应用分配的配置集。如果指定了配置集，Amazon SES 将应用指定的配置集来代替默认的配置集。

1. （可选）如果要**使用自定义 MAIL FROM 域**，请选中该复选框并完成以下步骤。有关更多信息，请参阅 [使用自定义 MAIL FROM 域](mail-from.md)。

   1. 对于 **MAIL FROM Domain (MAIL FROM 域)**，输入要用作 MAIL FROM 子域的域。此域必须是您要验证的域身份的子域。MAIL FROM 域不应是您从中发送电子邮件的域。

   1. 对于 **MX 故障时的行为**，请指明如果 Amazon SES 在发送时找不到所需的 MX 记录，则应采取哪些操作。请选择以下选项之一：
      + **使用默认 MAIL FROM 域** - 如果自定义 MAIL FROM 域的 MX 记录未正确设置，则 Amazon SES 将使用 amazonses.com 的子域。子域根据您使用 Amazon SES 的 AWS 区域 而变化。
      + **拒绝邮件**：如果未正确设置自定义 MAIL FROM 域的 MX 记录，那么 Amazon SES 将返回 `MailFromDomainNotVerified` 错误。如果选择此选项，则您尝试从此域发送的电子邮件将被自动拒绝。

   1. 对于**向 Route53 发布 DNS 记录**，如果您的域通过 Amazon Route 53 托管，则有选择权让SES在创建时通过勾选 **Enabled** 来发布关联的 TXT 和 MX 记录。如果宁愿稍后发布这些记录，请清除 **Enabled** 复选框。（您可以稍后再来通过编辑身份将记录发布到 Route 53 - 请参阅 [使用 SES 控制台编辑身份](edit-verified-domain.md)。)

1. （可选）要配置自定义的基于 DKIM 的验证（除了 SES 默认使用 [Easy DKIM](send-email-authentication-dkim-easy.md) *和 2048 位签名长度*的设置），请在**验证您的域**下，展开**高级 DKIM 设置**并选择要配置的 DKIM 类型：

   1. **Easy DKIM**：

      1. 在**身份类型**下，选择 **Easy DKIM**。

      1. 在 **DKIM 签名密钥长度**字段中，选择 [**RSA\$12048\$1BIT** 或 **RSA\$11024\$1BIT**](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

      1. 对于**将 DNS 记录发布到 Route53**，如果您的域通过 Amazon Route 53 托管，则有选择权让SES在创建时通过勾选 **Enabled (已启用)**来发布关联的 CNAME 记录。如果宁愿稍后发布这些记录，请清除 **Enabled** 复选框。（您可以稍后再来通过编辑身份将记录发布到 Route 53 - 请参阅 [使用 SES 控制台编辑身份](edit-verified-domain.md)。)

   1. ** Deterministic Easy DKIM（DEED）**：
**提示**  
这种形式的 DKIM 应用于创建全局（副本）身份时。DEED 将利用来自父区域的同名现有身份的 Easy DKIM 设置，并对新身份进行签名，而无需您执行其他 DNS 设置。有关更多信息，请参阅 [DEED](send-email-authentication-dkim-deed.md)。

      1. 在**身份类型**下，选择 **Deterministic Easy DKIM**。

      1. 从**父区域**下拉菜单中，选择一个父区域，其中存在与您为全局（副本）身份输入的名称相同的、经过 Easy DKIM 签名的身份。（您的副本区域默认为您登录 SES 控制台时所在的区域。）

   1. ** 提供 DKIM 身份验证令牌（BYODKIM）**：

      1. 确保您已生成公有-私有密钥对，并且已添加公有密钥到您的 DNS 主机提供商。有关更多信息，请参阅 [提供 Amazon SES 中您自己的 DKIM 身份验证令牌 (BYODKIM)](send-email-authentication-dkim-bring-your-own.md)。

      1. 在**身份类型**下，选择**提供 DKIM 身份验证令牌（BYODKIM）**。

      1. 对于 **Private key**（私有密钥），粘贴从您的公有-私有密钥对生成的私有密钥。私有密钥必须使用[至少 1024 位 RSA 加密（至多 2048 位）](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)，并且必须使用 base64 [(PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) 编码进行编码。
**注意**  
您必须删除生成的私有密钥的第一行和最后一行（分别为 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`）。此外，还必须删除生成的私有密钥中的换行符。产生的值是一个字符串，不包含空格或换行符。

      1. 对于**选择器名称**，输入您在域的 DNS 设置中指定的选择器的名称。

1. 确保在 **DKIM 签名**字段中，选中**已启用**复选框。

1. （可选）通过包含标签键和该键的可选值，向域身份添加一个或多个**标签**：

   1. 选择**添加新标签**，然后输入**键**。您可以选择为标签添加**值**。

   1. 重复此操作，但附加的标签不超过 50 个，或选择**删除**以删除标签。

1. 选择**创建身份**。

在使用 DKIM 创建和配置您的域身份以后，必须与您的 DNS 提供商完成验证过程 - 继续转到[与您的 DNS 提供商一起验证 DKIM 域身份](#just-verify-domain-proc)并执行适用于用来配置身份的 DKIM 类型的 DNS 身份验证过程。

**注意**  


## 与您的 DNS 提供商一起验证 DKIM 域身份
<a name="just-verify-domain-proc"></a>

在创建使用 DKIM 配置的域身份以后，您必须和您的 DNS 提供商按照以下对应的身份验证过程为您选择的 DKIM 类型完成验证过程。

如果您尚未创建域身份，请参阅[创建域身份](#verify-domain-procedure)。

**注意**  
验证域身份需要访问域的 DNS 设置。对这些设置的更改最长可能需要 72 小时才能生效。
如果您使用 Deterministic Easy DKIM（DEED）创建了全局（副本）身份，则不需要其他 DNS 设置——您可以跳过此步骤。有关更多信息，请参阅 [DEED](send-email-authentication-dkim-deed.md)。

**与您的 DNS 提供商一起验证 DKIM 域身份**

1. 在 **Loaded identities**（已加载的身份）表中，选择您想要验证的域。

1. 在身份详细信息页面的 **Authentication**（身份验证）选项卡上，展开 **Publish DNS records**（发布 DNS 记录）。

1. 根据配置域时使用的 DKIM 风格，**Easy DKIM** 或 **BYODKIM**，请按照对应的说明进行操作：

------
#### [ Easy DKIM ]

**验证使用 Easy DKIM 配置的域**

   1. 在 **Publish DNS records**（发布 DNS 记录）表中，复制三条会在此部分显示并发布（添加）到您的 DNS 提供商的别名记录。或者，您可以选择**下载 .csv 记录集**以将记录副本保存到您的电脑中。

      下图显示了要发布到 DNS 提供商的别名记录的示例。  
![\[\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/dkim_records.png)

   1. 添加别名记录到您的 DNS 主机提供商的各自域的 DNS 设置：
      + **所有 DNS 主机提供商***（Route 53 除外）*– 登录到您的域的 DNS 或 Web 托管提供商，然后添加别名记录，这些记录包含您之前复制或保存的值。不同的提供商具有不同的 DNS 记录更新过程。请在执行这些过程以后参阅 [DNS/托管提供商表](#dns-hosting-providing-table)。
**注意**  
少数 DNS 提供商不允许记录名称中包含下划线 (\$1)。但是，DKIM 记录名称中的下划线是必需的。如果您的 DNS 提供商不允许您在记录名称中输入下划线，请联系提供商的客户支持团队以获取帮助。
      + **Route 53 是您的 DNS 主机提供商**：如果您在使用 SES 发送电子邮件时使用的相同账户上使用的 Route 53，并且域已注册，SES 将自动更新您的域的 DNS 设置（若您在创建时启用 SES 来发布它们）。或者，您可以在创建后通过点击按钮轻松将它们发布到 Route 53 - 见 [使用 SES 控制台编辑身份](edit-verified-domain.md)。如果您的 DNS 设置未自动更新，或者您要将 CNAME 记录添加到 Route 53，但这些记录与您使用 SES 发送电子邮件时所使用的账户不同，请完成 [Editing records](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-editing.html)（编辑记录）中的步骤。
      + **如果您不确定您的 DNS 提供商是谁**：请询问您的系统管理员以获取更多信息。

------
#### [ BYODKIM ]

**验证使用 BYODKIM 配置的域**

   1. 概括而言，当使用 BYODKIM 创建了域或使用 BYODKIM 配置了现有域时，您要在 SES 控制台的 Advance DKIM Settings（高级 DKIM 设置）页面上将私有密钥（来自[自行生成的公有/私有密钥对](send-email-authentication-dkim-bring-your-own.md)）和选择器名称前缀添加至其对应的字段。现在，您必须通过为您的 DNS 主机提供商更新以下记录，完成验证过程。

   1. 在 **Publish DNS records**（发布 DNS 记录）表中，复制会在 **Name**（名称）列显示并发布（添加）到您的 DNS 提供商的选择器名称记录。或者，您可以选择 **Download .csv record set**（下载 .csv 记录集）以将其副本保存到您的电脑中。

      下图显示了要发布到 DNS 提供商的选择器名称记录的示例。  
![\[\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/byodkim_records.png)

   1. 登录到您的域的 DNS 或 Web 托管提供商，然后添加您之前复制或保存的选择器名称记录。不同的提供商具有不同的 DNS 记录更新过程。请在执行这些过程以后参阅 [DNS/托管提供商表](#dns-hosting-providing-table)。
**注意**  
少数 DNS 提供商不允许记录名称中包含下划线 (\$1)。但是，DKIM 记录名称中的下划线是必需的。如果您的 DNS 提供商不允许您在记录名称中输入下划线，请联系提供商的客户支持团队以获取帮助。

   1. 如果您尚未执行这些过程，请确保将来自您[自行生成的公有/私有密钥对](send-email-authentication-dkim-bring-your-own.md)的公有密钥添加到您的域的 DNS 或 Web 托管提供商。

      请注意，在 “**发布 DNS 记录**” 表中，“**值**” 列中显示的公钥记录仅显示 “p= *customerProvidedPublicKey*”，作为您保存到计算机或提供给 DNS 提供商的公钥值的占位符。
**注意**  
当您将公有密钥发布（添加）到 DNS 提供商时，必须按如下所示进行格式化：  
您必须删除生成的公有密钥的第一行和最后一行（分别为 `-----BEGIN PUBLIC KEY-----` 和 `-----END PUBLIC KEY-----`）。此外，您还必须删除生成的公有密钥中的换行符。产生的值是一个字符串，不包含空格或换行符。
您必须包含 `p=` 前缀，如 **Publish DNS records**（发布 DNS 记录）表中的 *Value*（值）列所示。

------
**提示**  
将 CNAME 记录添加到 DNS 配置时：  
使用 SES 控制台中提供的确切记录名称。
不要在 CNAME 记录名称的开头添加任何额外的下划线 (`_`)。
`_domainkey` 部分是记录名称的一部分，应完全按所示使用。
显示正确与错误 CNAME 记录实现的示例：  
*正确*：`abc123._domainkey.domain.com`
*错误*：`_abc123._domainkey.domain.com`

1. 对 DNS 设置的更改最长可能需要 72 小时才能生效。一旦 Amazon SES 在域的 DNS 设置中检测到全部必需的 DKIM 记录，则验证过程完成。域的 **DKIM 配置**显示为**成功**，**身份状态**显示为**已验证**。

1. 如果想配置和验证[自定义 MAIL FROM 域](mail-from.md)，则按照[配置自定义 MAIL FROM 域](mail-from.md#mail-from-set)中的过程进行操作。

下表包含的链接指向几个广泛使用的 DNS 提供商的文档。此列表并不详尽无遗，也不表示认可；同样，如果您的 DNS 提供商未列出，这并不意味着您不能将该域与 Amazon SES 一起使用。


| DNS/托管提供商 | 文档链接 | 
| --- | --- | 
|  GoDaddy  |  [添加 CNAME 记录](https://www.godaddy.com/help/add-a-cname-record-19236)（外部链接）  | 
|  DreamHost  |  [如何添加自定义 DNS 记录？](https://help.dreamhost.com/hc/en-us/articles/215414867-How-do-I-add-custom-DNS-records-)（外部链接）  | 
|  Cloudflare  |  [在 CloudFlare 中管理 DNS 记录](https://support.cloudflare.com/hc/en-us/articles/360019093151)（外部链接）  | 
|  HostGator  |  [使用 HostGator /eNOM 管理 DNS 记录](https://www.hostgator.com/help/article/manage-dns-records-with-hostgatorenom)（外部链接）  | 
|  Namecheap  |  [如何为我的域名添加TXT/SPF/DKIM/DMARC记录？](https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-txtspfdkimdmarc-records-for-my-domain) （外部链接）  | 
|  Names.co.uk  |  [更改您的域的 DNS 设置](https://www.names.co.uk/support/1156-changing_your_domains_dns_settings.html)（外部链接）  | 
|  Wix  |  [在您的 Wix 账户中添加或更新 CNAME 记录](https://support.wix.com/en/article/adding-or-updating-cname-records-in-your-wix-account)（外部链接）  | 

### 域验证故障排除
<a name="troubleshooting-domain-verification"></a>

如果您完成了上述步骤，但在 72 小时后域仍未通过验证，请检查以下各项：
+ 请确保您在正确的字段中输入了 DNS 记录的值。某些 DNS 提供商将 **Name/host**（名称/主机）字段称为 **Host**（主机）或 **Hostname**（主机名）。此外，一些提供商将 **Record value**（记录值）字段称为 **Points to**（指向）或 **Result**（结果）。
+ 确认您的提供商没有自动将您的域名附加到您在 DNS 记录中输入的**名称/主机**值后面。有些提供商附加了域名但未指出。如果您的提供商将您的域名附加到**名称/主机**值后面，则从值后将您的域名删除。您也可以尝试添加句点到 DNS 记录中值的末尾。此句点向提供商指示域名是完全限定的。
+ 每条 DNS 记录的 **Name/host**（名称/主机）值中都需要下划线字符 (\$1)。如果您的提供商不允许 DNS 记录名称中的下划线，请联系提供商的客户支持部门以获取更多帮助。
+ 您必须添加到域名的 DNS 设置中的验证记录各不相同 AWS 区域。如果您想使用域名发送来自多个地区的电子邮件 AWS 区域，则必须为每个区域创建和验证单独的域身份。

## 创建电子邮件地址身份
<a name="verify-email-addresses-procedure"></a>

完成以下过程以使用 Amazon SES 控制台创建电子邮件地址身份。

**要创建电子邮件地址身份（控制台）**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 选择**创建身份**。

1. 在**身份详细信息**下，选择**电子邮件地址**作为要创建的身份类型。

1. 对于 **Email address (电子邮件地址)**，输入您要使用的电子邮件地址。电子邮件地址必须是您能接收邮件并且有权访问的地址。

1. <a name="verified-email-identity-default-config-set"></a>（可选）如果要**分配默认配置集**，请选中该复选框。

   1. 对于**默认配置集**，选择要分配给身份的现有配置集。如果尚未创建任何配置集，请参阅 [在 SES 中使用配置集](using-configuration-sets.md)。
**注意**  
只有当发送时未指定其他配置集时，Amazon SES 才会按默认应用分配的配置集。如果指定了配置集，Amazon SES 将应用指定的配置集来代替默认的配置集。

1. （可选）通过包含标签键和该键的可选值，向域身份添加一个或多个**标签**：

   1. 选择**添加新标签**，然后输入**键**。您可以选择为标签添加**值**。

   1. 重复此操作，但附加的标签不超过 50 个，或选择**删除**以删除标签。

1. 要创建您的电子邮件地址身份，请选择**创建身份**。创建后，您应在五分钟内收到验证电子邮件。下一个步骤是按照下一节中的验证程序验证您的电子邮件地址。
**注意**  
您可以自定义发送到您尝试验证的电子邮件地址的邮件。有关更多信息，请参阅 [使用自定义验证电子邮件模板](#send-email-verify-address-custom)。

现在您已创建电子邮件地址身份，您必须完成验证过程：继续[验证电子邮件地址身份](#just-verify-email-proc)。

## 验证电子邮件地址身份
<a name="just-verify-email-proc"></a>

在创建电子邮件地址身份后，您必须完成验证过程。

如果您尚未创建电子邮件地址身份，请参阅[创建电子邮件地址身份](#verify-email-addresses-procedure)。

**验证电子邮件地址身份**

1. 查看用于创建身份的电子邮件地址的收件箱，并查找来自 no-reply-aws @amazon .com 的电子邮件。

1. 打开电子邮件并单击链接即可完成电子邮件地址的验证过程。完成后，**身份状态**将更新为**已验证**。

### 电子邮件地址验证问题排查
<a name="verify-email-addresses-troubleshooting"></a>

如果您在创建身份后五分钟内没有收到验证电子邮件，请尝试以下问题排查步骤：
+ 确保您正确地输入了电子邮件地址。
+ 请确保您尝试验证的电子邮件地址能够接收电子邮件。您可以使用其他电子邮件地址发送测试电子邮件到您要验证的地址来测试此地址。
+ 检查您的垃圾邮件文件夹。
+ 验证电子邮件中的链接将在 24 小时后过期。要发送新的验证电子邮件，请选择身份详细信息页面顶部的**重新发送**。

## 创建和验证身份并同时分配默认配置集
<a name="default-config-set-at-create-api"></a>

您可以使用 Amazon SES API v2 中的[CreateEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailIdentity.html)操作来创建新的电子邮件身份，同时设置其默认配置集。

**注意**  
在完成此部分中的过程之前，必须安装和配置 AWS CLI。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**要设置默认配置集，请使用 AWS CLI**
+ 在命令行中，输入以下命令以使用该[CreateEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailIdentity.html)操作。

```
aws sesv2 create-email-identity --email-identity ADDRESS-OR-DOMAIN --configuration-set-name CONFIG-SET
```

在前面的命令中，*ADDRESS-OR-DOMAIN*替换为要验证的电子邮件身份。*CONFIG-SET*替换为要设置为身份默认配置集的配置集的名称。

如果该命令成功执行，它将退出并且不提供任何输出。

**验证您的电子邮件地址**

1. 检查您正在验证的电子邮件地址的收件箱。您将收到一封带有以下主题的邮件：“Amazon Web Services-所在地区的电子邮件地址验证请求” *RegionName* AWS 区域 ，其中*RegionName*是您尝试验证电子邮件地址的名称。

   打开该邮件，然后单击其中的链接。
**注意**  
验证邮件中的链接将在发送该邮件 24 小时后过期。在您收到验证电子邮件 24 小时后，重复步骤 1–5 可收到具有有效链接的验证电子邮件。

1. 在 Amazon SES 控制台中的 **Identity Management (身份管理)** 下，选择 **Email Addresses (电子邮件地址)**。在电子邮件地址列表中，找到您要验证的电子邮件地址。如果已验证此电子邮件地址，则**状态**列中的值为“已验证”。

**验证您的域**

如果您在上述命令行过程中为 `--email-identity` 参数输入了域名，请参阅[验证域身份](#just-verify-domain-proc)了解更多信息。

## 使用自定义验证电子邮件模板
<a name="send-email-verify-address-custom"></a>

当您尝试验证电子邮件地址时，Amazon SES 会向该地址发送一封电子邮件，其内容类似下图所示的示例。

![\[Email verification request from Amazon SES and Pinpoint with confirmation link and instructions.\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/verification_email_example.png)


有几个 Amazon SES 客户构建了通过 Amazon SES 代表其自己的客户发送电子邮件的应用程序（例如电子邮件营销套件或票证系统）。这些应用程序的最终用户可能会对电子邮件验证过程感到困惑：验证电子邮件使用的是 Amazon SES 品牌，而不是应用程序的品牌，并且这些最终用户从未直接注册使用 Amazon SES。

如果您的 Amazon SES 使用案例要求您的客户验证其电子邮件地址以便使用 Amazon SES，您可以创建自定义的验证电子邮件。这些自定义电子邮件有助于减少客户困扰，并加快您的客户完成注册过程的速度。

**注意**  
要使用此特征，您的 Amazon SES 账户必须脱离沙盒。有关更多信息，请参阅 [请求生产访问权限（从 Amazon SES 沙盒中移出）](request-production-access.md)。

**Topics**
+ [创建自定义验证电子邮件模板](#send-email-verify-address-custom-creating)
+ [编辑自定义验证电子邮件模板](#send-email-verify-address-custom-editing)
+ [使用自定义模板发送验证电子邮件](#send-email-verify-address-custom-sending)
+ [自定义验证电子邮件常见问题](#send-email-verify-address-custom-faq)

### 创建自定义验证电子邮件模板
<a name="send-email-verify-address-custom-creating"></a>

要创建自定义验证电子邮件，请使用 `CreateCustomVerificationEmailTemplate` API 操作。此操作使用以下输入：


****  

| 属性 | 说明 | 
| --- | --- | 
| TemplateName | 模板名称。您指定的名称必须唯一。 | 
| FromEmailAddress | 发出验证电子邮件的电子邮件地址。您指定的地址或域必须经过验证，才能用于您的 Amazon SES 账户。 `FromEmailAddress` 属性不支持显示名称（也称为“易记发件人”名称）。  | 
| TemplateSubject | 验证电子邮件的主题行。 | 
| TemplateContent | 电子邮件正文。电子邮件正文可包含 HTML，但存在一定的限制。有关更多信息，请参阅 [自定义验证电子邮件常见问题](#send-email-verify-address-custom-faq)。 | 
| SuccessRedirectionURL | 在成功验证用户电子邮件地址的情况下将用户转到的 URL。 | 
| FailureRedirectionURL | 在未成功验证用户电子邮件地址的情况下将用户转到的 URL。 | 

您可以使用 AWS SDKs 或通过 AWS CLI `CreateCustomVerificationEmailTemplate`操作创建自定义验证电子邮件模板。要了解更多信息 AWS SDKs，请参阅[适用于 Amazon Web Services 的工具](https://aws.amazon.com/tools/#sdk)。有关更多信息 AWS CLI，请参阅[AWS 命令行界面。](https://aws.amazon.com/cli)

下一节包含使用 AWS CLI创建自定义验证电子邮件的步骤。这些步骤假定您已安装和配置 AWS CLI。有关安装和配置的更多信息 AWS CLI，请参阅《[AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**注意**  
您必须使用 1.14.6 或更高版本的 AWS CLI才能完成本节中所述步骤。为了获得最佳效果，请升级到最新版本的 AWS CLI。有关更新的更多信息 AWS CLI，请参阅 AWS Command Line Interface 用户指南[AWS Command Line Interface中的安装](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)。

1. 在文本编辑器中，创建一个新文件。将以下内容粘贴到编辑器中：

   ```
   {
     "TemplateName": "SampleTemplate",
     "FromEmailAddress": "sender@example.com",
     "TemplateSubject": "Please confirm your email address",
     "TemplateContent": "<html>
                         <head></head>
                         <body style='font-family:sans-serif;'>
                           <h1 style='text-align:center'>Ready to start sending 
                           email with ProductName?</h1>
                           <p>We here at Example Corp are happy to have you on
                             board! There's just one last step to complete before
                             you can start sending email. Just click the following
                             link to verify your email address. Once we confirm that 
                             you're really you, we'll give you some additional 
                             information to help you get started with ProductName.</p>
                         </body>
                         </html>",
     "SuccessRedirectionURL": "https://www.example.com/verifysuccess",
     "FailureRedirectionURL": "https://www.example.com/verifyfailure"
   }
   ```
**重要**  
为提高可读性，上例中的 `TemplateContent` 属性包含了换行符。如果将以上示例粘贴到文本文件中，请先删除换行符再继续。

   将 `TemplateName`、`FromEmailAddress`、`TemplateSubject`、`TemplateContent`、`SuccessRedirectionURL` 和 `FailureRedirectionURL` 的值替换为您自己的值。
**注意**  
您为 `FromEmailAddress` 参数指定的电子邮件地址必须经过验证，或者必须是已验证域中的地址。有关更多信息，请参阅 [Amazon SES 中已验证的身份](verify-addresses-and-domains.md)。

   完成后，将文件另存为 `customverificationemail.json`。

1. 在命令行键入以下命令，创建自定义验证电子邮件模板：

   ```
   aws sesv2 create-custom-verification-email-template --cli-input-json file://customverificationemail.json
   ```

1. （可选）可以键入以下命令确认模板已创建：

   ```
   aws sesv2 list-custom-verification-email-templates
   ```

### 编辑自定义验证电子邮件模板
<a name="send-email-verify-address-custom-editing"></a>

您可以使用 `UpdateCustomVerificationEmailTemplate` 操作编辑自定义验证电子邮件模板。此操作接受与 `CreateCustomVerificationEmailTemplate` 操作相同的输入（即 `TemplateName`、`FromEmailAddress`、`TemplateSubject`、`TemplateContent`、`SuccessRedirectionURL` 和 `FailureRedirectionURL` 属性）。但是，对于 `UpdateCustomVerificationEmailTemplate` 操作，这些属性都不是必需的。当为 `TemplateName` 传递与现有自定义验证电子邮件模板名称相同的值时，您指定的属性将覆盖模板中原有的属性。

### 使用自定义模板发送验证电子邮件
<a name="send-email-verify-address-custom-sending"></a>

创建至少一个自定义验证电子邮件模板后，您可以通过调用 [SendCustomVerificationEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendCustomVerificationEmail.html)API 操作将其发送给您的客户。您可以使用 AWS SDKs 或中的任何一个来调用该`SendCustomVerificationEmail`操作 AWS CLI。`SendCustomVerificationEmail` 操作使用以下输入：


****  

| 属性 | 说明 | 
| --- | --- | 
| EmailAddress | 要验证的电子邮件地址。 | 
| TemplateName | 发送到待验证电子邮件地址的自定义验证电子邮件模板的名称。 | 
| ConfigurationSetName | （可选）发送验证电子邮件时要使用的配置集的名称。 | 

例如，假设您的客户在您的应用程序中使用表单注册您的服务。当客户填写并提交表单之后，应用程序将调用 `SendCustomVerificationEmail` 操作，传递客户的电子邮件地址和您要使用的模板的名称。

客户将收到一封使用您创建的自定义电子邮件模板的电子邮件。Amazon SES 会为收件人自动添加一个唯一链接，以及简短的免责声明。下图显示了使用在[创建自定义验证电子邮件模板](#send-email-verify-address-custom-creating)中创建的模板的示例验证电子邮件。

![\[Email verification message with instructions and a link to confirm the recipient's address.\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/cve_sample_message.png)


### 自定义验证电子邮件常见问题
<a name="send-email-verify-address-custom-faq"></a>

本部分包含有关自定义验证电子邮件模板特征的常见问题解答。

#### 问题 1：我可以创建多少个自定义验证电子邮件模板？
<a name="send-email-verify-address-custom-faq-q1"></a>

您可以为每个 Amazon SES 账户创建最多 50 个自定义验证电子邮件模板。

#### 问题 2：如何向收件人显示自定义验证电子邮件？
<a name="send-email-verify-address-custom-faq-q2"></a>

自定义验证电子邮件模板包含您在创建模板时指定的内容，后跟收件人必须单击以验证其电子邮件地址的链接。

#### 问题 3：我是否可以预览自定义验证电子邮件？
<a name="send-email-verify-address-custom-faq-q3"></a>

要预览自定义验证电子邮件，请使用 `SendCustomVerificationEmail` 操作向您自己的地址发送一封验证电子邮件。如果您不单击验证链接，那么 Amazon SES 不会创建新的身份。如果您单击验证链接，您可以选择使用 `DeleteIdentity` 操作删除新创建的身份。

#### 问题 4：我是否可以在自定义验证电子邮件模板中包含图像？
<a name="send-email-verify-address-custom-faq-q4"></a>

您可以使用 base64 编码在模板 HTML 中嵌入图像。当您以这种方式嵌入图像时，Amazon SES 会自动将图像转换为附件。您可以在命令行中发出以下命令之一对图像进行编码：

------
#### [ Linux, macOS, or Unix ]

```
base64 -i imagefile.png | tr -d '\n' > output.txt
```

------
#### [ Windows ]

```
certutil -encodehex -f imagefile.png output.txt 0x40000001
```

------

将 `imagefile.png` 替换为您要编码的文件的名称。在上面的两个命令中，base64 编码的图像都保存到 `output.txt`。

您可以在模板的 HTML 中加入以下内容以嵌入 base64 编码的图像：`<img src="data:image/png;base64,base64EncodedImage"/>`

在上一个示例中，将 `png` 替换为编码的图像的文件类型 (例如 jpg 或 gif)，并将 `base64EncodedImage` 替换为 base64 编码的图像 (即前述命令之一中的 `output.txt` 的内容)。

#### 问题 5：对自定义验证电子邮件模板中包含的内容是否有任何限制？
<a name="send-email-verify-address-custom-faq-q5"></a>

自定义验证电子邮件模板的大小不得超过 10 MB。此外，包含 HTML 的自定义验证电子邮件模板只能使用下表中列出的标签和属性。


| HTML 标签 | 允许的属性 | 
| --- | --- | 
| abbr | class, id, style, title | 
| acronym | class, id, style, title | 
| address | class, id, style, title | 
| area | class, id, style, title | 
| b | class, id, style, title | 
| bdo | class, id, style, title | 
| big | class, id, style, title | 
| blockquote | cite, class, id, style, title | 
| body | class, id, style, title | 
| br | class, id, style, title | 
| button | class, id, style, title | 
| caption | class, id, style, title | 
| center | class, id, style, title | 
| cite | class, id, style, title | 
| code | class, id, style, title | 
| col | class, id, span, style, title, width | 
| colgroup | class, id, span, style, title, width | 
| dd | class, id, style, title | 
| del | class, id, style, title | 
| dfn | class, id, style, title | 
| dir | class, id, style, title | 
| div | class, id, style, title | 
| dl | class, id, style, title | 
| dt | class, id, style, title | 
| em | class, id, style, title | 
| fieldset | class, id, style, title | 
| font | class, id, style, title | 
| form | class, id, style, title | 
| h1 | class, id, style, title | 
| h2 | class, id, style, title | 
| h3 | class, id, style, title | 
| h4 | class, id, style, title | 
| h5 | class, id, style, title | 
| h6 | class, id, style, title | 
| head | class, id, style, title | 
| hr | class, id, style, title | 
| html | class, id, style, title | 
| i | class, id, style, title | 
| img | align, alt, class, height, id, src, style, title, width | 
| input | class, id, style, title | 
| ins | class, id, style, title | 
| kbd | class, id, style, title | 
| label | class, id, style, title | 
| legend | class, id, style, title | 
| li | class, id, style, title | 
| map | class, id, style, title | 
| menu | class, id, style, title | 
| ol | class, id, start, style, title, type | 
| optgroup | class, id, style, title | 
| option | class, id, style, title | 
| p | class, id, style, title | 
| pre | class, id, style, title | 
| q | cite, class, id, style, title | 
| s | class, id, style, title | 
| samp | class, id, style, title | 
| select | class, id, style, title | 
| small | class, id, style, title | 
| span | class, id, style, title | 
| strike | class, id, style, title | 
| strong | class, id, style, title | 
| sub | class, id, style, title | 
| sup | class, id, style, title | 
| table | class, id, style, summary, title, width | 
| tbody | class, id, style, title | 
| td | abbr, axis, class, colspan, id, rowspan, style, title, width | 
| textarea | class, id, style, title | 
| tfoot | class, id, style, title | 
| th | abbr, axis, class, colspan, id, rowspan, scope, style, title, width | 
| thead | class, id, style, title | 
| tr | class, id, style, title | 
| tt | class, id, style, title | 
| u | class, id, style, title | 
| ul | class, id, style, title, type | 
| var | class, id, style, title | 

**注意**  
自定义验证电子邮件模板不能包含评论标签。

#### 问题 6：我的账户中可以有多少个经过验证的电子邮件地址？
<a name="send-email-verify-address-custom-faq-q6"></a>

您的 Amazon SES 账户在每个 AWS 地区最多可以有 10,000 个经过验证的身份。在 Amazon SES 中，*身份*包括经过验证的域和电子邮件地址。

#### 问题 7：我是否可以使用 Amazon SES 控制台来创建自定义验证电子邮件模板？
<a name="send-email-verify-address-custom-faq-q7"></a>

目前，只能使用 Amazon SES API 来创建、编辑和删除自定义验证电子邮件。

#### 问题 8：我是否可以跟踪在客户收到自定义验证电子邮件时发生的打开和单击事件？
<a name="send-email-verify-address-custom-faq-q8"></a>

自定义验证电子邮件不提供打开或单击跟踪能力。

#### 问题 9：自定义验证电子邮件是否可以包含自定义标头？
<a name="send-email-verify-address-custom-faq-q9"></a>

自定义验证电子邮件不能包含自定义标头。

#### 问题 10：我能否删除自定义验证电子邮件底部显示的文本？
<a name="send-email-verify-address-custom-faq-q10"></a>

以下文本将自动添加到每封自定义验证电子邮件的末尾，且不可删除：

*如果您未请求验证此电子邮件地址，请忽略此消息。*

#### 问题 11：自定义验证电子邮件是否有 DKIM 签名？
<a name="send-email-verify-address-custom-faq-q11"></a>

要让验证电子邮件获得 DKIM 签名，必须配置在您创建验证电子邮件模板时在 `FromEmailAddress` 属性中指定的电子邮件地址以生成 DKIM 签名。有关为域和电子邮件地址设置 DKIM 的更多信息，请参阅[在 Amazon SES 中使用 DKIM 对电子邮件进行身份验证](send-email-authentication-dkim.md)。

#### 问题 12：为什么自定义验证电子邮件模板 API 操作不显示在软件开发工具包或 CLI 中？
<a name="send-email-verify-address-custom-faq-q12"></a>

如果您无法在 SDK 或中使用自定义验证电子邮件模板操作 AWS CLI，则可能使用的是旧版本的 SDK 或 CLI。自定义验证电子邮件模板操作可在以下 SDKs 和 CLIs：
+ 版本 1.14.6 或更高版本 AWS Command Line Interface
+ 版本 3.3.205.0 或更高版本 适用于 .NET 的 AWS SDK
+ 适用于 C\$1\$1 的 SDK 的 1.3.20170531.19 或更高版本 AWS 
+ 版本 1.12.43 或更高版本的 适用于 Go 的 AWS SDK
+ 版本 1.11.245 或更高版本的 适用于 Java 的 AWS SDK
+ 版本 2.166.0 或更高版本 适用于 JavaScript 的 AWS SDK
+ 版本 3.45.2 或更高版本 适用于 PHP 的 AWS SDK
+ 版本 1.5.1 或更高版本 AWS SDK for Python (Boto)
+  适用于 Ruby 的 AWS SDK中的 `aws-sdk-ses` Gem 的 1.5.0 版本或更高版本

#### 问题 13：我发送自定义验证电子邮件时，为什么会收到 `ProductionAccessNotGranted` 错误？
<a name="send-email-verify-address-custom-faq-q13"></a>

`ProductionAccessNotGranted` 错误表示您的账户仍在 Amazon SES 沙盒中。只有在您的账户已从沙盒中移出后，您才能发送自定义验证电子邮件。有关更多信息，请参阅 [请求生产访问权限（从 Amazon SES 沙盒中移出）](request-production-access.md)。

# 在 Amazon SES 中管理身份
<a name="managing-identities"></a>

在 Amazon SES 控制台中，您可以查看为每个 AWS 区域创建的身份、打开某个身份以查看和编辑其详细信息设置、关联默认的配置集或删除一个或多个身份。

**注意**  
本节中引用的步骤仅适用于特定 AWS 区域中的身份。要管理在多个区域中创建的身份，请为每个 AWS 区域 重复这些过程。

**Topics**
+ [使用 SES 控制台查看身份](view-verified-domains.md)
+ [使用 SES 控制台删除身份](remove-verified-domain.md)
+ [使用 SES 控制台编辑身份](edit-verified-domain.md)
+ [使用 SES API 编辑身份以使用默认配置集](managing-configuration-sets-default-adding.md)
+ [使用 SES API 检索身份所用的默认配置集](managing-configuration-sets-default-returning.md)
+ [使用 SES API 覆盖身份所用的当前默认配置集](managing-configuration-sets-default-overriding.md)

# 使用 SES 控制台查看身份
<a name="view-verified-domains"></a>

您可以使用 Amazon SES 控制台来查看已验证或待验证的域和电子邮件地址身份。您还可以查看验证失败的身份。

**查看您的域和电子邮件地址身份**

1. 登录AWS 管理控制台并打开 Amazon SES 控制台，网址为 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在控制台中，使用区域选择器选择要查看其身份列表的 AWS 区域。
**注意**  
此过程仅显示选定 AWS 区域 的身份列表。

1. 在导航窗格中的**配置**下，选择**已验证身份**。**Loaded identities**（已加载的身份）表同时显示域和电子邮件地址身份。**状态**列显示身份是已验证、正在等待验证还是未通过验证过程 - 所有可能状态的定义如下所示：
   + **已验证** – 您的身份已成功验证，可在 SES 中发送。
   + **失败** – SES 无法验证您的身份。如果是域，则意味着 SES 无法在 72 小时内检测到 DNS 记录。如果是电子邮件地址，则表示发送到该电子邮件地址的验证电子邮件未在 24 小时内得到确认。
   + **挂起** — SES 仍在尝试验证身份。
   + **临时故障** — 对于之前验证的域，SES 将定期检查验证所需的 DNS 记录。如果在某个时候 SES 无法检测到记录，状态将更改为*临时故障*。SES 将在 72 小时内重新检查 DNS 记录，如果无法检测到该记录，则域状态将更改为*失败*。如果能够检测到该记录，则域状态将更改为*已验证*。
   + **未开始** — 您尚未开始验证过程。

1. 要按验证状态对身份进行排序，请选择**状态**列。

1. 要查看身份的详细信息页面，请选择要查看的身份。

# 使用 SES 控制台删除身份
<a name="remove-verified-domain"></a>

您可以使用 Amazon SES 控制台从您的选定账户中删除域名或电子邮件地址身份 AWS 区域。

**删除域或电子邮件地址身份**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在控制台中，使用区域选择器选择要 AWS 区域 从中删除一个或多个身份。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

   **Loaded identities**（已加载的身份）表显示域和电子邮件地址身份的列表。

1. 在**身份**列中，选择要删除的身份。选中要删除的每个身份旁边的复选框，可以删除多个身份。

1. 选择**删除**。

# 使用 SES 控制台编辑身份
<a name="edit-verified-domain"></a>

您可以使用 Amazon SES 控制台，从所选 AWS 区域的账户中编辑域或电子邮件地址身份。

**编辑域或电子邮件地址身份**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在控制台中，使用区域选择器选择要从中编辑一个或多个身份的 AWS 区域。

1. 在导航窗格中的**配置**，选择**已验证身份**。

   **Loaded identities**（已加载的身份）表显示域和电子邮件地址身份的列表。

1. 在 **Identity**（身份）列中，选择要编辑的身份（通过直接单击身份名称而不是选中其复选框）。

1. 在身份详情页面上，选择包含要编辑的类别的选项卡。

1. 在所选标签的任何类别容器中，选择要编辑的属性的**编辑**按钮，进行更改，然后选择**保存更改**。

   1. 如果您希望在**身份验证**选项卡下编辑属性，并且您的域标识托管在 Amazon Route 53 中，而且您还没有发布其 DNS 记录，则在**域名密钥标识的邮件（DKIM）**或**自定义 MAIL FROM 域**容器中的任一或两个中都将有**将 DNS 记录发布到 Route53** 按钮（**编辑**按钮旁边）。
**注意**  
**身份验证**选项卡仅在您的账户中具有使用验证域的验证域的验证域或电子邮件地址时才显示。

   1. 您可以直接从**将 DNS 记录发布到 Route53** 按钮-只需点击它，就会显示确认横幅，然后**将 DNS 记录发布到 Route53** 按钮对于相应容器将不再可见。

1. 对要编辑的身份的每个属性重复步骤 5 和 6。

# 使用 SES API 编辑身份以使用默认配置集
<a name="managing-configuration-sets-default-adding"></a>

您可以使用该[PutEmailIdentityConfigurationSetAttributes](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_PutEmailIdentityConfigurationSetAttributes.html)操作在现有电子邮件身份中添加或删除默认配置集。

**注意**  
在完成此部分中的过程之前，必须安装和配置 AWS CLI。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**要添加默认配置集，请使用 AWS CLI**
+ 在命令行中，输入以下命令以使用该[PutEmailIdentityConfigurationSetAttributes](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_PutEmailIdentityConfigurationSetAttributes.html)操作。

```
aws sesv2 put-email-identity-configuration-set-attributes --email-identity ADDRESS-OR-DOMAIN --configuration-set-name CONFIG-SET
```

在前面的命令中，*ADDRESS-OR-DOMAIN*替换为要验证的电子邮件身份。*CONFIG-SET*替换为要设置为身份默认配置集的配置集的名称。

如果该命令成功执行，它将退出并且不提供任何输出。

**要移除默认配置集，请使用 AWS CLI**
+ 在命令行中，输入以下命令以使用该[PutEmailIdentityConfigurationSetAttributes](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_PutEmailIdentityConfigurationSetAttributes.html)操作。

```
aws sesv2 put-email-identity-configuration-set-attributes --email-identity ADDRESS-OR-DOMAIN
```

在前面的命令中，*ADDRESS-OR-DOMAIN*替换为要验证的电子邮件身份。

如果该命令成功执行，它将退出并且不提供任何输出。

# 使用 SES API 检索身份所用的默认配置集
<a name="managing-configuration-sets-default-returning"></a>

如果适用，您可以使用该[GetEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html)操作返回为电子邮件身份设置的默认配置。

**注意**  
在完成此部分中的过程之前，必须安装和配置 AWS CLI。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**要返回默认配置集，请使用 AWS CLI**
+ 在命令行输入以下命令以使用该[GetEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html)操作。

```
aws sesv2 get-email-identity --email-identity ADDRESS-OR-DOMAIN
```

在前面的命令中，将*ADDRESS-OR-DOMAIN*替换为您想知道其默认配置集（如果有）的电子邮件身份。

如果命令成功执行，它会提供包含电子邮件身份详细信息的 JSON 对象。

# 使用 SES API 覆盖身份所用的当前默认配置集
<a name="managing-configuration-sets-default-overriding"></a>

您可以使用该[SendEmail](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)操作来发送具有不同配置集的电子邮件。如果您执行此操作，那么您指定的配置集会覆盖身份的默认配置集。

**注意**  
在完成此部分中的过程之前，必须安装和配置 AWS CLI。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**要覆盖默认配置集，请使用 AWS CLI**
+ 在命令行中，输入以下命令以使用该[SendEmail](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)操作。

```
aws sesv2 send-email --destination file://DESTINATION-JSON --content file://CONTENT-JSON --from-email-address ADDRESS-OR-DOMAIN --configuration-set-name CONFIG-SET
```

在前面的命令中，*DESTINATION-JSON*替换为目标 JSON 文件、*ADDRESS-OR-DOMAIN*内容 JSON 文件、发件人电子邮件地址以及*CONFIG-SET*您要使用的配置集的名称，而不是为身份设置的默认配置。*CONTENT-JSON*

如果命令成功执行，它会输出一个 `MessageId`。

# 在 Amazon SES 中配置身份
<a name="configure-identities"></a>

Amazon Simple Email Service（Amazon SES）使用简单邮件传输协议（SMTP）发送电子邮件。由于 SMTP 本身不提供任何身份验证，因此垃圾邮件发送者可以发送声称来自其他任何人的电子邮件，同时隐藏其真实来源。垃圾邮件发送者通过伪造电子邮件标头并欺骗源 IP 地址，可误导收件人相信其收到的电子邮件是真实的。

大多数转发电子邮件流量的 ISP 会采取措施来评估电子邮件是否合法。ISP 采取的一项措施是确定电子邮件是否已经过*身份验证*。身份验证要求发件人证明他们是用来发送电子邮件的账户所有者。在某些情况下，ISP 会拒绝转发未经身份验证的电子邮件。为了确保实现最佳送达率，建议您对电子邮件进行身份验证。

以下部分介绍 ISP 使用的两种身份验证机制：发件人策略框架（SPF）和域名密钥识别邮件（DKIM），并提供有关如何将这些标准与 Amazon SES 结合使用的说明。
+ 要了解 SPF (它提供了一种回溯到发送电子邮件的系统的方式)，请参阅[在 Amazon SES 中使用 SPF 对电子邮件进行身份验证](send-email-authentication-spf.md)。
+ 要了解 DKIM (一种标准，让您可以为电子邮件签名以向 ISP 显示您的邮件合法且在传输过程中未被修改)，请参阅 [在 Amazon SES 中使用 DKIM 对电子邮件进行身份验证](send-email-authentication-dkim.md)。
+ 要了解如何遵循基于域的消息身份验证、报告和合规性 (DMARC) (依赖于 SPF 和 DKIM)，请参阅 [遵守 Amazon SES 中的 DMARC 身份验证协议](send-email-authentication-dmarc.md)。

# 电子邮件身份验证方法
<a name="email-authentication-methods"></a>

Amazon Simple Email Service（Amazon SES）使用简单邮件传输协议（SMTP）发送电子邮件。由于 SMTP 本身不提供任何身份验证，因此垃圾邮件发送者可以发送声称来自其他任何人的电子邮件，同时隐藏其真实来源。垃圾邮件发送者通过伪造电子邮件标头并欺骗源 IP 地址，可误导收件人相信其收到的电子邮件是真实的。

大多数转发电子邮件流量的 ISP 会采取措施来评估电子邮件是否合法。ISP 采取的一项措施是确定电子邮件是否已经过身份验证。身份验证要求发件人证明他们是用来发送电子邮件的账号的所有者。在某些情况下，ISP 会拒绝转发未经身份验证的电子邮件。为了确保实现最佳送达率，建议您对电子邮件进行身份验证。

**Topics**
+ [在 Amazon SES 中使用 DKIM 对电子邮件进行身份验证](send-email-authentication-dkim.md)
+ [在 Amazon SES 中使用 SPF 对电子邮件进行身份验证](send-email-authentication-spf.md)
+ [使用自定义 MAIL FROM 域](mail-from.md)
+ [遵守 Amazon SES 中的 DMARC 身份验证协议](send-email-authentication-dmarc.md)
+ [在 Amazon SES 中使用 BIMI](send-email-authentication-bimi.md)

# 在 Amazon SES 中使用 DKIM 对电子邮件进行身份验证
<a name="send-email-authentication-dkim"></a>

DomainKeys *Identified *Mail* (DKIM*) 是一种电子邮件安全标准，旨在确保声称来自特定域名的电子邮件确实得到了该域名所有者的授权。其使用公有密钥加密技术通过私有密钥对电子邮件进行签名。然后，收件人服务器就可以使用发布到域 DNS 的公有密钥来验证电子邮件的各个部分在传输过程中未被修改。

DKIM 签名为可选项。您可决定使用 DKIM 签名为您的电子邮件签名，以通过符合 DKIM 的电子邮件提供商提高送达率。Amazon SES 提供三种使用 DKIM 签名为您的邮件签名的选项：
+ **Easy DKIM**：SES 生成公有/私有密钥对，并自动将 DKIM 签名添加到您通过该身份发送的每封邮件，请参阅[Amazon SES 中的 Easy DKIM](send-email-authentication-dkim-easy.md)。
+ D@@ **eterministic Easy DKIM (DEED)**： AWS 区域 通过创建副本身份，自动继承 DKIM 签名属性的副本身份作为使用 Easy DKIM 的父身份，使您能够在多个之间保持一致的 DKIM 签名，请参阅。[在 Amazon SES 中使用 Deterministic Easy DKIM（DEED）](send-email-authentication-dkim-deed.md)
+ **BYODKIM（自带 DKIM）**：您提供自己的公有/私有密钥对，而 SES 将 DKIM 签名添加到您通过该身份发送的每封邮件，请参阅[提供 Amazon SES 中您自己的 DKIM 身份验证令牌 (BYODKIM)](send-email-authentication-dkim-bring-your-own.md)。
+ **手动添加 DKIM 签名**：您将自己的 DKIM 签名添加到使用 `SendRawEmail` API 发送的电子邮件，请参阅[Amazon SES 中的手动 DKIM 签名](send-email-authentication-dkim-manual.md)。

## DKIM 签名密钥长度
<a name="send-email-authentication-dkim-1024-2048"></a>

由于许多 DNS 提供商现在完全支持 DKIM 2048 位 RSA 加密，Amazon SES 还支持 DKIM 2048 以允许对电子邮件进行更安全的身份验证，因此当您从 API 或控制台配置 Easy DKIM 时，请将其用作原定设置的密钥长度。2048 位密钥也可以在自带 DKIM (BYODKIM) 中设置和使用，其中您的签名密钥长度必须至少为 1024 位，但不超过 2048 位。

为了安全和电子邮件的送达率，当使用 Easy DKIM 配置时，您可以选择使用 1024 和 2048 位密钥长度，并且在任何 DNS 提供商仍不支持 2048 位导致问题时，可以灵活地返回到 1024 位。*创建新身份时，除非指定 1024 位，否则默认情况下将使用 DKIM 2048 创建身份。*

为了保持传输中电子邮件的送达率，您可以更改 DKIM 密钥长度的频率将受到限制。这些限制包括：
+ 无法切换到与已配置的密钥长度相同的密钥长度。
+ 无法在 24 小时内多次切换到不同的密钥长度（除非这是该时间段内第一次降级到 1024 位）。

当您的电子邮件在传输过程中时，DNS 会使用您的公有密钥验证您的电子邮件；因此，如果您更改密钥过快或频繁，DNS 可能无法对您的电子邮件进行 DKIM 身份验证，因为前一个密钥可能已失效，因此，这些限制可防止出现这种情况。

## DKIM 注意事项
<a name="send-email-authentication-dkim-easy-considerations"></a>

当您使用 DKIM 对电子邮件进行身份验证时，以下规则适用：
+ 您只需为在“发件人”地址中使用的域设置 DKIM。您无需为在“退回路径”或“回复对象”地址中使用的域设置 DKIM。
+ Amazon SES 已在多个 AWS 地区推出。如果您使用多个 AWS 区域发送电子邮件，则必须在每个区域中都完成 DKIM 设置过程才能确保您的所有电子邮件都进行 DKIM 签名。
+ 由于从父域继承 DKIM 属性，当您通过 DKIM 身份验证验证域时：
  + DKIM 身份验证会应用到该域的全部子域。
    + 如果您不希望子域使用 DKIM 身份验证，子域的 DKIM 设置可以通过禁用集成以及在未来重新启用的功能覆盖父域的设置。
  + DKIM 身份验证还将应用于由在其地址中引用 DKIM 已验证域的电子邮件身份发出的全部电子邮件。
    + 如果您想要发送电子邮件而不使用 DKIM 身份验证，电子邮件地址的 DKIM 设置可以通过禁用集成以及在未来重新启用的功能覆盖子域的设置（若适用）。

## 了解继承的 DKIM 签名属性
<a name="dkim-easy-setup-email-key-points"></a>

重要的是，首先要理解，如果域配置了 DKIM，无论使用的是 Easy DKIM 还是 BYODKIM，电子邮件地址标识都会从其父域继承其 DKIM 签名属性。因此，在电子邮件地址标识上禁用或启用 DKIM 签名实际上是基于以下关键事实覆盖域的 DKIM 签名属性：
+ 如果您已为电子邮件地址所属于的域设置了 DKIM，则无需再为电子邮件地址设置 DKIM。
  + 在为域设置 DKIM 时，Amazon SES 通过从父域继承的 DKIM 属性，自动认证来自该域上每个地址的每一封邮件。
+ 特定电子邮件地址标识的 DKIM 设置*自动覆盖地址所属的父域或子域（如适用）*的设置。

由于电子邮件地址身份的 DKIM 签名属性是从父域继承的，因此如果您计划覆盖这些属性，则必须记住覆盖的层次规则，如下表所述。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-email-authentication-dkim.html)

通常不建议禁用您的 DKIM 签名，因为这有可能损害您的发件人声誉，并且会增加您发送的邮件转到垃圾邮件或垃圾邮件文件夹或域名被欺骗的风险。

但是，对于任何特定的使用情形或外围业务决策，可以覆盖电子邮件地址标识上的域继承的 DKIM 签名属性，您可能必须永久或临时禁用 DKIM 签名，或者在以后重新将其启用。请参阅[覆盖在电子邮件地址身份上继承的 DKIM 签名](send-email-authentication-dkim-easy-managing.md#send-email-authentication-dkim-easy-setup-email)。

# Amazon SES 中的 Easy DKIM
<a name="send-email-authentication-dkim-easy"></a>

为域身份设置 Easy DKIM 后，Amazon SES 会自动向您从该身份发送的每封电子邮件添加一个 2048 位的 DKIM 密钥。您可使用 Amazon SES 控制台或者使用 API 来配置 Easy DKIM。

**注意**  
要设置 Easy DKIM，您必须修改域的 DNS 设置。如果您使用 Route 53 作为 DNS 提供商，Amazon SES 可以自动为您创建适当的记录。如果您使用其他 DNS 提供商，请参阅您的提供商的文档来了解有关为您的域更改 DNS 设置的更多信息。

**警告**  
如果您当前启用了 BYODKIM 并且正在迁移到 Easy DKIM，请注意，在设置 Easy DKIM 且您的 DKIM 状态处于待定状态时，Amazon SES 不会使用 BYODKIM 对您的电子邮件进行签名。从您进行调用以启用 Easy DKIM（通过 API 或控制台）的那一刻到 SES 可以确认 DNS 配置的那一刻之间，SES 可能会在没有 DKIM 签名的情况下发送您的电子邮件。因此，建议使用中间步骤从一种 DKIM 签名方法迁移到另一种（例如，使用启用了 BYODKIM 的域的子域，然后在 Easy DKIM 验证通过后将其删除），或者在应用程序停机期间（如果有）执行此活动。

## 为已验证的域身份设置 Easy DKIM
<a name="send-email-authentication-dkim-easy-setup-domain"></a>

此部分的过程经过简化，旨在展示在您已创建的域身份上配置 Easy DKIM 所需的步骤。如果您尚未创建域身份，或要查看用于自定义域身份的全部可用选项，如使用原定设置配置集、自定义 MAIL FROM 域和标签等，请参阅[创建域身份](creating-identities.md#verify-domain-procedure)。

创建 Easy DKIM 域身份中有一段是配置其基于 DKM 的验证，您可以选择接受 2048 位的 Amazon SES 原定设置值，或选择 1024 位覆盖默认值。有关 DKIM 签名密钥长度以及如何更改密钥长度的详情，请参阅 [DKIM 签名密钥长度](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

**为域设置 Easy DKIM**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在身份列表中，选择**身份类型**为*域*的身份。
**注意**  
如果需要创建或验证域，请参阅 [创建域身份](creating-identities.md#verify-domain-procedure)。

1. 在 “**身份验证**” 选项卡下的 “**DomainKeys已识别邮件 (DKIM)**” 容器中，选择 “**编辑”**。

1. 在**高级 DKIM 设置**容器中，选择**身份类型**字段中的 **Easy DKIM** 按钮。

1. 在 **DKIM 签名密钥长度**字段中，选择 [**RSA\$12048\$1BIT** 或 **RSA\$11024\$1BIT**](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

1. 在 **DKIM 签名**字段中，选中**已启用**复选框。

1. 选择 **Save changes**（保存更改）。

1. 在使用 Easy DKIM 配置您的域身份以后，必须与您的 DNS 提供商完成验证过程 - 继续转到[与您的 DNS 提供商一起验证 DKIM 域身份](creating-identities.md#just-verify-domain-proc)并执行适用于 Easy DKIM 的 DNS 身份验证过程。

## 更改身份的 Easy DKIM 签名密钥长度
<a name="send-email-authentication-dkim-easy-managing-change-key-length"></a>

本部分中的流程展示了如何轻松更改签名算法所需的 Easy DKIM 位数。虽然始终首选 2048 位签名长度，以提供增强安全性，但在某些情况下，也可能需要使用 1024 位长度，例如必须使用仅支持 DKIM 1024 的 DNS 提供商。

为了保持传输中电子邮件的送达率，您可以更改或改回 DKIM 密钥长度的频率将受到限制。

当您的电子邮件在传输过程中时，DNS 会使用您的公有密钥验证您的电子邮件；因此，如果您更改密钥过快或频繁，DNS 可能无法对您的电子邮件进行 DKIM 身份验证，因为前一个密钥可能已失效，因此，以下限制可防止出现这种情况：
+ 无法切换到与已配置的密钥长度相同的密钥长度。
+ 无法在 24 小时内多次切换到不同的密钥长度（除非这是该时间段内第一次降级到 1024 位）。

在使用以下过程更改密钥长度时，如果您违反了其中一项限制，控制台将返回一个错误条，指出*您提供的输入无效*，并说明其无效的原因。

**更改 DKIM 签名密钥长度位数的步骤**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的 **Configuration**（配置）下，选择 **Verified identities**（已验证身份）。

1. 在身份列表中，选择要更改其 DKIM 签名密钥长度的身份。

1. 在 “**身份验证**” 选项卡下的 “**DomainKeys已识别邮件 (DKIM)**” 容器中，选择 “**编辑”**。

1. 在**高级 DKIM 设置**容器中，选择 **DKIM 签名密钥长度**字段中的 [**RSA\$12048\$1BIT** 或 **RSA\$11024\$1BIT**](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

1. 选择 **Save changes**（保存更改）。

# 在 Amazon SES 中使用 Deterministic Easy DKIM（DEED）
<a name="send-email-authentication-dkim-deed"></a>

Deterministic Easy DKIM (DEED) 为管理多个 DKIM 配置提供了一种解决方案。 AWS 区域通过简化 DNS 管理并确保一致的 DKIM 签名，DEED 帮助您简化多区域电子邮件发送操作，同时保持强大的电子邮件身份验证实践。

## 什么是 Deterministic Easy DKIM（DEED）？
<a name="what-is-deed"></a>

[Deterministic Easy DKIM (DEED) 是一项功能，它 AWS 区域 基于配置了 Easy DKIM 的父域在所有域中生成一致的 DKIM 令牌。](send-email-authentication-dkim-easy.md)这使您可以复制不同身份 AWS 区域 ，这些身份会自动继承和维护与当前使用 Easy DKIM 配置的父身份相同的 DKIM 签名配置。使用 DEED，您只需要为父身份发布一次 DNS 记录，副本身份将使用相同的 DNS 记录来验证域所有权和管理 DKIM 签名。

通过简化 DNS 管理并确保一致的 DKIM 签名，DEED 帮助您简化多区域电子邮件发送操作，同时保持最佳的电子邮件身份验证实践。

讨论 DEED 时使用的术语：
+ **父身份**：一个配置了 Easy DKIM 的已验证身份，用作副本身份 DKIM 配置的源。
+ **副本身份**：父身份的副本，共享相同的 DNS 设置和 DKIM 签名配置。
+ **父区域**：设置父身份的 AWS 区域 。
+ **副本区域**：设置副本身份的 AWS 区域 。
+ **DEED 身份**：任何用作父身份或副本身份的身份。（当创建新身份时，它最初被视为常规（非 DEED）身份。但是，一旦创建了副本，该身份就被视为 DEED 身份。）

使用 DEED 的主要好处包括：
+ **简化的 DNS 管理**：仅为父身份发布一次 DNS 记录。
+ **更轻松的多区域操作**：简化将电子邮件发送操作扩展到新区域的过程。
+ **减少管理开销**：从父身份集中管理 DKIM 配置。

## Deterministic Easy DKIM（DEED）的工作原理
<a name="how-deed-works"></a>

当您创建副本身份时，Amazon SES 会自动将 DKIM 签名密钥从父身份复制到副本身份。对父身份进行的任何后续 DKIM 密钥轮换或密钥长度更改都会自动传播到所有副本身份。

该过程涉及以下工作流程：

1.  AWS 区域 使用 Easy DKIM 在中创建家长身份。

1. 设置父身份所需的 DNS 记录。

1. 在其他中创建副本身份 AWS 区域，指定父身份的域名和 DKIM 签名区域。

1. Amazon SES 自动将父级的 DKIM 配置复制到副本身份。

重要注意事项：
+ 您不能创建已经是副本的身份的副本。
+ 父身份必须启用 [Easy DKIM](send-email-authentication-dkim-easy.md)：您不能创建 BYODKIM 或手动签名身份的副本。
+ 在删除所有副本身份之前，无法删除父身份。

## 使用 DEED 设置副本身份
<a name="setting-up-replica-identity"></a>

本节将提供示例，向您展示如何使用 DEED 创建和验证副本身份以及所需的必要权限。

**Topics**
+ [创建副本身份](#creating-replica-identity)
+ [验证副本身份配置](#verifying-replica-identity)
+ [使用 DEED 所需的权限](#required-permissions)

### 创建副本身份
<a name="creating-replica-identity"></a>

要创建副本身份：

1. 在要创建副本身份的 AWS 区域 位置中，打开 SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

   （在 SES 控制台中，副本身份被称为*全局身份*。）

1. 在导航窗格中，选择**身份**。

1. 选择**创建身份**。

1. 在**身份类型**下选择**域**，并输入您要复制并作为父身份的配置了 Easy DKIM 的现有身份的域名。

1. 展开**高级 DKIM 设置**并选择 **Deterministic Easy DKIM**。

1. 从**父区域**下拉菜单中，选择一个父区域，其中存在与您为全局（副本）身份输入的名称相同的、经过 Easy DKIM 签名的身份。（您的副本区域默认为您登录 SES 控制台时所在的区域。）

1. 确保已启用 **DKIM 签名**。

1. （可选）向您的域身份添加一个或多个**标签**。

1. 查看配置并选择**创建身份**。

使用 AWS CLI：

要基于配置了 Easy DKIM 的父身份创建副本身份，您需要指定父级的域名、您要创建副本身份的区域以及父级的 DKIM 签名区域，如本例所示：

```
aws sesv2 create-email-identity --email-identity example.com --region us-west-2 --dkim-signing-attributes '{"DomainSigningAttributesOrigin": "AWS_SES_US_EAST_1"}'
```

在上述示例中：

1. *example.com*替换为正在复制的父域身份。

1. *us-west-2*替换为要创建副本域身份的区域。

1. *AWS\$1SES\$1US\$1EAST\$11*替换为父级的 DKIM 签名区域，该区域代表其 Easy DKIM 签名配置，该配置将被复制到副本身份。
**注意**  
前`AWS_SES_`缀表示 DKIM 是使用 Easy DKIM 为父身份配置`US_EAST_1`的，也是它的 AWS 区域 创建位置。

### 验证副本身份配置
<a name="verifying-replica-identity"></a>

创建副本身份后，您可以验证它是否已使用父身份的 DKIM 签名配置正确配置。

**要验证副本身份，请执行以下操作：**

1. 在创建副本身份 AWS 区域 的位置，打开 SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中，选择**身份**，然后从**身份**表中选择要验证的身份。

1. 在**身份验证**选项卡下，**DKIM 配置**字段将指示状态，而**父区域**字段将指示该身份使用 DEED 进行 DKIM 签名配置的区域。

使用 AWS CLI：

使用 `get-email-identity` 命令，指定副本的域名和区域：

```
aws sesv2 get-email-identity --email-identity example.com --region us-west-2
```

响应将在 `SigningAttributesOrigin` 参数中包含父区域的值，表示副本身份已成功配置了父身份的 DKIM 签名配置：

```
{
  "DkimAttributes": {
    "SigningAttributesOrigin": "AWS_SES_US_EAST_1"
  }
}
```

### 使用 DEED 所需的权限
<a name="required-permissions"></a>

要使用 DEED，您需要：

1. 在副本区域创建电子邮件身份的标准权限。

1. 从父区域复制 DKIM 签名密钥的权限。

#### DKIM 复制的示例 IAM 策略
<a name="example-iam-policy"></a>

以下策略允许从父身份到指定副本区域的 DKIM 签名密钥复制：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDKIMReplication",
      "Effect": "Allow",
      "Action": "ses:ReplicateEmailIdentityDKIMSigningKey",
      "Resource": "arn:aws:ses:us-east-1:123456789124:identity/example.com",
      "Condition": {
        "ForAllValues:StringEquals": {
           "ses:ReplicaRegion": ["us-east-1", "us-east-1"]
        }
      }
    }
  ]
}
```

------

## 最佳实践
<a name="deed-best-practices"></a>

推荐以下最佳实践：
+ **规划您的父区域和副本区域**：仔细考虑您选择的父区域，因为它将是副本区域中使用的 DKIM 配置的真实来源。
+ **使用一致的 IAM 策略**：确保您的 IAM 策略允许在所有目标区域进行 DKIM 复制。
+ **保持父身份活跃**：请记住，您的副本身份继承了父身份的 DKIM 签名配置，由于这种依赖性，在删除所有副本身份之前，您无法删除父身份。

## 问题排查
<a name="troubleshooting"></a>

如果您遇到 DEED 问题，请考虑以下事项：
+ **验证错误**：确保您具有 DKIM 复制所需的必要权限。
+ **复制延迟**：允许一些时间让复制完成，尤其是在创建新副本身份时。
+ **DNS 问题**：验证父身份的 DNS 记录是否正确设置和传播。

# 提供 Amazon SES 中您自己的 DKIM 身份验证令牌 (BYODKIM)
<a name="send-email-authentication-dkim-bring-your-own"></a>

作为使用 [Easy DKIM](send-email-authentication-dkim-easy.md) 的替代方法，您可以改为使用自己的公有-私有密钥对配置 DKIM 身份验证。此过程称为*自带 DKIM*（*BYODKIM*）。

使用 BYODKIM，可以使用单个 DNS 记录为您的域配置 DKIM 身份验证，而不是使用 Easy DKIM，后者要求您发布三个单独的 DNS 记录。此外，使用 BYODKIM，您可以根据需要经常为您的域轮换 DKIM 密钥。

**Topics**
+ [步骤 1：创建密钥对](#send-email-authentication-dkim-bring-your-own-create-key-pair)
+ [步骤 2：将选择器和公有密钥添加到 DNS 提供商的域配置中](#send-email-authentication-dkim-bring-your-own-update-dns)
+ [步骤 3：配置并验证域以使用 BYODKIM](#send-email-authentication-dkim-bring-your-own-configure-identity)

**警告**  
如果您当前启用了 Easy DKIM 并且正在迁移到 BYODKIM，请注意，在设置 BYODKIM 且您的 DKIM 状态处于待定状态时，Amazon SES 将不会使用 Easy DKIM 对您的电子邮件签名。从您进行调用以启用 BYODKIM（通过 API 或控制台）的那一刻到 SES 可以确认 DNS 配置的那一刻之间，SES 可能会在没有 DKIM 签名的情况下发送您的电子邮件。因此，建议使用中间步骤从一种 DKIM 签名方法迁移到另一种（例如，使用启用了 Easy DKIM 的域的子域，然后在 BYODKIM 验证通过后将其删除），或者在应用程序停机期间（如果有）执行此活动。

## 步骤 1：创建密钥对
<a name="send-email-authentication-dkim-bring-your-own-create-key-pair"></a>

要使用自带 DKIM 功能，您需要先创建 RSA 密钥对。

生成的私有密钥必须为 PKCS \$11 或 PKCS \$18 两种格式之一，使用至少 1024 位 RSA 加密（至多 2048 位），并使用 base64[（PEM）](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail)编码进行编码。有关 DKIM 签名密钥长度以及如何更改密钥长度的详情，请参阅 [DKIM 签名密钥长度](send-email-authentication-dkim.md#send-email-authentication-dkim-1024-2048)。

**注意**  
您可以使用第三方应用程序和工具生成 RSA 密钥对，只要私有密钥是使用至少 1024 位 RSA 加密（至多 2048 位）生成并使用 base64 [(PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) 编码进行编码的。

在以下过程中，使用大多数 Linux、macOS 或 Unix 操作系统中内置的 `openssl genrsa` 命令创建密钥对的示例代码将自动使用 base64 [(PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) 编码。

**使用 Linux、macOS 或 Unix 命令行来创建密钥对**

1. 在命令行中，输入以下命令生成私钥，*nnnn*替换为至少为 1024 且最多 2048 的位长度：

   ```
   openssl genrsa -f4 -out private.key nnnn
   ```

1. 在命令行中，输入以下命令可生成公有密钥：

   ```
   openssl rsa -in private.key -outform PEM -pubout -out public.key
   ```

## 步骤 2：将选择器和公有密钥添加到 DNS 提供商的域配置中
<a name="send-email-authentication-dkim-bring-your-own-update-dns"></a>

现在您已创建密钥对，您必须将公有密钥作为 TXT 记录添加到您的域的 DNS 配置中。

**将公有密钥添加到您的域的 DNS 配置中**

1. 登录您的 DNS 提供商或托管提供商的管理控制台。

1. 将新的文本记录添加到您的域的 DNS 配置中。记录应该使用以下格式：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-email-authentication-dkim-bring-your-own.html)

   在前面的示例中，进行以下更改：
   + *selector*替换为标识密钥的唯一名称。
**注意**  
少数 DNS 提供商不允许记录名称中包含下划线 (\$1)。但是，DKIM 记录名称中的下划线是必需的。如果您的 DNS 提供商不允许您在记录名称中输入下划线，请联系提供商的客户支持团队以获取帮助。
   + *example.com*用您的域名替换。
   + *yourPublicKey*替换为您之前创建的公钥，并添加`p=`前缀，如上面的 “*值*” 列所示。
**注意**  
当您将公有密钥发布（添加）到 DNS 提供商时，必须按如下所示进行格式化：  
您必须删除生成的公有密钥的第一行和最后一行（分别为 `-----BEGIN PUBLIC KEY-----` 和 `-----END PUBLIC KEY-----`）。此外，您还必须删除生成的公有密钥中的换行符。产生的值是一个字符串，不包含空格或换行符。
您必须包含 `p=` 前缀，如上表中的 *Value*（值）列所示。

   不同的提供商具有不同的 DNS 记录更新过程。下表包含的链接指向几个广泛使用的 DNS 提供商的文档。此列表并不详尽无遗，也不表示认可；同样，如果您的 DNS 提供商未列出，这并不意味着您不能将该域与 Amazon SES 一起使用。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-email-authentication-dkim-bring-your-own.html)

## 步骤 3：配置并验证域以使用 BYODKIM
<a name="send-email-authentication-dkim-bring-your-own-configure-identity"></a>

您可以使用控制台或 AWS CLI为新域（即当前不用于通过 Amazon SES 发送电子邮件的域）以及现有域（即您已设置为与 Amazon SES 一起使用的域）设置 BYODKIM。在使用本节中的 AWS CLI 步骤之前，必须首先安装和配置 AWS CLI。有关更多信息，请参阅《[AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

### 选项 1：创建使用 BYODKIM 的新域身份
<a name="send-email-authentication-dkim-bring-your-own-configure-identity-new-domain"></a>

此部分包含用于创建使用 BYODKIM 的新域身份的过程。新域身份是您之前尚未设置为使用 Amazon SES 发送电子邮件的域。

如果要配置现有域以使用 BYODKIM，请改为完成 [选项 2：配置现有域身份](#send-email-authentication-dkim-bring-your-own-configure-identity-existing-domain) 中的过程。

**从控制台使用 BYODKIM 创建身份**
+ 按照[创建域身份](creating-identities.md#verify-domain-procedure)中的过程操作，当您到达步骤 8 时，请按照 BYODKIM 特定的说明进行操作。

**要使用 BYODKIM 创建身份，请访问 AWS CLI**

要配置新域，请使用 Amazon SES API 中的 `CreateEmailIdentity` 操作。

1. 在文本编辑器中，粘贴以下代码：

   ```
   {
       "EmailIdentity":"example.com",
       "DkimSigningAttributes":{
           "DomainSigningPrivateKey":"privateKey",
           "DomainSigningSelector":"selector"
       }
   }
   ```

   在前面的示例中，进行以下更改：
   + *example.com*替换为您要创建的域。
   + *privateKey*用您的私钥替换。
**注意**  
您必须删除生成的私有密钥的第一行和最后一行（分别为 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`）。此外，还必须删除生成的私有密钥中的换行符。产生的值是一个字符串，不包含空格或换行符。
   + *selector*替换为您在域名的 DNS 配置中创建 TXT 记录时指定的唯一选择器。

   完成后，将文件另存为 `create-identity.json`。

1. 在命令行输入以下命令：

   ```
   aws sesv2 create-email-identity --cli-input-json file://path/to/create-identity.json
   ```

   在前面的命令中，*path/to/create-identity.json*替换为您在上一步中创建的文件的完整路径。

### 选项 2：配置现有域身份
<a name="send-email-authentication-dkim-bring-your-own-configure-identity-existing-domain"></a>

此部分包含用于更新现有域身份以使用 BYODKIM 的过程。现有域身份是您已设置以使用 Amazon SES 发送电子邮件的域。

**从控制台使用 BYODKIM 更新域身份**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的 **Configuration**（配置）下，选择 **Verified identities**（已验证身份）。

1. 在身份列表中，选择**身份类型**为*域*的身份。
**注意**  
如果需要创建或验证域，请参阅 [创建域身份](creating-identities.md#verify-domain-procedure)。

1. 在 “**身份验证**” 选项卡下的 “**DomainKeys 已识别邮件 (DKIM)**” 窗格中，选择 “**编辑”**。

1. 在 **Advanced DKIM settings**（高级 DKIM 设置）窗格中，选择 **Identity type**（身份类型）字段中的 **Provide DKIM authentication token (BYODKIM)** [提供 DKIM 身份验证令牌 (BYODKIM)] 按钮。

1. 对于 **Private key**（私有密钥），粘贴先前生成的私有密钥。
**注意**  
您必须删除生成的私有密钥的第一行和最后一行（分别为 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`）。此外，还必须删除生成的私有密钥中的换行符。产生的值是一个字符串，不包含空格或换行符。

1. 对于**选择器名称**，输入您在域的 DNS 设置中指定的选择器的名称。

1. 在 **DKIM 签名**字段中，选中**已启用**复选框。

1. 选择**保存更改**。

**要使用 BYODKIM 更新域身份，请访问 AWS CLI**

要配置现有域，请使用 Amazon SES API 中的 `PutEmailIdentityDkimSigningAttributes` 操作。

1. 在文本编辑器中，粘贴以下代码：

   ```
   {
       "SigningAttributes":{
           "DomainSigningPrivateKey":"privateKey",
           "DomainSigningSelector":"selector"
       },
       "SigningAttributesOrigin":"EXTERNAL"
   }
   ```

   在前面的示例中，进行以下更改：
   + *privateKey*用您的私钥替换。
**注意**  
您必须删除生成的私有密钥的第一行和最后一行（分别为 `-----BEGIN PRIVATE KEY-----` 和 `-----END PRIVATE KEY-----`）。此外，还必须删除生成的私有密钥中的换行符。产生的值是一个字符串，不包含空格或换行符。
   + *selector*替换为您在域名的 DNS 配置中创建 TXT 记录时指定的唯一选择器。

   完成后，将文件另存为 `update-identity.json`。

1. 在命令行输入以下命令：

   ```
   aws sesv2 put-email-identity-dkim-signing-attributes --email-identity example.com --cli-input-json file://path/to/update-identity.json
   ```

   在前面的命令中，进行以下更改：
   + *path/to/update-identity.json*替换为您在上一步中创建的文件的完整路径。
   + *example.com*替换为您要更新的域名。

### 验证使用 BYODKIM 的域的 DKIM 状态
<a name="send-email-authentication-dkim-bring-your-own-configure-identity-check"></a>

**从控制台验证域的 DKIM 状态**

配置域以使用 BYODKIM 后，您可以使用 SES 控制台验证已正确地配置 DKIM。

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在身份列表中，选择要验证其 DKIM 状态的身份。

1. 对 DNS 设置的更改最长可能需要 72 小时才能生效。一旦 Amazon SES 在域的 DNS 设置中检测到全部必需的 DKIM 记录，则验证过程完成。如果所有配置都正确，则您的域名的 **DKIM 配置**字段将在已**DomainKeys识别邮件 (DKIM)** 窗格中显示**成功**，而**身份状态**字段在 “**摘要**” 窗格中显示**已验证**。

**要验证域名的 DKIM 状态，请使用 AWS CLI**

将域配置为使用 BYODKIM 后，您可以使用该 GetEmailIdentity操作来验证 DKIM 的配置是否正确。
+ 在命令行输入以下命令：

  ```
  aws sesv2 get-email-identity --email-identity example.com
  ```

  在前面的命令中，*example.com*用您的域名替换。

  此命令返回一个 JSON 对象，该对象包含类似于以下示例的部分。

  ```
  {
      ...
      "DkimAttributes": { 
          "SigningAttributesOrigin": "EXTERNAL",
          "SigningEnabled": true,
          "Status": "SUCCESS",
          "Tokens": [ ]
      },
      ...
  }
  ```

  如果以下所有条件均成立，则表示已为域正确配置 BYODKIM：
  + `SigningAttributesOrigin` 属性的值为 `EXTERNAL`。
  + `SigningEnabled` 的值为 `true`。
  + `Status` 的值为 `SUCCESS`。

# 管理 Easy DKIM 和 BYODKIM
<a name="send-email-authentication-dkim-easy-managing"></a>

使用基于 Web 的 Amazon SES 控制台或 Amazon SES API，您可以为已通过 Easy DKIM 或 BYODKIM 验证的身份管理 DKIM 设置。您可以使用其中任一方法来获取身份的 DKIM 记录，或者为身份启用或禁用 Easy DKIM 签名。

## 获取身份的 DKIM 记录
<a name="send-email-authentication-dkim-easy-managing-obtain-records"></a>

您可以随时使用 Amazon SES 控制台获取您的域或电子邮件地址的 DKIM 记录。

**使用控制台获取身份的 DKIM 记录**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在身份列表中，选择要获取其 DKIM 记录的身份。

1. 在身份详细信息页面的**身份验证**选项卡上，展开**查看 DNS 记录**。

1. 复制在此部分显示的三条别名记录（如果您使用 Easy DKIM）或 TXT 记录（如果您使用 BYODKIM）。或者，您可以选择**下载 .csv 记录集**以将记录副本保存到您的电脑中。

   下图显示了展开后的 **View DNS records**（查看 DNS 记录）部分显示的与 Easy DKIM 关联的别名记录的示例。  
![\[\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/dkim_existing_dns.png)

您还可以使用 Amazon SES API 来获取身份的 DKIM 记录。与 API 交互的常用方法是使用 AWS CLI。

**要获取身份的 DKIM 记录，请使用 AWS CLI**

1. 在命令行处，键入以下命令：

   ```
   aws ses get-identity-dkim-attributes --identities "example.com"
   ```

   在前面的示例中，*example.com*替换为您想要获取 DKIM 记录的身份。您可以指定电子邮件地址或域。

1. 此命令的输出包含一个 `DkimTokens` 部分，如以下示例所示：

   ```
   {
       "DkimAttributes": {
           "example.com": {
               "DkimEnabled": true,
               "DkimVerificationStatus": "Success",
               "DkimTokens": [
                   "hirjd4exampled5477y22yd23ettobi",
                   "v3rnz522czcl46quexamplek3efo5o6x",
                   "y4examplexbhyhnsjcmtvzotfvqjmdqoj"
               ]
           }
       }
   }
   ```

   您可以使用令牌创建添加到域的 DNS 设置中的 CNAME 记录。要创建 CNAME 记录，请使用以下模板：

   ```
   token1._domainkey.example.com CNAME token1.dkim.amazonses.com
   token2._domainkey.example.com CNAME token2.dkim.amazonses.com
   token3._domainkey.example.com CNAME token3.dkim.amazonses.com
   ```

   将的*token1*每个实例替换为您运行`get-identity-dkim-attributes`命令时收到的列表中的第一个标记，将的所有实例替换为列表中的第二个标记，并将的所有实例替换为列表中的第三个标记。*token2* *token3*

   例如，对上述示例中所示的令牌应用此模板会生成以下记录：

   ```
   hirjd4exampled5477y22yd23ettobi._domainkey.example.com CNAME hirjd4exampled5477y22yd23ettobi.dkim.amazonses.com
   v3rnz522czcl46quexamplek3efo5o6x._domainkey.example.com CNAME v3rnz522czcl46quexamplek3efo5o6x.dkim.amazonses.com
   y4examplexbhyhnsjcmtvzotfvqjmdqoj._domainkey.example.com CNAME y4examplexbhyhnsjcmtvzotfvqjmdqoj.dkim.amazonses.com
   ```

**注意**  
并非所有人都 AWS 区域 使用默认的 SES DKIM 域名，`dkim.amazonses.com`要查看您的地区是否使用特定区域的 DKIM 域，请查看中的 [DKIM 域名表](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_dkim_domains)。*AWS 一般参考*

## 为身份禁用 Easy DKIM
<a name="send-email-authentication-dkim-easy-managing-disabling"></a>

您可以使用 Amazon SES 控制台快速为身份禁用 DKIM 身份验证。

**为身份禁用 DKIM**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在身份列表中，选择要为其禁用 DKIM 的身份。

1. 在 “**身份验证**” 选项卡下的 “**DomainKeys已识别邮件 (DKIM)**” 容器中，选择 “**编辑”**。

1. 在 **Advanced DKIM settings**（高级 DKIM 设置）中，选中 **DKIM signatures**（DKIM 签名）字段中的 **Enabled**（已启用）复选框。

您还可以使用 Amazon SES API 为身份禁用 DKIM。与 API 交互的常用方法是使用 AWS CLI。

**要禁用身份的 DKIM，请使用 AWS CLI**
+ 在命令行处，键入以下命令：

  ```
  aws ses set-identity-dkim-enabled --identity example.com --no-dkim-enabled
  ```

  在前面的示例中，*example.com*替换为要禁用 DKIM 的身份。您可以指定电子邮件地址或域。

## 为身份启用 Easy DKIM
<a name="send-email-authentication-dkim-easy-managing-enabling"></a>

如果您之前为身份禁用了 DKIM，则可以使用 Amazon SES 控制台再次启用它。

**为身份启用 DKIM**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在身份列表中，选择要为其启用 DKIM 的身份。

1. 在 “**身份验证**” 选项卡下的 “**DomainKeys已识别邮件 (DKIM)**” 容器中，选择 “**编辑”**。

1. 在**高级 DKIM 设置**中，选中 **DKIM 签名**字段中的**已启用**复选框。

您还可以使用 Amazon SES API 为身份启用 DKIM。与 API 交互的常用方法是使用 AWS CLI。

**要为身份启用 DKIM，请使用 AWS CLI**
+ 在命令行处，键入以下命令：

  ```
  aws ses set-identity-dkim-enabled --identity example.com --dkim-enabled
  ```

  在前面的示例中，*example.com*替换为要为其启用 DKIM 的身份。您可以指定电子邮件地址或域。

## 覆盖在电子邮件地址身份上继承的 DKIM 签名
<a name="send-email-authentication-dkim-easy-setup-email"></a>

在此部分中，您将学习如何覆盖（禁用或启用）来自您已使用 Amazon SES 验证的特定电子邮件地址身份上的父域继承的 DKIM 签名属性。您只能对属于您已拥有的域的电子邮件地址身份执行此操作，因为 DNS 设置是在域级别配置的。

**重要**  
你不能 disable/enable DKIM 签名获取电子邮件地址身份...  
在您不拥有的域上。例如，您无法为注册 *gmail.com* 或 *hotmail.com* 地址切换 DKIM。
在您拥有但尚未在 Amazon SES 中验证的域名上，
在您拥有但尚未在域上启用 DKIM 签名的域名上。

本节包含以下主题：
+ [了解继承的 DKIM 签名属性](#dkim-easy-setup-email-key-points-mng)
+ [覆盖对电子邮件地址身份的 DKIM 签名（控制台）](#override-dkim-email-console-mng)
+ [覆盖对电子邮件地址身份的 DKIM 签名 (AWS CLI)](#override-dkim-email-cli-mng)

### 了解继承的 DKIM 签名属性
<a name="dkim-easy-setup-email-key-points-mng"></a>

重要的是，首先要理解，如果域配置了 DKIM，无论使用的是 Easy DKIM 还是 BYODKIM，电子邮件地址标识都会从其父域继承其 DKIM 签名属性。因此，在电子邮件地址标识上禁用或启用 DKIM 签名实际上是基于以下关键事实覆盖域的 DKIM 签名属性：
+ 如果您已为电子邮件地址所属于的域设置了 DKIM，则无需再为电子邮件地址设置 DKIM。
  + 在为域设置 DKIM 时，Amazon SES 通过从父域继承的 DKIM 属性，自动认证来自该域上每个地址的每一封邮件。
+ 特定电子邮件地址标识的 DKIM 设置*自动覆盖地址所属的父域或子域（如适用）*的设置。

由于电子邮件地址身份的 DKIM 签名属性是从父域继承的，因此如果您计划覆盖这些属性，则必须记住覆盖的层次规则，如下表所述。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-email-authentication-dkim-easy-managing.html)

通常不建议禁用您的 DKIM 签名，因为这有可能损害您的发件人声誉，并且会增加您发送的邮件转到垃圾邮件或垃圾邮件文件夹或域名被欺骗的风险。

但是，对于任何特定的使用情形或外围业务决策，可以覆盖电子邮件地址标识上的域继承的 DKIM 签名属性，您可能必须永久或临时禁用 DKIM 签名，或者在以后重新将其启用。

### 覆盖对电子邮件地址身份的 DKIM 签名（控制台）
<a name="override-dkim-email-console-mng"></a>

以下 SES 控制台过程向您介绍如何覆盖（禁用或启用）来自您已使用 Amazon SES 验证的特定电子邮件地址身份上的父域继承的 DKIM 签名属性。

**使用控制 disable/enable 台进行 DKIM 签名以获取电子邮件地址身份**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在身份列表中，选择 **Identity type**（身份类型）为 *Email address*（电子邮件地址）并且属于已验证域之一的身份。

1. 在 “**身份验证**” 选项卡下的 “**DomainKeys 已识别邮件 (DKIM)**” 容器中，选择 “**编辑”**。
**注意**  
仅当选定的电子邮件地址身份属于已经过 SES 验证的域时，才会显示 **Authentication**（身份验证）选项卡。如果您尚未验证域，请参阅 [创建域身份](creating-identities.md#verify-domain-procedure)。

1. 在 **DKIM signatures**（DKIM）签名字段中的**高级 DKIM 设置**下，清除**已启用**复选框以禁用 DKIM 签名，或者选中它以重新启用 DKIM 签名（如果先前已覆盖）。

1. 选择**保存更改**。

### 覆盖对电子邮件地址身份的 DKIM 签名 (AWS CLI)
<a name="override-dkim-email-cli-mng"></a>

以下示例使用 AWS CLI 带有 SES API 命令和参数，这些命令和参数将覆盖（禁用或启用）从父域继承的 DKIM 签名属性，该属性已通过您已通过 SES 验证的特定电子邮件地址身份。

**要使用 disable/enable DKIM 签署电子邮件地址身份 AWS CLI**
+  假设你拥有 *example.com* 域名，并且要禁用域的其中一个电子邮件地址的 DKIM 签名，请在命令行键入以下命令：

  ```
  aws sesv2 put-email-identity-dkim-attributes --email-identity marketing@example.com --no-signing-enabled
  ```

  1. *marketing@example.com*替换为要禁用 DKIM 签名的电子邮件地址身份。

  1. `--no-signing-enabled` 将禁用 DKIM 签名。要重新启用 DKIM 签名，请使用 `--signing-enabled`。

# Amazon SES 中的手动 DKIM 签名
<a name="send-email-authentication-dkim-manual"></a>

作为使用 Easy DKIM 的替代方案，您可以手动将 DKIM 签名添加到您的邮件，然后使用 Amazon SES 发送这些邮件。如果您选择手动对邮件进行签名，则必须首先创建 DKIM 签名。在创建邮件和 DKIM 签名后，可以使用 [SendRawEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendRawEmail.html) API 来发送它。

如果您决定手动对电子邮件进行签名，请考虑以下因素：
+ 您使用 Amazon SES 发送的每封邮件均包含引用 *amazonses.com* 的签名域的 DKIM 标头（即，它包含以下字符串：`d=amazonses.com`）。因此，如果您手动对邮件进行签名，邮件将包括*两个* DKIM 标头：一个用于您的域，一个由 Amazon SES 自动创建用于 *amazonses.com*。
+ Amazon SES 不验证您手动添加到邮件中的 DKIM 签名。如果邮件中的 DKIM 签名出现错误，则它可能会被电子邮件提供商拒绝。
+ 在对邮件进行签名时，应使用至少为 1024 位的位长度。
+ 不要对以下字段进行签名：Message-ID (邮件 ID)、Date (日期)、Return-Path (退回路径)、Bounces-To (退回到)。
**注意**  
如果您使用电子邮件客户端通过 Amazon SES SMTP 接口发送电子邮件，则您的客户端可能会自动对邮件进行 DKIM 签名。某些客户端可能会对其中一些字段进行签名。有关预设情况下对哪些字段进行签名的信息，请参阅您的电子邮件客户端文档。

# 在 Amazon SES 中使用 SPF 对电子邮件进行身份验证
<a name="send-email-authentication-spf"></a>

*发件人策略框架*（SPF）是一种电子邮件验证标准，旨在防止电子邮件欺骗。域所有者使用 SPF 来告知电子邮件提供商，允许哪些服务器从其域发送电子邮件。SPF 是在 [RFC 7208](https://tools.ietf.org/html/rfc7208) 中定义的。

您通过 Amazon SES 发送的邮件将自动使用 `amazonses.com` 的子域作为原定设置的 MAIL FROM 域。SPF 身份验证成功验证这些邮件，因为原定设置的 MAIL FROM 域与发送电子邮件的应用程序（在这种情况下为 SES）相匹配。因此，在 SES 中，SPF 是为您隐式设置的。

但是，如果您不想使用 SES 默认的 MAIL FROM 域，而是希望使用您拥有的域的子域，则在 SES 中称为使用*自定义* MAIL FROM 域。为此，它要求您为您的自定义 MAIL FROM 域发布您自己的 SPF 记录。此外，SES 还要求您设置 MX 记录，以便您的自定义 MAIL FROM 域可以接收电子邮件提供商向您发送的退回邮件和投诉通知。

**了解如何设置 SPF 身份验证**  
提供了使用 SPF 配置域以及如何在 [使用自定义 MAIL FROM 域](mail-from.md) 中发布 MX 和 SPF（类型为 TXT）记录的说明。

# 使用自定义 MAIL FROM 域
<a name="mail-from"></a>

当您发送电子邮件时，它具有两个指示其来源的地址：一个显示给邮件收件人的 From 地址，以及一个指示邮件来源的 MAIL FROM 地址。MAIL FROM 地址有时称作 *envelope sender*、*envelope from*、*bounce address* 或 *Return Path* 地址。邮件服务器使用 MAIL FROM 地址返回退回邮件和其他错误通知。通常，收件人只有在查看邮件的源代码时才能查看 MAIL FROM 地址。

Amazon SES 将您发送的邮件的 MAIL FROM 域设置为原定设置值，除非您指定自己的（自定义）域。本部分讨论设置自定义 MAIL FROM 域的好处，并包括设置过程。

## 为什么使用自定义 MAIL FROM 域？
<a name="mail-from-overview"></a>

您通过 Amazon SES 发送的邮件将自动使用 `amazonses.com` 的子域作为原定设置的 MAIL FROM 域。发件人策略框架（SPF）身份验证成功验证这些邮件，因为原定设置的 MAIL FROM 域与发送电子邮件的应用程序（在这种情况下为 SES）相匹配。

如果您不想使用 SES 原定设置 MAIL FROM 域，而是希望使用您拥有的域的子域，则在 SES 中称为使用*自定义* MAIL FROM 域。为此，它要求您为您的自定义 MAIL FROM 域发布您自己的 SPF 记录。此外，SES 还要求您设置 MX 记录，以便您的域可以接收电子邮件提供商向您发送的退回邮件和投诉通知。

通过使用自定义 MAIL FROM 域，您可以灵活地使用 SPF 和/或 DKIM 来实现[基于域的消息身份验证、报告和一致性（DMARC）](send-email-authentication-dmarc.md)验证。DMARC 使发件人的域能够指示从该域发送的电子邮件受一个或多个身份验证系统的保护。可通过以下两种方法实现 DMARC 验证：[通过 SPF 遵守 DMARC](send-email-authentication-dmarc.md#send-email-authentication-dmarc-spf)和[通过 DKIM 遵守 DMARC](send-email-authentication-dmarc.md#send-email-authentication-dmarc-dkim)。

## 选择自定义 MAIL FROM 域
<a name="mail-from-requirements"></a>

在下文中，术语 *MAIL FROM 域*始终是指您拥有的域的子域。您为自定义 MAIL FROM 域使用的此子域不得用于其他用途且必须满足以下要求：
+ MAIL FROM 域必须是经验证身份（电子邮件地址或域）的父域的子域。
+ MAIL FROM 域不应是您也用来从中发送电子邮件的子域。
+ MAIL FROM 域不应是您用于接收电子邮件的子域。

## 将 SPF 与自定义 MAIL FROM 域结合使用
<a name="send-email-authentication-spf-cmfd"></a>

*发件人策略框架*（SPF）是一种电子邮件验证标准，旨在防止电子邮件欺骗。您可以使用 SPF 配置您的自定义 MAIL FROM 域，以告诉电子邮件提供商允许哪些服务器从您的自定义 MAIL FROM 域发送电子邮件。SPF 是在 [RFC 7208](https://tools.ietf.org/html/rfc7208) 中定义的。

要设置 SPF，您要将 TXT 记录发布到您的自定义 MAIL FROM 域的 DNS 配置。此记录包含您授权使用您的自定义 MAIL FROM 域发送电子邮件的服务器的列表。当电子邮件提供商从您的自定义 MAIL FROM 域接收到邮件时，它将检查该域的 DNS 记录，以确保电子邮件是从授权服务器发送的。

如果您想使用此 SPF 记录来遵守 DMARC，则发件人地址中的域必须与 MAIL FROM 域匹配。请参阅[通过 SPF 遵守 DMARC](send-email-authentication-dmarc.md#send-email-authentication-dmarc-spf)。

下一节[配置自定义 MAIL FROM 域](#mail-from-set)将介绍如何为您的自定义 MAIL FROM 域设置 SPF。

## 配置自定义 MAIL FROM 域
<a name="mail-from-set"></a>

设置自定义 MAIL FROM 域的过程要求您将记录添加到该域的 DNS 配置中。SES 要求您发布 MX 记录，以便您的域可以接收电子邮件提供商向您发送的退回邮件和投诉通知。您还必须发布 SPF 记录（类型为 TXT），以证明 Amazon SES 经授权可从您的域发送电子邮件。

您可以为整个域或子域，也可以为单个电子邮件地址设置自定义 MAIL FROM 域。以下过程演示如何使用 Amazon SES 控制台来配置自定义 MAIL FROM 域。您也可以使用 [SetIdentityMailFromDomain](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityMailFromDomain.html)API 操作配置自定义 MAIL FROM 域。

### 为已验证的域设置自定义 MAIL FROM 域
<a name="mail-from-setup-procedure-domain"></a>

这些过程向您演示了如何为整个域或子域配置自定义 MAIL FROM 域，以便从该域地址发送的所有消息都将使用此自定义 MAIL FROM 域。

**将经验证的域配置为使用指定的自定义 MAIL FROM 域**

1. 打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在左侧导航面板中的**配置**下，选择**身份**。

1. 在身份列表中，选择要配置的身份，其中 **Identity type**（身份类型）是 **Domain**（域），以及 **Status**（状态）为 *Verified*（已验证）。

   1. 如果 **Status**（状态）是 *Unverified*（未核实），请在 [与您的 DNS 提供商一起验证 DKIM 域身份](creating-identities.md#just-verify-domain-proc) 完成过程以验证电子邮件地址的域。

1. 在**自定义 MAIL FROM 域**窗格中的屏幕底部，选择**编辑**。

1. 在 **General details**（一般细节）窗格中，执行以下操作：

   1. 选择 **Use a custom MAIL FROM domain**（使用自定义 MAIL FROM 域）复选框。

   1. 对于 **MAIL FROM Domain (MAIL FROM 域)**，输入要用作 MAIL FROM 子域的域。

   1. 对于 **Behavior on MX failure**（MX 失败时的行为），选择下列选项之一：
      + **使用原定设置的 MAIL FROM 域名** – 如果未正确设置自定义 MAIL FROM 域的 MX 记录，那么 Amazon SES 将使用 `amazonses.com` 的子域。子域名因您使用的 AWS 区域 Amazon SES 而异。
      + **拒绝邮件** – 如果未正确设置自定义 MAIL FROM 域的 MX 记录，那么 Amazon SES 将返回 `MailFromDomainNotVerified` 错误。您尝试从此域发送的电子邮件将被自动拒绝。

   1. 选择 **Save changes**（保存更改）- 您将会回到上一个屏幕。

1. 将 MX 和 SPF（类型为 TXT）记录发布到自定义 MAIL FROM 域的 DNS 服务器：

   在 **Custom MAIL FROM domain**（自定义 MAIL FROM 域）窗格中，**Publish DNS records**（发布 DNS 记录）表现在会显示您必须发布（添加）到域的 DNS 配置中的 MX 和 SPF（类型为 TXT）记录。这些记录使用下表中显示的格式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/mail-from.html)

   在以上记录中，
   + *subdomain*。 *domain*。 *com*将填充你的 MAIL FROM 子域名
   + *region*将填充您要验证 MAIL FROM 域的名称（例如`us-west-2``us-east-1``eu-west-1`、或，等） AWS 区域 
   + 与 MX 值一起列出的数字 *10* 是邮件服务器的优先顺序，需要按照 DNS 提供商的 GUI 指定的单独值字段输入
   + SPF 的 TXT 记录值通常必须包含引号，但一些 DNS 提供商不需要它们。

   从 **Publish DNS records**（发布 DNS 记录）表中，通过选择每个值旁边的复制图标复制 MX 和 SPF（类型为 TXT）记录，然后将它们粘贴到 DNS 提供商 GUI 中的相应字段中。或者，您可以选择**下载 .csv 记录集**以将记录副本保存到您的电脑中。
**重要**  
发布 MX 和 SPF（类型 TXT）记录的具体过程取决于您的 DNS 或主机托管提供商。请参阅您的提供商的文档或联系他们，以获取有关将这些记录添加到您域 DNS 配置的信息。
要使用 Amazon SES 成功设置自定义 MAIL FROM 域，您必须仅将一条 MX 记录发布到您的 MAIL FROM 域的 DNS 服务器。如果 MAIL FROM 域有多条 MX 记录，则使用 Amazon SES 设置自定义 MAIL FROM 将失败。

   如果 Route 53 为您的 MAIL FROM 域提供 DNS 服务，并且您使用与 Route 53 相同的账户登录，则选择使用 R **oute 53 发布记录**。 AWS 管理控制台 DNS 记录将自动应用于您的域的 DNS 配置。

   如果使用其他 DNS 提供商，则必须手动将 DNS 记录发布到 MAIL FROM 域的 DNS 服务器。将 DNS 记录添加到域的 DNS 服务器的过程因您的网络托管服务或 DNS 提供商而异。

   为您的域发布 DNS 记录的过程取决于您使用的 DNS 提供商。下表包含的链接指向几个广泛使用的 DNS 提供商的文档。此列表并不详尽无遗，并不表示认可；同样，如果您的 DNS 提供商没有列出，这并不意味着他们不支持 MAIL FROM 域配置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/mail-from.html)

   当 Amazon SES 检测到记录已生效时，您会收到一封电子邮件，通知您自定义 MAIL FROM 域已成功设置。视您的 DNS 提供商而定，Amazon SES 检测 MX 记录之前可能会延迟最多 72 个小时。

### 为已验证的电子邮件地址设置自定义 MAIL FROM 域
<a name="mail-from-setup-procedure-email-address"></a>

您还可以为特定电子邮件地址设置自定义 MAIL FROM 域。要为电子邮件地址设置自定义 MAIL FROM 域，您必须修改与该电子邮件地址相关联的域的 DNS 记录。

**注意**  
您无法为不归您所有的域上的地址设置自定义 MAIL FROM 域（例如，您无法为 `gmail.com` 域上的地址创建自定义 MAIL FROM 域），因为您无法将必要的 DNS 记录添加到该域中）。

**将经验证的电子邮件地址配置为使用指定的 MAIL FROM 域**

1. 打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在左侧导航面板中的**配置**下，选择**身份**。

1. 在身份列表中，选择要配置的身份，其中 **Identity type**（身份类型）是 **Email address**（电子邮件地址），以及 **Status**（状态）为 *Verified*（已验证）。

   1. 如果 **Status**（状态）是 *Unverified*（未核实），请在 [验证电子邮件地址身份](creating-identities.md#just-verify-email-proc) 完成过程以验证电子邮件地址的域。

1. 在 **MAIL FROM Domain**（MAIL FROM 域）选项卡下方，选择 **Custom MAIL FROM domain**（自定义 MAIL FROM 域）窗格中的 **Edit**（编辑）。

1. 在 **General details**（一般细节）窗格中，执行以下操作：

   1. 选择 **Use a custom MAIL FROM domain**（使用自定义 MAIL FROM 域）复选框。

   1. 对于 **MAIL FROM Domain (MAIL FROM 域)**，输入要用作 MAIL FROM 子域的域。

   1. 对于 **Behavior on MX failure**（MX 失败时的行为），选择下列选项之一：
      + **使用原定设置的 MAIL FROM 域名** – 如果未正确设置自定义 MAIL FROM 域的 MX 记录，那么 Amazon SES 将使用 `amazonses.com` 的子域。子域名因您使用的 AWS 区域 Amazon SES 而异。
      + **拒绝邮件** – 如果未正确设置自定义 MAIL FROM 域的 MX 记录，那么 Amazon SES 将返回 `MailFromDomainNotVerified` 错误。您尝试从此电子邮件地址发送的电子邮件将被自动拒绝。

   1. 选择 **Save changes**（保存更改）- 您将会回到上一个屏幕。

1. 将 MX 和 SPF（类型为 TXT）记录发布到自定义 MAIL FROM 域的 DNS 服务器：

   在 **Custom MAIL FROM domain**（自定义 MAIL FROM 域）窗格中，**Publish DNS records**（发布 DNS 记录）表现在会显示您必须发布（添加）到域的 DNS 配置中的 MX 和 SPF（类型为 TXT）记录。这些记录使用下表中显示的格式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/mail-from.html)

   在以上记录中，
   + *subdomain*。 *domain*。 *com*将填充你的 MAIL FROM 子域名
   + *region*将填充您要验证 MAIL FROM 域的名称（例如`us-west-2``us-east-1``eu-west-1`、或，等） AWS 区域 
   + 与 MX 值一起列出的数字 *10* 是邮件服务器的优先顺序，需要按照 DNS 提供商的 GUI 指定的单独值字段输入
   + SPF 的 TXT 记录值必须包含引号

   从 **Publish DNS records**（发布 DNS 记录）表中，通过选择每个值旁边的复制图标复制 MX 和 SPF（类型为 TXT）记录，然后将它们粘贴到 DNS 提供商 GUI 中的相应字段中。或者，您可以选择**下载 .csv 记录集**以将记录副本保存到您的电脑中。
**重要**  
要使用 Amazon SES 成功设置自定义 MAIL FROM 域，您必须仅将一条 MX 记录发布到您的 MAIL FROM 域的 DNS 服务器。如果 MAIL FROM 域有多条 MX 记录，则使用 Amazon SES 设置自定义 MAIL FROM 将失败。

   如果 Route 53 为您的 MAIL FROM 域提供 DNS 服务，并且您使用与 Route 53 相同的账户登录，则选择使用 R **oute 53 发布记录**。 AWS 管理控制台 DNS 记录将自动应用于您的域的 DNS 配置。

   如果使用其他 DNS 提供商，则必须手动将 DNS 记录发布到 MAIL FROM 域的 DNS 服务器。将 DNS 记录添加到域的 DNS 服务器的过程因您的网络托管服务或 DNS 提供商而异。

   为您的域发布 DNS 记录的过程取决于您使用的 DNS 提供商。下表包含的链接指向几个广泛使用的 DNS 提供商的文档。此列表并不详尽无遗，并不表示认可；同样，如果您的 DNS 提供商没有列出，这并不意味着他们不支持 MAIL FROM 域配置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/mail-from.html)

   当 Amazon SES 检测到记录已生效时，您会收到一封电子邮件，通知您自定义 MAIL FROM 域已成功设置。视您的 DNS 提供商而定，Amazon SES 检测 MX 记录之前可能会延迟最多 72 个小时。

## 使用 Amazon SES 的自定义 MAIL FROM 域设置状态
<a name="mail-from-states"></a>

在您将身份配置为使用自定义 MAIL FROM 域后，设置的状态为 pending (待处理)，并且 Amazon SES 会尝试在您的 DNS 设置中检测所需的 MX 记录。之后，状态因 Amazon SES 是否检测到 MX 记录而异。下表介绍了电子邮件发送行为以及与每个状态关联的 Amazon SES 操作。每当状态发生变化时，Amazon SES 都会向与您关联的电子邮件地址发送通知 AWS 账户。


****  

| 州 | 电子邮件发送行为 | Amazon SES 操作 | 
| --- | --- | --- | 
|  待定  |  使用自定义 MAIL FROM 回退设置  |  Amazon SES 尝试在 72 小时内检测所需的 MX 记录。如果失败，则状态将更改为“失败”。  | 
|  成功  |  使用自定义 MAIL FROM 域  |  Amazon SES 持续检查所需的 MX 记录是否到位。  | 
|  TemporaryFailure  |  使用自定义 MAIL FROM 回退设置  |  Amazon SES 尝试在 72 小时内检测所需的 MX 记录。如果失败，则状态将更改为“已失败”；如果成功，则状态将更改为“成功”。  | 
|  失败  |  使用自定义 MAIL FROM 回退设置  |  Amazon SES 不再尝试检测所需的 MX 记录。要使用自定义 MAIL FROM 域，您必须重新开始 [配置自定义 MAIL FROM 域](#mail-from-set) 中的设置过程。  | 

# 遵守 Amazon SES 中的 DMARC 身份验证协议
<a name="send-email-authentication-dmarc"></a>

基于域名的邮件认证、报告和一致性 (DMARC) 是一种电子邮件认证协议，它使用发件人策略框架 (SPF) 和 DomainKeys 识别邮件 (DKIM) 来检测电子邮件欺骗和网络钓鱼。为了符合 DMARC 的要求，消息必须通过 SPF 或 DKIM 进行身份验证，但理想情况下，当两者都与 DMARC 结合使用时，您将确保您的电子邮件发送获得尽可能高级别的保护。

让我们简要回顾一下每种方法的作用，以及 DMARC 是如何将它们联系在一起的：
+  **SPF** – 标识哪些邮件服务器可以代表您的自定义 MAIL FROM 域，通过 DNS 使用的 DNS TXT 记录发送邮件。收件人邮件系统参考 SPF TXT 记录，以确定来自您自定义域的消息是否来自授权的消息发送服务器。基本上，SPF 的设计初衷是帮助防止欺骗，但实际上存在 SPF 容易遭受的欺骗技术，这就是为什么您还需要结合 DMARC 使用 DKIM 的原因。
+  **DKIM** – 在电子邮件标头中为您的出站消息添加数字签名。接收电子邮件系统可以使用此数字签名来协助验证传入的电子邮件是否由该域拥有的密钥签名。但是，当接收电子邮件系统转发消息时，消息的信封会被更改，从而使 SPF 身份验证失效。由于数字签名是电子邮件标头的一部分，会随电子邮件消息一同保留，因此即使在邮件服务器之间转发消息（只要邮件内容未被修改），DKIM 也能发挥作用。
+  **DMARC** – 确保域与至少一个 SPF 和 DKIM 保持一致。仅使用 SPF 和 DKIM 并不能确保发件人地址经过身份验证（这是您的收件人在其电子邮件客户端中看到的电子邮件地址）。SPF 仅检查 MAIL FROM 地址中指定的域（您的收件人看不到此域）。DKIM 仅检查 DKIM 签名中指定的域（您的收件人也看不到此域）。DMARC 通过要求 SPF 或 DKIM 上的域一致性正确来解决这两个问题：
  + 为了使 SPF 通过 DMARC 一致性检查，发件人地址中的域必须与 MAIL FROM 地址（也称为 Return-Path 和 Envelope-from 地址）中的域匹配。在转发邮件时，这几乎不可能实现，因为转发邮件会删除原始的发件人地址信息；在使用第三方批量电子邮件提供商发送邮件时也不可能实现，因为 Return-Path（MAIL FROM）用于处理退信和投诉，而提供商（SES）会使用他们自己的地址来跟踪这些退信和投诉。
  + 为了使 DKIM 通过 DMARC 一致性检查，DKIM 签名中指定的域必须与发件人地址中的域相匹配。如果您使用代表您发送邮件的第三方发件人或服务，则可以通过确保第三方发件人已正确配置为使用 DKIM 签名，并且已在域中添加了相应的 DNS 记录来实现。然后，接收邮件服务器将能够验证由您的第三方发送的电子邮件，就好像该电子邮件是由授权使用域内地址的人发送的邮件一样。

**与 DMARC 协同运行**  
我们在上面讨论的 DMARC 一致性检查展示了 SPF、DKIM 和 DMARC 是如何协同工作的，以增加对您的域的信任以及确保将您的电子邮件传送到收件箱。DMARC 通过确保收件人看到的发件人地址已通过 SPF 或 DKIM 进行身份验证，来实现这一目标：
+ 如果所述的 SPF 或 DKIM 检查中的一个或两个都成功，则消息通过 DMARC 验证。
+ 如果所述的 SPF 或 DKIM 检查均失败，则邮件将无法通过 DMARC 验证。

因此，为了让 DMARC 能够最大限度地对您发送的电子邮件进行身份验证，SPF 和 DKIM 都是必不可少的，通过同时使用这三者，有助于确保您的发送域得到全面保护。

DMARC 还允许您通过设置的策略，指示电子邮件服务器在 DMARC 身份验证失败时如何处理电子邮件。下一节（[对域设置 DMARC 策略](#send-email-authentication-dmarc-dns)）将对此进行解释，其中包含有关如何配置您的 SES 域，从而使您发送的电子邮件同时通过 SPF 和 DKIM 符合 DMARC 身份验证协议的信息。

## 对域设置 DMARC 策略
<a name="send-email-authentication-dmarc-dns"></a>

要设置 DMARC，您必须修改域的 DNS 设置。域的 DNS 设置应包括指定域的 DMARC 设置的 TXT 记录。向 DNS 配置中添加 TXT 记录的过程取决于您使用的 DNS 或托管提供商。如果您使用 Route 53，请参阅《Amazon Route 53 开发人员指南》**中的[使用记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/rrsets-working-with.html)。如果使用的是其他提供商的产品，请参阅提供商的 DNS 配置文档。

您创建的 TXT 记录的名称应为 `_dmarc.example.com`，其中 `example.com` 是域。TXT 记录的值包含应用于域的 DMARC 策略。以下是包含 DMARC 策略的 TXT 记录的示例：


| Name | Type | 值 | 
| --- | --- | --- | 
| \$1dmarc.example.com | TXT | "v=DMARC1;p=quarantine;rua=mailto:my\$1dmarc\$1report@example.com" | 

在前面的 DMARC 策略示例中，该策略要求电子邮件提供商执行以下操作：
+ 对于任何未通过身份验证的消息，请按策略参数 `p=quarantine` 的指定将其发送到垃圾邮件文件夹。其他选项包括使用 `p=none` 不执行任何操作，或者使用 `p=reject` 直接拒绝消息。
  + 下一节将讨论如何以及何时使用这三种策略设置 - *在错误的时间使用错误的策略设置，可能会导致您的电子邮件无法传送，*请参阅[实施 DMARC 的最佳实践](#send-email-authentication-dmarc-implement)。
+ 根据报告参数 `rua=mailto:my_dmarc_report@example.com`（*rua* 代表聚合报告的报告 URI）的规定，以摘要形式（即汇总某一时间段内的数据并生成一份报告，而不是为每个事件单独发送报告）发送所有身份验证失败的电子邮件的报告。电子邮件提供商通常每天发送一次此类汇总报告，但具体政策因提供商而异。

要了解更多有关如何为域配置 DMARC 的信息，请参阅 DMARC 网站上的[概述](https://dmarc.org/overview/)。

有关 DMARC 系统的完整规范，请参阅[国际互联网工程任务组（IETF）DMARC 草案](https://datatracker.ietf.org/doc/draft-ietf-dmarc-dmarcbis/)。

## 实施 DMARC 的最佳实践
<a name="send-email-authentication-dmarc-implement"></a>

最好是分阶段逐步实施您的 DMARC 策略执行，以免影响其他邮件流。制定并实施一个遵循以下步骤的推广计划。在进行下一步之前，先对每个子域执行这些步骤，最后再对组织中的顶级域执行。

1. 监控实施 DMARC 的影响（p=none）。
   + 首先，为一个子域或域创建一个简单的监控模式记录，该记录要求邮件接收组织向您发送他们使用该域观察到的消息的统计信息。监控模式记录是一个 DMARC TXT 记录，其策略设置为无 `p=none`。
   + 通过 DMARC 生成的报告将提供通过和未通过这些检查的消息的数量和来源。您可以轻松地了解您的合法流量受这些检查覆盖的情况。您会看到转发的迹象，因为如果内容被修改，转发的消息将无法通过 SPF 和 DKIM 检查。您还将开始看到发送了多少欺诈性消息，以及这些消息是从哪里发送的。
   +  此步骤的目标是了解在实施接下来的两个步骤中的任何一个时，哪些电子邮件会受到影响，并确保任何第三方或授权发件人调整其 SPF 或 DKIM 策略以保持一致。
   + 最适合现有域的使用。

1. 请求外部邮件系统隔离未通过 DMARC 的邮件（p=quarantine）。
   + 当您认为您所有或大部分的合法流量均已通过 SPF 或 DKIM 实现了域对齐，并且您了解了实施 DMARC 的影响后，您可以实施隔离策略。隔离策略是一种 DMARC TXT 记录，其策略设置为隔离 `p=quarantine`。通过这样做，您要求 DMARC 接收方将您域下未能通过 DMARC 的邮件放入本地等同于垃圾邮件文件夹的位置，而不是您客户的收件箱。
   + 最适合用于在第 1 步期间已经分析了 DMARC 报告的域转换。

1. 请求外部邮件系统不接受未通过 DMARC 的邮件（p=reject）。
   + 实施拒绝策略通常是最后一步。拒绝策略是指其策略设置为拒绝 `p=reject` 的 DMARC TXT 记录。当您这样做时，您要求 DMARC 接收方不接受未能通过 DMARC 检查的消息，这意味着这些消息甚至不会被隔离到垃圾邮件文件夹中，而是会被直接拒绝。
   + 当使用拒绝策略时，由于拒绝会导致 SMTP 退信，您将能够确切地知道哪些消息未能通过 DMARC 策略。而使用隔离策略时，汇总数据会提供有关通过或未通过 SPF、DKIM 和 DMARC 检查的电子邮件百分比的信息。
   + 最适合已完成前两个步骤的新域或现有域。

## 通过 SPF 遵守 DMARC
<a name="send-email-authentication-dmarc-spf"></a>

要使电子邮件基于 SPF 遵守 DMARC，必须满足以下两个条件：
+ 该消息必须基于您已发布到自定义 MAIL FROM 域的 DNS 配置中的有效 SPF（类型 TXT）记录，通过 SPF 检查。
+ 电子邮件标头中收件人地址的域必须与 MAIL FROM 地址中指定的域或其子域一致（匹配）。为了实现与 SES 的 SPF 对齐，域的 DMARC 策略不得指定严格的 SPF 策略（aspf=s）。

要满足上述要求，请完成以下步骤：
+ 通过完成 [使用自定义 MAIL FROM 域](mail-from.md) 中的过程设置自定义 MAIL FROM 域。
+ 确保您的发送域使用宽松的 SPF 策略。如果您尚未更改域的策略遵守方式，它将默认使用宽松的策略，就像 SES 一样。
**注意**  
您可以在命令行中输入以下命令，将 `example.com` 替换为您的域名，从而确定您的域的 DMARC 与 SPF 的符合情况：  

  ```
  dig TXT _dmarc.example.com
  ```
在此命令的输出中，在 **Non-authoritative answer** 下查找以 `v=DMARC1` 开头的记录。如果此记录包含字符串 `aspf=r`，或者 `aspf` 字符串根本不存在，则您的域为 SPF 使用宽松遵守。如果记录包含字符串 `aspf=s`，则您的域为 SPF 使用严格遵守。您的系统管理员需要从域的 DNS 配置的 DMARC TXT 记录中删除此标签。  
或者，你可以使用基于网络的DMARC查询工具，例如 [dmarcian网站上的DMARC In](https://dmarcian.com/dmarc-inspector/) spector或网站上的 [DMARC检查工具](https://mxtoolbox.com/dmarc.aspx)来确定你的域名与SPF的政策一致性。 MxToolBox

## 通过 DKIM 遵守 DMARC
<a name="send-email-authentication-dmarc-dkim"></a>

要使电子邮件基于 DKIM 遵守 DMARC，必须满足以下两个条件：
+ 消息必须具有有效的 DKIM 签名并通过 DKIM 检查。
+ DKIM 签名中指定的域必须与发件人地址中的域一致（匹配）。如果域的 DMARC 策略指定了 DKIM 的严格遵守方式，则这些域必须完全匹配（SES 默认使用严格的 DKIM 策略）。

要满足上述要求，请完成以下步骤：
+ 通过完成 [Amazon SES 中的 Easy DKIM](send-email-authentication-dkim-easy.md) 中的过程设置 Easy DKIM。使用 Easy DKIM 时，Amazon SES 会自动对您的电子邮件签名。
**注意**  
除了使用 Easy DKIM 以外，您也可以[为邮件手动签名](send-email-authentication-dkim-manual.md)。但是，如果您选择这样做，请务必小心，因为 Amazon SES 不验证您构建的 DKIM 签名。因此，我们强烈建议您使用 Easy DKIM。
+ 确保 DKIM 签名中指定的域与发件人地址中的域一致。或者，如果从发件人地址中域的子域发送，请确保您的 DMARC 策略设置为宽松的一致性。
**注意**  
您可以在命令行中输入以下命令，将 `example.com` 替换为您的域名，从而确定您的域的 DMARC 与 DKIM 的符合情况：  

  ```
  dig TXT _dmarc.example.com
  ```
在此命令的输出中，在 **Non-authoritative answer** 下查找以 `v=DMARC1` 开头的记录。如果此记录包含字符串 `adkim=r`，或者 `adkim` 字符串根本不存在，则您的域为 DKIM 使用宽松遵守。如果记录包含字符串 `adkim=s`，则您的域为 DKIM 使用严格遵守。您的系统管理员需要从域的 DNS 配置的 DMARC TXT 记录中删除此标签。  
或者，你可以使用基于网络的DMARC查询工具，例如d [marcian网站上的DMARC In](https://dmarcian.com/dmarc-inspector/) spector或网站上的 [DMARC检查工具](https://mxtoolbox.com/dmarc.aspx)来确定你的域名与DKIM的政策一致性。 MxToolBox 

# 在 Amazon SES 中使用 BIMI
<a name="send-email-authentication-bimi"></a>

用于邮件识别的品牌指标（BIMI）是一种电子邮件规范，它使电子邮件收件箱能够在支持的电子邮件客户端中将品牌徽标显示在该品牌经过身份验证的电子邮件旁边。

BIMI 是一种直接连接到身份验证的电子邮件规范，但它不是一个独立的电子邮件身份验证协议，因为它要求所有电子邮件都符合 [DMARC](send-email-authentication-dmarc.md) 身份验证。

尽管 BIMI 需要 DMARC，而 DMARC 要求您的域具有 SPF 或 DKIM 记录以保持一致，但最好同时包含 SPF 和 DKIM 记录以提高安全性，并且因为一些电子邮件服务提供商（ESP）在使用 BIMI 时需要这两者。以下章节介绍在 Amazon SES 中实现 BIMI 的步骤。

## 在 SES 中设置 BIMI
<a name="bimi-setup-procedure"></a>

您可以为您拥有的电子邮件域配置 BIMI，在 SES 中，此类域称为*自定义* MAIL FROM 域。配置完成后，您从该域发送的所有邮件将在[支持 BIMI 的电子邮件客户端](https://bimigroup.org/bimi-infographic/)中显示您的 BIMI 徽标。

要使您的电子邮件显示 BIMI 徽标，就必须在 SES 中满足一些先决条件：在以下过程中，这些先决条件是概括性的，并将引用详细介绍这些主题的专门章节。这里将详细介绍特定于 BIMI 的步骤以及在 SES 中对其进行配置所需的内容。

**在自定义 MAIL FROM 域中设置 BIMI**

1. 必须在 SES 中配置自定义 MAIL FROM 域，并同时为该域发布 SPF（类型 TXT）和 MX 记录。如果您没有自定义 MAIL FROM 域，或者想为您的 BIMI 徽标创建一个新的域，请参阅 [使用自定义 MAIL FROM 域](mail-from.md)。

1. 使用 Easy DKIM 配置您的域。请参阅[Amazon SES 中的 Easy DKIM](send-email-authentication-dkim-easy.md)。

1. 通过向 DNS 提供商发布 TXT 记录（其中包含 BIMI 所需的以下执行策略细节），使用 DMARC 配置您的域，类似于以下两个示例之一：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-email-authentication-bimi.html)

   在前面的 BIMI 所需的 DMARC 策略示例中：
   + `example.com` 应替换为您的域或子域。
   + `p=` 值可以是：
     + *quarantine*，*pct* 值设置为 *100*，如上所示，或者
     + *reject*，如上所示。
   + 如果您从子域发送，BIMI 要求父域也必须具有此执行策略。子域将属于父域的策略范围。但是，如果您除了为父域发布的内容外，还为您的子域添加了 DMARC 记录，则您的子域也必须具有相同的执行策略才能有资格获得 BIMI。
   + 如果您从未为您的域设置 DMARC 策略，请参阅[遵守 Amazon SES 中的 DMARC 身份验证协议](send-email-authentication-dmarc.md)，确保您只使用特定于 BIMI 的 DMARC 策略值，如上所示。

1. 将您的 BIMI 徽标制作成可扩缩矢量图形（SVG）`.svg` 文件，BIMI 所需的特定 SVG 配置文件定义为 SVG Portable/Secure（SVG P/S）。为了使您的徽标显示在电子邮件客户端中，它必须完全符合这些规范。请参阅 [BIMI Group](https://bimigroup.org/) 有关[创建 SVG 徽标文件](https://bimigroup.org/creating-bimi-svg-logo-files/)的指南和建议使用的 [SVG 转换工具](https://bimigroup.org/svg-conversion-tools-released/)。

1. （可选）获取认证标志证书（VMC）。一些 ESP（例如 Gmail 和 Apple）要求 VMC 提供证据，证明您拥有 BIMI 徽标的商标和内容。尽管这不是在您的域上实施 BIMI 的必要条件，但如果您向其发送邮件的 ESP 强制要求遵守 VMC，则您的 BIMI 徽标将不会显示在电子邮件客户端中。请参阅 BIMI Group 的有关[参与证书颁发机构](https://bimigroup.org/verified-mark-certificates-vmc-and-bimi/)的参考资料，为您的徽标获取 VMC。

1. 将您的 BIMI 徽标的 SVG 文件托管在您可以访问的服务器上，使其可通过 HTTPS 公开访问。例如，您可以将其上传到 [Amazon S3 桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)。

1. 创建并发布包含您的徽标 URL 的 BIMI DNS 记录。当[支持 BIMI 的 ESP](https://bimigroup.org/bimi-infographic/) 检查您的 DMARC 记录时，它还会查找一个 BIMI 记录，其中包含您徽标的 `.svg` 文件的 URL，如果已配置，则还包括 VMC 的 `.pem` 文件的 URL。如果记录匹配，它们将显示您的 BIMI 徽标。

   使用 BIMI 配置您的域，方法是向您的 DNS 提供商发布具有如下所示的值的 TXT 记录：从域发送（如第一个示例所示）；从子域发送（如第二示例所示）：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/send-email-authentication-bimi.html)

   在前面的 BIMI 记录示例中：
   + 名称值应按字面意思将 `default._bimi.` 指定为 `example.com` 的子域或 `marketing.example.com`，或者应将其替换为您的域或子域。
   + `v=` 值是 BIMI 记录的*版本*。
   + `l=` 值是一个*徽标*，表示指向图像的 `.svg` 文件的 URL。
   + `a=` 值是一个*颁发机构*，表示指向您的证书的 `.pem` 文件的 URL。

   您可以使用 BIMI Group 的 [BIMI Inspector](https://bimigroup.org/bimi-generator/) 等工具验证您的 BIMI 记录。

此过程的最后一步是定期向支持放置 BIMI 徽标的 ESP 发送图案。您的域应该有一个定期的交付节奏，并且对于您要向其发送邮件的 ESP 应该有良好的声誉。对于您没有既定声誉或发送节奏的 ESP，BIMI 徽标放置可能需要一段时间才能填充到其中。

您可以通过 [BIMI Group](https://bimigroup.org/) 组织找到更多与 BIMI 有关的信息和资源。

# 为 Amazon SES 设置事件通知
<a name="monitor-sending-activity-using-notifications"></a>

要使用 Amazon SES 来发送电子邮件，必须有一个系统可用于管理退回邮件和投诉。Amazon SES 可通过以下三种方式通知退回邮件或投诉事件：发送通知电子邮件、通知 Amazon SNS 主题或发布发送事件。本节包含有关将 Amazon SES 设置为通过电子邮件或通过通知 Amazon SNS 主题来发送特定类型通知的信息。有关发布发送事件的更多信息，请参阅[使用 Amazon SES 事件发布监控电子邮件发送](monitor-using-event-publishing.md)。

可以使用 Amazon SES 控制台或 Amazon SES API 来设置通知。

**Topics**
+ [重要注意事项](#monitor-sending-activity-using-notifications-considerations)
+ [通过电子邮件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)
+ [使用 Amazon SNS 接收 Amazon SES 通知](monitor-sending-activity-using-notifications-sns.md)

## 重要注意事项
<a name="monitor-sending-activity-using-notifications-considerations"></a>

设置 Amazon SES 发送通知时，有几点务必要注意：
+ 电子邮件和 Amazon SNS 通知适用于独立身份（用于发送电子邮件的已验证电子邮件地址或域）。当您为某一身份启用通知时，Amazon SES 仅针对从该身份发送的电子邮件发送通知，并且仅在您配置通知的 AWS 区域发送通知。
+ 必须启用一种接收退回邮件或投诉通知的方式。可以将通知发送到生成退回邮件或投诉的域或电子邮件地址，或者发送到 Amazon SNS 主题。还可以使用[事件发布](monitor-using-event-publishing.md)将有关各种不同类型事件（包括退回邮件、投诉、送达等）的通知发送到 Amazon SNS 主题或 Firehose 流。

  如果未设置任何一种接收退回邮件或投诉通知的方法，Amazon SES 会自动将退回邮件和投诉通知转发到出现退回邮件或投诉事件的电子邮件中的退回路径地址（或来源地址，如果未指定退回路径地址），即使禁用了电子邮件反馈转发也是如此。

  如果禁用电子邮件反馈转发并启用事件发布，则必须对发送的所有电子邮件应用包含事件发布规则的配置集。在此情况下，如果不使用配置集，Amazon SES 会将退回邮件和投诉通知转发到出现退回邮件或投诉事件的电子邮件中的退回路径或来源地址。
+ 如果将 Amazon SES 设置为使用多种方法（例如通过发送电子邮件通知和使用发送事件）发送退回邮件和投诉事件，那么可能收到有关同一事件的多个通知。

# 通过电子邮件接收 Amazon SES 通知
<a name="monitor-sending-activity-using-notifications-email"></a>

当您收到退回邮件和投诉时，Amazon SES 可以使用称为*电子邮件反馈转发*的流程为您发送电子邮件。

要使用 Amazon SES 来发送电子邮件，必须将它配置为使用以下方法之一发送退回邮件和投诉通知：
+ 启用电子邮件反馈转发。此节中包含此类通知的设置过程。
+ 将通知发送到 Amazon SNS 主题。有关更多信息，请参阅 [使用 Amazon SNS 接收 Amazon SES 通知](monitor-sending-activity-using-notifications-sns.md)。
+ 发布事件通知。有关更多信息，请参阅 [使用 Amazon SES 事件发布监控电子邮件发送](monitor-using-event-publishing.md)。

**重要**  
有关通知的若干要点，请参阅[为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)。

**Topics**
+ [启用电子邮件反馈转发](#monitor-sending-activity-using-notifications-email-enabling)
+ [禁用电子邮件反馈转发](#monitor-sending-activity-using-notifications-email-disabling)
+ [电子邮件反馈转发目标](#monitor-sending-activity-using-notifications-email-destination)

## 启用电子邮件反馈转发
<a name="monitor-sending-activity-using-notifications-email-enabling"></a>

默认情况下会启用电子邮件反馈转发。如果您之前禁用了该功能，您可以使用本节中的以下步骤来启用它。

**使用 Amazon SES 控制台通过电子邮件启用退回邮件和投诉转发**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在经验证的电子邮件地址或域的列表中，选择要为其配置退回邮件和投诉通知的电子邮件地址或域。

1. 在详细信息窗格中，展开**通知**部分。

1. 选择 **Edit Configuration**。

1. 在 **Email Feedback Forwarding** 下，选择 **Enabled**。
**注意**  
在此页面上进行的更改可能需要几分钟才能生效。

您还可以使用 [ SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)API 操作通过电子邮件启用退回通知和投诉通知。

## 禁用电子邮件反馈转发
<a name="monitor-sending-activity-using-notifications-email-disabling"></a>

如果设置了其他提供退回邮件和投诉通知的方法，则可禁用电子邮件反馈转发，以便在退回邮件或投诉事件发生时，不会收到多个通知。

**使用 Amazon SES 控制台通过电子邮件禁用退回邮件和投诉转发**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在经验证的电子邮件地址或域的列表中，选择要为其配置退回邮件和投诉通知的电子邮件地址或域。

1. 在详细信息窗格中，展开**通知**部分。

1. 选择 **Edit Configuration**。

1. 在 **Email Feedback Forwarding** 下，选择 **Disabled**。
**注意**  
必须配置一种接收退回邮件和投诉通知的方法，才能通过 Amazon SES 发送电子邮件。如果禁用电子邮件反馈转发，则必须启用通过 Amazon SNS 发送通知，或者使用[事件发布](monitor-using-event-publishing.md)将退回邮件和投诉事件发送到 Amazon SNS 主题或 Firehose 流。如果使用事件发布，还必须对发送的每封电子邮件应用包含事件发布规则的配置集。如果未设置接收退回邮件和投诉通知的方法，Amazon SES 将自动通过电子邮件将反馈通知转发到 Return-Path (退回路径) 字段（或 Source (来源) 字段，如果未指定退回路径地址）中发生退回邮件或投诉事件的邮件的地址。在此情况下，即使禁用了电子邮件反馈通知，Amazon SES 也会转发退回邮件和投诉通知。

1. 保存您的通知配置，请选择 **Save Config**。
**注意**  
在此页面上进行的更改可能需要几分钟才能生效。

您还可以使用 [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)API 操作禁用通过电子邮件发送的退信和投诉通知。

## 电子邮件反馈转发目标
<a name="monitor-sending-activity-using-notifications-email-destination"></a>

当您通过电子邮件接收通知时，Amazon SES 会重写 `From` 标头，并向您发送通知。Amazon SES 将通知转发到的地址取决于您发送原始邮件的方式。

如果您使用了 SMTP 接口发送邮件，则通知会根据以下规则传送：
+ 如果您在 `SMTP DATA` 部分指定了 `Return-Path` 标头，通知将发送至该地址。
+ 否则，通知将发送到您在发出 MAIL FROM 命令时指定的地址。

如果您是使用 `SendEmail` API 操作发送邮件的，则通知会根据以下规则传送：
+ 如果您向 `SendEmail` API 调用中指定了可选 `ReturnPath` 参数，则通知会发送至该地址。
+ 否则，通知将发送至 `Source` 的必需 `SendEmail` 参数中指定的地址。

如果您是使用 `SendRawEmail` API 操作发送邮件的，则通知会根据以下规则传送：
+ 如果您在原始邮件中指定了 `Return-Path` 标头，通知将发送至该地址。
+ 否则，如果您在对 `SendRawEmail` API 的调用中指定了 `Source` 参数，则通知会发送至该地址。
+ 不然，通知会发送至原始邮件 `From` 标头中的地址。

**注意**  
当您指定电子邮件中的 `Return-Path` 地址时，该地址会收到通知。但是，收件人收到的消息版本中包含 `Return-Path` 标头，其中包含一个匿名电子邮件地址（如 *a0b1c2d3e4f5a6b7-c8d9e0f1-a2b3-c4d5-e6f7-a8b9c0d1e2f3-000000@amazonses.com*）。无论您以何种方式发送电子邮件，该电子邮件地址均为匿名。

# 使用 Amazon SNS 接收 Amazon SES 通知
<a name="monitor-sending-activity-using-notifications-sns"></a>

可以将 Amazon SES 配置为在您收到退回邮件或投诉时或者传递电子邮件时通知 Amazon SNS 主题。Amazon SNS 通知采用[JavaScript 对象表示法 (JSON)](http://www.json.org) 格式，这使您能够以编程方式处理通知。

要使用 Amazon SES 来发送电子邮件，必须将它配置为使用以下方法之一发送退回邮件和投诉通知：
+ 将通知发送到 Amazon SNS 主题。此节中包含此类通知的设置过程。
+ 启用电子邮件反馈转发。有关更多信息，请参阅 [通过电子邮件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。
+ 发布事件通知。有关更多信息，请参阅 [使用 Amazon SES 事件发布监控电子邮件发送](monitor-using-event-publishing.md)。

**重要**  
有关通知的重要信息，请参阅[为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)。

**Topics**
+ [为 Amazon SES 配置 Amazon SNS 通知](configure-sns-notifications.md)
+ [为 Amazon SES 配置 Amazon SNS 通知](notification-contents.md)
+ [Amazon SES 的 Amazon SNS 通知示例](notification-examples.md)

# 为 Amazon SES 配置 Amazon SNS 通知
<a name="configure-sns-notifications"></a>

Amazon SES 可以通过 [Amazon Simple Notification Service（Amazon SNS）](https://aws.amazon.com/sns)向您通知有关退回邮件、投诉和送达的情况。

您可以在 Amazon SES 控制台中或者使用 Amazon SES API 来配置通知。

**Topics**
+ [先决条件](#configure-feedback-notifications-prerequisites)
+ [使用 Amazon SES 控制台来配置通知](#configure-feedback-notifications-console)
+ [使用 Amazon SES API 来配置通知](#configure-feedback-notifications-api)
+ [反馈通知故障排除](#configure-feedback-notifications-troubleshooting)

## 先决条件
<a name="configure-feedback-notifications-prerequisites"></a>

在 Amazon SES 中设置 Amazon SNS 通知之前，请完成以下步骤：

1. 在 Amazon SNS 中创建主题。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[创建主题](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**重要**  
当您使用 Amazon SNS 创建主题时，对于 **Type (类型)**，仅选择 **Standard (标准)**。（SES 不支持 FIFO 类型主题。）

   无论是创建新的 SNS 主题还是选择现有主题，都需要授予 SES 访问权限，才能向该主题发布通知。

   要授予 Amazon SES 发布主题通知的权限，请在 SNS 控制台的**编辑主题**屏幕上，展开**访问策略**，并在 **JSON 编辑器**中，添加以下权限策略：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "notification-policy",
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ses.amazonaws.com"
               },
               "Action": "sns:Publish",
               "Resource": "arn:aws:sns:us-east-1:111122223333:topic_name",
               "Condition": {
                   "StringEquals": {
                       "AWS:SourceAccount": "111122223333",
                       "AWS:SourceArn": "arn:aws:ses:topic_region:111122223333:identity/identity_name"
                   }
               }
           }
       ]
   }
   ```

------

   对前面的策略示例进行以下更改：
   + *topic\$1region*替换为您创建 SNS 主题的 AWS 区域。
   + 将 *111122223333* 替换为您的 AWS 账户 ID。
   + *topic\$1name*替换为您的 SNS 主题的名称。
   + *identity\$1name*替换为您订阅 SNS 主题的经过验证的身份（电子邮件地址或域名）。

1. 使用至少一个端点订阅主题。例如，如果您希望通过短信接收通知，则使用 SMS 端点（即，移动电话号码）订阅主题。要通过电子邮件接收通知，使用电子邮件端点（电子邮件地址）订阅主题。

   有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （可选）如果您的 Amazon SNS 主题使用 AWS Key Management Service (AWS KMS) 进行服务器端加密，则必须向密钥策略添加权限。 AWS KMS 您可以通过将以下策略附加到 AWS KMS 密钥策略来添加权限：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowSESToUseKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ses.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

## 使用 Amazon SES 控制台来配置通知
<a name="configure-feedback-notifications-console"></a>

**使用 Amazon SES 控制台来配置通知**

1. 打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在 **Identities**（身份）容器中，选择您希望在从此身份发送的消息导致退回、投诉或送达时接收反馈通知的已验证身份。
**重要**  
经验证的域通知设置将应用于从该域中的电子邮件址（经验证的电子邮件地址*除外*）发送的所有邮件。

1. 在您选择的已验证身份的详细信息屏幕中，选择 **Notifications**（通知）选项卡，然后选择 **Feedback notifications**（反馈通知）容器中的 **Edit**（编辑）。

1. 展开要接收通知的每种反馈类型的 SNS 主题列表框，然后选择您拥有的 SNS 主题之一、**No SNS topic**（无 SNS 主题），或者 **SNS topic you don’t own**（你不拥有的 SNS 主题）。

   1. 如果您选择了 **SNS topic you don’t own**（您不拥有的 SNS 主题），**SNS topic ARN**（SNS 主题 ARN）将显示字段，您必须在其中输入委托发件人与您共享的 SNS 主题 ARN。（只有您的委托发件人才会收到这些通知，因为他们拥有 SNS 主题。要了解有关委托发送的更多信息，请参阅[发送授权概览](sending-authorization-overview.md)。）
**重要**  
您用于退货、投诉和送达通知的 Amazon SNS 主题必须与您使用 Amazon SES 时 AWS 区域 使用的主题相同。  
此外，您必须订阅主题的一个或多个端点才能接收通知。例如，如果您要将通知发送到电子邮件地址，则必须使用电子邮件端点订阅主题。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （可选）如果您希望主题通知包括原始电子邮件中的标头，请选中 **Include original email headers**（包括原始电子邮件标头）框直接位于每种反馈类型的 SNS 主题名称下方。此选项仅在您已将 Amazon SNS 主题分配到关联的通知类型时可用。有关原始电子邮件标头的内容的信息，请参阅 [通知内容](notification-contents.md)中的 `mail` 对象。

1. 选择 **Save changes**（保存更改）。您对通知设置所做的更改可能需要几分钟才能生效。

1. （可选）如果您为退回邮件和投诉都选择 Amazon SNS 主题通知，则可以完全禁用电子邮件通知，以免通过电子邮件和 SNS 通知接收双重通知。要禁用退回邮件和投诉的电子邮件通知，请在 **Email Feedback Forwarding**（电子邮件反馈转发）容器中已验证身份的详细信息屏幕中的 **Notifications**（通知）选项卡下方选择 **Edit**（编辑）、取消勾选 **Enabled**（已启用）方框，然后选择 **Save changes**（保存更改）。

在配置您的设置之后，您将开始接收 Amazon SNS 主题的退回邮件、投诉和送达通知。这些通知采用 JavaScript对象表示法 (JSON) 格式，并遵循中描述的结构[通知内容](notification-contents.md)。

您将需要按标准 Amazon SNS 费率为退回邮件、投诉和送达通知付费。有关更多信息，请参阅 [Amazon SNS 定价页面](https://aws.amazon.com/sns/pricing)。

**注意**  
如果由于主题已被删除或您 AWS 账户 不再有权向该主题发布内容而尝试向该主题发布内容失败，Amazon SES 会删除该主题的配置，前提是该主题已配置为退回或投诉（不是传送——对于送达通知，SES 不会删除 SNS 主题配置设置）。此外，Amazon SES 还会为身份重新启用退回邮件和投诉电子邮件通知，并且您将通过电子邮件收到更改通知。如果将多个身份配置为使用该主题，则在每个身份无法发布到该主题时，更改每个身份的主题配置。

## 使用 Amazon SES API 来配置通知
<a name="configure-feedback-notifications-api"></a>

您也可以使用 Amazon SES API 来配置退回邮件、投诉和送达通知。使用以下操作来配置通知：
+ [SetIdentityNotificationTopic](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityNotificationTopic.html)
+ [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)
+ [GetIdentityNotificationAttributes](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityNotificationAttributes.html)
+ [SetIdentityHeadersInNotificationsEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityHeadersInNotificationsEnabled.html)

您可以使用这些 API 操作编写用于通知的自定义前端应用程序。有关与通知相关的 API 操作的完整描述，请参阅 [Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)。

## 反馈通知故障排除
<a name="configure-feedback-notifications-troubleshooting"></a>

**未收到通知**  
如果您没有收到通知，请确保您已使用端点订阅发送通知的主题。当您使用电子邮件端点节点订阅主题时，您会收到一封电子邮件，要求您确认订阅。在开始接收电子邮件通知之前，您必须确认订阅。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

**`InvalidParameterValue`选择主题时的 错误**  
如果您收到表明发生 `InvalidParameterValue` 错误的错误消息，请检查 Amazon SNS 主题以查看它是否使用 AWS KMS进行了加密。如果是，则必须修改 AWS KMS 密钥的策略。请参阅 [先决条件](#configure-feedback-notifications-prerequisites) 以获取示例策略。

# 为 Amazon SES 配置 Amazon SNS 通知
<a name="notification-contents"></a>

退货、投诉和送达通知以 JavaScript 对象表示法 (JSON) 格式发布到[亚马逊简单通知服务 (Amazon SNS) Simple Notification S](https://aws.amazon.com/sns) ervice 主题。顶级 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 通知内容的一些重要说明：
+ 对于给定的通知类型，您可能会收到针对多个收件人的 Amazon SNS 通知，或者可能会收到针对每个收件人的 Amazon SNS 通知。您的代码应能够解析 Amazon SNS 通知并处理这两种情况；SES 不保证对通过 Amazon SNS 发送的通知进行排序或批处理。但是，不同的 Amazon SNS 通知类型（例如，退回邮件和投诉）不会合并为一个通知。
+ 您可能会针对一个收件人收到多个类型的 Amazon SNS 通知。例如，接收邮件服务器可能接受电子邮件（触发送达通知），但在处理电子邮件后，接收邮件服务器可能会确定该电子邮件实际导致了退回邮件（触发退回邮件通知）。不过，这些通知始终单独发送，因为它们属于不同的类型。
+ SES 保留在通知中添加其他字段的权利。同样地，解析这些通知的应用程序必须足够灵活以处理未知字段。
+ SES 在发送电子邮件时会覆盖邮件标头。您可以通过 `mail` 对象的 `headers` 和 `commonHeaders` 字段检索原始邮件的标头。

## 顶级 JSON 对象
<a name="top-level-json-object"></a>

SES 通知中的顶级 JSON 对象包含以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| notificationType |  一个字符串，包含由 JSON 对象表示的通知类型。可能的值为 `Bounce`、`Complaint` 或 `Delivery`。 如果你[设置事件发布](monitor-sending-using-event-publishing-setup.md)，此字段命名为 `eventType`。  | 
| mail |  一个 JSON 对象，包含有关通知所属的原始邮件的信息。有关更多信息，请参阅 [邮件对象](#mail-object)。  | 
| bounce |  此字段仅在 `notificationType` 为 `Bounce`，且包含的 JSON 对象保存有关退回邮件的信息时显示。有关更多信息，请参阅 [退回邮件对象](#bounce-object)。  | 
| complaint |  此字段仅在 `notificationType` 为 `Complaint`，且包含的 JSON 对象保存有关投诉的信息时显示。有关更多信息，请参阅 [投诉对象](#complaint-object)。  | 
| delivery |  此字段仅在 `notificationType` 为 `Delivery`，且包含的 JSON 对象保存有关送达的信息时显示。有关更多信息，请参阅 [送达对象](#delivery-object)。  | 

## 邮件对象
<a name="mail-object"></a>

每个退回邮件、投诉或送达通知均在 `mail` 对象中包含有关原始电子邮件的信息。包含有关 `mail` 对象的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  timestamp  |  原始消息的发送时间（ ISO8601格式）。  | 
|  messageId  |  SES 分配给电子邮件的唯一 ID。SES 在您发送邮件时已向您返回此值。  此邮件 ID 已由 SES 分配。您可以在 `mail` 对象的 `headers` 字段中找到原始电子邮件的邮件 ID。   | 
|  source  |  发送原始电子邮件的电子邮件地址（信封 MAIL FROM 地址）。  | 
|  sourceArn  |  已用于发送电子邮件的身份的 Amazon Resource Name（ARN）。在发送授权的情况下，`sourceArn` 是身份拥有者授权委托发件人用于发送电子邮件的身份的 ARN。有关发送授权的更多信息，请参阅[电子邮件身份验证方法使用发送授权](sending-authorization.md)。  | 
|  sourceIp  |  已执行到 SES 的电子邮件发送请求的客户端的原始公有 IP 地址。  | 
|  sendingAccountId  |  用于发送电子邮件的账户的 AWS 账户 ID。在发送授权的情况下，`sendingAccountId` 是委托发件人的账户 ID。  | 
|  callerIdentity  |  发送电子邮件的 SES 用户的 IAM 身份。  | 
|  destination  |  作为原始邮件的收件人的电子邮件地址的列表。  | 
|  headersTruncated  |  仅当您将通知设置配置为包括原始电子邮件中的标头时，此对象才存在。 指示通知中的标头是否截断。当原始邮件中的标头大小为 10 KB 或更大时，SES 会在截断通知中的标头。可能的值为 `true` 和 `false`。  | 
|  headers  |  仅当您将通知设置配置为包括原始电子邮件中的标头时，此对象才存在。 电子邮件的原始标头的列表。列表中的每个标头均有一个 `name` 字段和一个 `value` 字段。  `headers` 对象内的任何邮件 ID 均来自您传递至 SES 的原始邮件。SES 随后分配给电子邮件的邮件 ID 位于 `messageId` 对象的 `mail` 字段中。   | 
|  commonHeaders  |  仅当您将通知设置配置为包括原始电子邮件中的标头时，此对象才存在。 包括有关原始电子邮件中的常用电子邮件标头的信息，包括“发件人”、“收件人”和“主题”字段。在此对象中，每个标头是一个键。“发件人”和“收件人”字段由可包含多个值的数组表示。  对于事件，`commonHeaders` 字段中的任何邮件 ID 是 Amazon SES 随后在邮件对象的 `messageId` 字段中分配给邮件的邮件 ID。通知将包含原始电子邮件的邮件 ID。   | 

下面是包含原始电子邮件标头的 `mail` 对象的示例。当此通知类型未配置为包含原始电子邮件标头时，`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"
   }
}
```

## 退回邮件对象
<a name="bounce-object"></a>

包含有关退回邮件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  bounceType  |  退回邮件的类型 (由 SES 确定)。有关更多信息，请参阅 [退信类型](#bounce-types)。  | 
|  bounceSubType  |  退回邮件的子类型 (由 SES 确定)。有关更多信息，请参阅 [退信类型](#bounce-types)。  | 
|  bouncedRecipients  |  包含已退回的原始邮件收件人相关信息的列表。有关更多信息，请参阅 [退信的收件人](#bounced-recipients)。  | 
|  timestamp  |  发送退件的日期和时间（ ISO8601格式）。请注意，这是 ISP 发送通知的时间，而不是 SES 接收通知的时间。  | 
|  feedbackId  |  退信的唯一 ID。  | 

如果 SES 已能够联系远程 Message Transfer Authority（MTA），则以下字段也将存在。


| 字段名称 | 说明 | 
| --- | --- | 
|  remoteMtaIp  |  SES 尝试将电子邮件传输到的 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>

退回邮件通知可能与一个或多个收件人有关。`bouncedRecipients` 字段包含对象列表（与退回邮件通知相关的每个收件人均有一个对象）而且始终包含以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  emailAddress  |  收件人的电子邮件地址。如果 DSN 可用，这将是 DSN 中的 `Final-Recipient` 字段的值。  | 

（可选）如果 DSN 已附加到退信，则以下字段也可能存在。


| 字段名称 | 说明 | 
| --- | --- | 
|  action  |  DSN 中的 `Action` 字段的值。这表示 Reporting-MTA 因尝试将邮件传输至此收件人而需执行的操作。  | 
|  status  |  DSN 中的 `Status` 字段的值。这是每个收件人与传输无关的状态代码，用于指示邮件的传输状态。  | 
|  diagnosticCode  |  报告 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`*（软）*退回类型也可以包含几种退回子类型之一。

当您收到退回邮件类型为 `Transient`*（软）*的退回邮件通知时，如果解决了导致退回邮件的问题，您也许可在以后将邮件发送给该收件人。

当您收到退回类型为 `Permanent`*（硬）*的退回通知时，您将来不太可能能够向该收件人发送电子邮件。因此，您应该立即从邮件列表中删除其地址造成了退回邮件的收件人。

**注意**  
出现*软退信* (与临时问题相关的退回邮件，例如收件人的收件箱已满) 时，SES 尝试在一定时间之后传送该电子邮件。在该段时间结束时，如果 SES 仍无法传送电子邮件，则会停止尝试。  
SES 为硬退信以及停止尝试传送的软退信提供通知。如果您希望在每次发生软退信时收到通知，请[启用事件推送](monitor-sending-using-event-publishing-setup.md)并将其配置为出现送达延迟事件时发送通知。


| bounceType | bounceSubType | 说明 | 
| --- | --- | --- | 
|  Undetermined  |  Undetermined  |  收件人的电子邮件提供商发送退回邮件消息。退回邮件中未包含足够的消息供 SES 确定退回邮件的原因。退回邮件电子邮件（发送到电子邮件的 Return-Path 标头中地址）可能包含有关导致电子邮件退回的问题的其他信息。  | 
|  Permanent  |  General  |  收件人的电子邮件提供商发送了硬退信。  收到此类退回邮件通知时，您应立即从邮件列表中删除该收件人的电子邮件地址。将邮件发送到造成硬退回邮件的地址会对您作为发件人的声誉造成负面影响。如果您继续将电子邮件发送到造成硬退回邮件的地址，我们可能会暂停您发送更多电子邮件的功能。请参阅[使用 Amazon SES 账户级黑名单](sending-email-suppression-list.md)。   | 
|  Permanent  |  NoEmail  |  无法从退回邮件中检索收件人的电子邮件地址。  | 
|  Permanent  |  Suppressed  |  由于收件人的电子邮件地址近期有造成硬退信的历史记录，因此该地址已进入 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 执行的角度来看，如果您继续向被禁用或已退订的收件人发送邮件，您将拥有不遵守电子邮件发送最佳实践的声誉。   | 
|  Transient  |  General  |  收件人的电子邮件提供商发送一般退回邮件消息。如果解决了导致邮件退回邮件的问题，您也许可在以后将邮件发送给相同的收件人。  如果您将电子邮件发送到激活了自动回复规则（例如“外出”邮件） 的收件人，则可能收到这种类型的通知。即使回复中具有 `Bounce` 类型的通知，SES 在计算账户的邮件退回率时，不会计入自动回复。   | 
|  Transient  |  MailboxFull  |  由于收件人的收件箱已满，收件人的电子邮件提供商发送退回邮件。以后当收件人的邮箱有空闲空间时，您可能可以向相同的收件人发送电子邮件。  | 
|  Transient  |  MessageTooLarge  |  由于您发送的邮件太大，收件人的电子邮件提供商发送退回邮件。如果您减小邮件的大小，则也许能够向相同的收件人发送邮件。  | 
|  Transient  |  ContentRejected  |  由于您发送的内容包含收件人电子邮件提供商不允许的内容，该提供商发送了退回邮件。如果您更改邮件的内容，则也许能够向相同的收件人发送电子邮件。  | 
|  Transient  |  AttachmentRejected  |  由于邮件包含不可接受的附件，收件人的电子邮件提供商发送了退回邮件。例如，一些电子邮件提供商可能会拒绝具有特定文件类型附件的电子邮件，或者具有超大附件的电子邮件。如果您删除附件或更改其内容，则也许能够向相同的收件人发送电子邮件。  | 

## 投诉对象
<a name="complaint-object"></a>

包含有关投诉的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  complainedRecipients  |  包含提起投诉的收件人相关信息的列表。有关更多信息，请参阅 [已投诉的收件人](#complained-recipients)。  | 
|  timestamp  |  ISP 发送投诉通知时的日期和时间，采用 ISO8601 格式。此字段中的日期和时间可能与 SES 收到通知时的日期和时间不同。  | 
|  feedbackId  |  与投诉关联的唯一 ID。  | 
|  complaintSubType  | `complaintSubType` 字段的值可以为 null 或 `OnAccountSuppressionList`。如果该值为 `OnAccountSuppressionList`，则表示 SES 已接受邮件，但未尝试发送邮件，因为该地址已被加入[账户级黑名单](sending-email-suppression-list.md)。 | 

此外，如果反馈报告已附加到投诉，则以下字段也可能存在。


| 字段名称 | 说明 | 
| --- | --- | 
|  userAgent  |  反馈报告中的 `User-Agent` 字段的值。此值表示生成了报告的系统的名称和版本。  | 
|  complaintFeedbackType  |  从 ISP 收到的反馈报告中的 `Feedback-Type` 字段的值。此值包含反馈的类型。  | 
|  arrivalDate  |  反馈报告中`Arrival-Date`或`Received-Date`字段的值（ ISO8601 格式）。此字段可能不在报告中（因此也不在 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` 字段包含可能已提交投诉的收件人的列表。您应使用此信息来确定哪位收件人提交了投诉，然后立即从您的邮件列表中删除该收件人。

**重要**  
大多数人会从投诉通知中 ISPs 删除提交投诉的收件人的电子邮件地址。因此，此列表包含可能发送了投诉的收件人的信息，这基于原始邮件的收件人以及我们收到投诉的 ISP。SES 对原始邮件执行查找以确定此收件人列表。

此列表中的 JSON 对象包含以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  emailAddress  |  收件人的电子邮件地址。  | 

以下是已投诉收件人对象的示例。

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

**注意**  
由于此行为，如果限制为向每个收件人发送一封电子邮件（而不是向“密件抄送”行中的 30 个不同的电子邮件地址发送同一封电子邮件），您可以更加确定地知道哪个地址投诉了您的邮件。

#### 投诉类型
<a name="complaint-types"></a>

根据`complaintFeedbackType`互联网编号分配机构网站[，您可在由报告 ISP 分配的 ](http://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-2) 字段中看到以下投诉类型：
+ `abuse`：指示不请自来的电子邮件或某种其他类型的垃圾邮件。
+ `auth-failure`：电子邮件身份验证失败报告。
+ `fraud`：指示某种欺诈或网络钓鱼活动。
+ `not-spam`：指示提供报告的实体不将邮件视为垃圾邮件。这可用于更正被错误地标记或分类为垃圾邮件的邮件。
+ `other`：指示不适合其他已注册类型的任何其他反馈。
+ `virus`：报告在原始邮件中发现病毒。

## 送达对象
<a name="delivery-object"></a>

包含送达情况相关信息的 JSON 对象始终具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  timestamp  |  SES 将电子邮件发送到收件人的邮件服务器的时间（ ISO8601 格式）。  | 
|  processingTimeMillis  |  SES 接受来自发件人的请求与将邮件传递到收件人的邮件服务器之间的时间 (以毫秒为单位)。  | 
|  recipients  |  电子邮件送达通知适用的目标收件人的列表。  | 
|  smtpResponse  |  从 SES 接受电子邮件的远程 ISP 的 SMTP 响应消息。此消息因电子邮件、接收邮件服务器以及接收 ISP 而异。  | 
|  reportingMTA  |  发送邮件的 SES 邮件服务器的主机名。  | 
|  remoteMtaIp  |  SES 送达电子邮件的 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"
}
```

# Amazon SES 的 Amazon SNS 通知示例
<a name="notification-examples"></a>

以下各节提供了三种类型的通知的示例：
+ 有关退回邮件通知示例，请参阅 [Amazon SNS 退回邮件通知示例](#notification-examples-bounce)。
+ 有关投诉通知示例，请参阅 [Amazon SNS 投诉通知示例](#notification-examples-complaint)。
+ 有关送达通知示例，请参阅 [Amazon SNS 送达通知示例](#notification-examples-delivery)。

## Amazon SNS 退回邮件通知示例
<a name="notification-examples-bounce"></a>

本节包含退回邮件通知的示例，这些通知带有和不带由发送反馈的电子邮件接收方提供的传输状态通知（DSN）。

### 带 DSN 的退回邮件通知
<a name="notification-examples-bounce-with-dsn"></a>

下面是一个包含 DSN 和原始电子邮件标头的退回邮件通知的示例。当退回邮件通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
       "notificationType":"Bounce",
       "bounce":{
          "bounceType":"Permanent",
          "reportingMTA":"dns; email.example.com",
          "bouncedRecipients":[
             {
                "emailAddress":"jane@example.com",
                "status":"5.1.1",
                "action":"failed",
                "diagnosticCode":"smtp; 550 5.1.1 <jane@example.com>... User"
             }
          ],
          "bounceSubType":"General",
          "timestamp":"2016-01-27T14:59:38.237Z",
          "feedbackId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa068a-000000",
          "remoteMtaIp":"127.0.2.0"
       },
       "mail":{
          "timestamp":"2016-01-27T14:59:38.237Z",
          "source":"john@example.com",
          "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
          "sourceIp": "127.0.3.0",
          "sendingAccountId":"123456789012",
          "callerIdentity": "IAM_user_or_role_name",
          "messageId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa0680-000000",
          "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"],
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@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>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
           }
        }
    }
```

### 不带 DSN 的退回邮件通知
<a name="notification-examples-bounce-no-dsn"></a>

下面是一个包含原始电子邮件标头但不包含 DSN 的退回邮件通知的示例。当退回邮件通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Bounce",
      "bounce":{
         "bounceType":"Permanent",
         "bounceSubType": "General",
         "bouncedRecipients":[
            {
               "emailAddress":"jane@example.com"
            },
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"00000137860315fd-869464a4-8680-4114-98d3-716fe35851f9-000000",
         "remoteMtaIp":"127.0.2.0"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"00000137860315fd-34208509-5b74-41f3-95c5-22c1edc3c924-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ],
        "headersTruncated":false,
        "headers":[ 
         { 
            "name":"From",
            "value":"\"John Doe\" <john@example.com>"
         },
         { 
            "name":"To",
            "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@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>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
           ],
           "messageId":"custom-message-ID",
           "subject":"Hello"
         }
      }
  }
```

## Amazon SNS 投诉通知示例
<a name="notification-examples-complaint"></a>

本节包含投诉通知的示例，这些通知带有和不带由发送反馈的电子邮件接收方提供的反馈报告。

### 带反馈报告的投诉通知
<a name="notification-examples-complaint-with-feedback"></a>

下面是一个包含反馈报告和原始电子邮件标头的投诉通知的示例。当投诉通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Complaint",
      "complaint":{
         "userAgent":"AnyCompany Feedback Loop (V0.01)",
         "complainedRecipients":[
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "complaintFeedbackType":"abuse",
         "arrivalDate":"2016-01-27T14:59:38.237Z",
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ], 
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@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>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
           ],
           "messageId":"custom-message-ID",
           "subject":"Hello"
         }
      }
   }
```

### 不带反馈报告的投诉通知
<a name="notification-examples-complaint-no-feedback"></a>

下面是一个包含原始电子邮件标头但不包含反馈报告的投诉通知的示例。当投诉通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Complaint",
      "complaint":{
         "complainedRecipients":[
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"0000013786031775-fea503bc-7497-49e1-881b-a0379bb037d3-000000"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"0000013786031775-163e3910-53eb-4c8e-a04a-f29debf88a84-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ],
         "headersTruncated":false,
         "headers":[ 
          { 
            "name":"From",
            "value":"\"John Doe\" <john@example.com>"
          },
          { 
            "name":"To",
            "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@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>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
          }
       }
   }
```

## Amazon SNS 送达通知示例
<a name="notification-examples-delivery"></a>

下面是包含原始电子邮件标头的送达通知的示例。当送达通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Delivery",
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"0000014644fe5ef6-9a483358-9170-4cb4-a269-f5dcdf415321-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "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:58:45 +0000"
           }
          ],
          "commonHeaders":{ 
            "from":[ 
               "John Doe <john@example.com>"
            ],
            "date":"Wed, 27 Jan 2016 14:58:45 +0000",
            "to":[ 
               "Jane Doe <jane@example.com>"
            ],
            "messageId":"custom-message-ID",
            "subject":"Hello"
          }
       },
      "delivery":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "recipients":["jane@example.com"],
         "processingTimeMillis":546,     
         "reportingMTA":"a8-70.smtp-out.amazonses.com",
         "smtpResponse":"250 ok:  Message 64111812 accepted",
         "remoteMtaIp":"127.0.2.0"
      } 
   }
```

# 使用 Amazon SES 中的身份授权
<a name="identity-authorization-policies"></a>

身份授权策略通过以下方式定义个人已验证的身份如何使用 Amazon SES：指定允许或拒绝对身份执行哪些 SES API 操作，以及在哪些条件下对身份执行这些操作。

通过使用这些授权策略，您可以随时更改或撤销权限，从而维护您对身份的控制。您甚至可以授权其他用户通过其自有 SES 账户使用您拥有的身份（域或电子邮件地址）。

**Topics**
+ [Amazon SES 策略剖析](policy-anatomy.md)
+ [在 Amazon SES 中创建身份授权策略](identity-authorization-policies-creating.md)
+ [Amazon SES 中的身份策略示例](identity-authorization-policy-examples.md)
+ [在 Amazon SES 中管理您的身份授权策略](managing-policies.md)

# Amazon SES 策略剖析
<a name="policy-anatomy"></a>

策略遵循特定的结构，包含元素，并且必须满足特定的要求。

## 策略结构
<a name="identity-authorization-policy-structure"></a>

每个授权策略是一个附加到身份的 JSON 文档。每个策略包含以下部分：
+ 位于文档顶部的策略级信息。
+ 一个或多个单独的语句，每个语句描述一组权限。

*以下示例策略向 AWS 账户 ID *123456789012* 授予在 “*操作*” 部分中为已验证的域名 example.com 指定的权限。*

------
#### [ JSON ]

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeAccount",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:GetEmailIdentity",
        "ses:UpdateEmailIdentityPolicy",
        "ses:ListRecommendations",
        "ses:CreateEmailIdentityPolicy",
        "ses:DeleteEmailIdentity"
      ]
    }
  ]
}
```

------

您可以在[身份策略示例](identity-authorization-policy-examples.md)中找到更多授权策略的示例。

## 策略元素
<a name="identity-authorization-policy-elements"></a>

本部分介绍身份授权策略中包含的元素。首先，我们将介绍策略级元素，然后介绍仅适用于语句的元素。我们接下来将讨论如何在语句中添加条件。

有关元素语法的特定信息，请参阅《IAM 用户指南》**中的 [IAM 策略语言的语法](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-grammar.html)。

### 策略级信息
<a name="identity-authorization-policy-policy-wide"></a>

有两种策略级元素：`Id` 和 `Version`。下表提供了有关这些元素的信息。


****  

|  Name  |  说明  |  必填  |  有效值  | 
| --- | --- | --- | --- | 
|   `Id`   |  唯一标识策略。  |  否  |  任何字符串  | 
|   `Version`   |  指定策略访问语言的版本。  |  否  |  任何字符串。作为最佳实践，我们建议为此字段使用“2012-10-17”值。  | 

### 特定于策略的语句
<a name="identity-authorization-policy-statements"></a>

身份授权策略需要至少一个语句。每个语句可以包含下表中所述的元素。


****  

|  Name  |  说明  |  必填  |  有效值  | 
| --- | --- | --- | --- | 
|   `Sid`   |  唯一标识语句。  |  否  |  任何字符串。  | 
|   `Effect`   |  指定在评估期间您希望策略语句返回的结果。  |  是  |  “Allow”或“Deny”。  | 
|   `Resource`   |  指定将应用策略的身份。 （对于[发送授权](sending-authorization-identity-owner-tasks-policy.md)，这是身份所有者授权委托发件人使用的电子邮件地址或域。）  |  是  |  身份的 Amazon 资源名称（ARN）。  | 
|   `Principal`   |  在语句中指定接收权限的 AWS 账户、用户或 AWS 服务。  |  是  |  有效的 AWS 账户 ID、用户 ARN 或 AWS 服务。 AWS 账户 IDs 和用户 ARNs 是使用`"AWS"`（例如，`"AWS": ["123456789012"]`或`"AWS": ["arn:aws:iam::123456789012:root"]`）指定的。 AWS 服务名是使用`"Service"`（例如`"Service": ["cognito-idp.amazonaws.com"]`）指定的。 有关用户格式的示例 ARNs，请参阅[AWS 一般参考](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam.html)。  | 
|   `Action`   |  指定语句所适用的操作。  |  是  |  “ses：BatchGetMetricData”、“ses：CancelExportJob”、“ses：”、CreateDeliverabilityTestReport “ses：”、CreateEmailIdentityPolicy “ses：”、“ses：CreateExportJob”、“ses：”、DeleteEmailIdentity “ses：”、DeleteEmailIdentityPolicy “ses：”、GetDomainStatisticsReport “ses：”、GetEmailIdentity “ses：”、GetEmailIdentityPolicies “ses：”、GetExportJob “ses：”、“ses：ListExportJobs”、“ses：”、ListRecommendations “ses：”、PutEmailIdentityConfigurationSetAttributes “ses：”、PutEmailIdentityDkimAttributes “ses：”、PutEmailIdentityDkimSigningAttributes “ses：”、PutEmailIdentityFeedbackAttributes “ses：”、“ses：PutEmailIdentityMailFromAttributes”、“ses：TagResource”，“ses：UntagResource”，“ses：UpdateEmailIdentityPolicy” （[发送授权](sending-authorization-identity-owner-tasks-policy.md)操作：“ses：”、SendEmail “ses：”、SendRawEmail “ses：”、“ses：SendTemplatedEmail”、“ses：SendBulkTemplatedEmail”） 您可以指定一个或多个这些操作。  | 
|   `Condition`   |  指定任何有关权限的限制条件或详细信息。  |  否  |  请参阅下表中有关条件的信息。  | 

### Conditions
<a name="identity-authorization-policy-conditions"></a>

*条件*是语句中有关权限的任何限制。语句中指定条件的部分可能为各部分中最为详尽的部分。*密钥*是作为访问限制基础的具体特征，例如，请求的日期和时间。

您需使用条件和密钥一起明确说明限制。例如，如果需要限制委托发件人，使其不能在 2019 年 7 月 30 日后代表您对 Amazon SES 发出请求，则可以使用名为 `DateLessThan` 的条件。您使用的密钥名为 `aws:CurrentTime`，并将其值设置为 `2019-07-30T00:00:00Z`。

SES 仅实现以下 AWS范围的策略密钥：
+ `aws:CurrentTime`
+ `aws:EpochTime`
+ `aws:SecureTransport`
+ `aws:SourceIp`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserAgent`
+ `aws:VpcSourceIp`

有关这些键的更多信息，请参阅 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Condition)。

## 政策要求
<a name="identity-authorization-policy-restrictions"></a>

策略必须满足下列所有要求：
+ 每个策略必须包括至少一个语句。
+ 每个策略必须包括至少一个有效主体。
+ 每个策略必须指定一个资源，该资源必须是附加策略的身份的 ARN。
+ 身份所有者可以为每个唯一的身份关联最多 20 个策略。
+ 策略不得超过 4 千字节 (KB)。
+ 策略名称不得超过 64 个字符。此外，它们只能包含字母数字字符、连字符和下划线。

# 在 Amazon SES 中创建身份授权策略
<a name="identity-authorization-policies-creating"></a>

身份授权策略由声明组成，这些声明指定允许或拒绝对身份执行哪些 API 操作，以及在哪些条件下允许或拒绝执行这些 API 操作。

要授权使用您拥有的 Amazon SES 域或电子邮件地址身份，您必须创建授权策略，然后将该策略附加到身份。一个身份可以有零个、一个或多个策略。但是，一个策略只能与一个身份关联。

有关可在身份授权策略中使用的 API 操作的列表，请参阅[特定于策略的语句](policy-anatomy.md#identity-authorization-policy-statements)表中的 *Action*（操作）行。

您可以通过下列方法来创建身份授权策略：
+ **通过使用策略生成器** - 您可以在 SES 控制台中使用策略生成器创建简单的策略。除了允许或拒绝对 SES API 操作的权限外，您还可以使用条件限制操作。您还可以使用策略生成器快速创建策略的基本结构，然后通过编辑策略对其进行自定义。
+ **通过创建自定义策略** — 如果您想包含更高级的条件或使用 AWS 服务作为委托人，则可以使用 SES 控制台或 SES API 创建自定义策略并将其附加到身份。

**Topics**
+ [使用策略生成器](using-policy-generator.md)
+ [创建自定义策略](creating-custom-policy.md)

# 使用策略生成器
<a name="using-policy-generator"></a>

您可以使用策略生成器创建简单授权策略，步骤如下。

**使用策略生成器创建策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在**身份**屏幕上的**身份**容器中，选择您希望为之创建授权策略的已验证身份。

1. 在上一步中选择的已验证身份的详细信息屏幕中，选择 **Authorization**（授权）选项卡。

1. 在 **Authorization policies**（授权策略）窗格中，选择 **Create policy**（创建策略），并从下拉列表中选择 **Use policy generator**（使用策略生成器）。

1. 在 **Create statement**（创建语句）窗格中，选择 **Effect**（效果）字段中的 **Allow**（允许）。（如果要创建策略以限制此身份，请改为选择 **Deny**（拒绝）。）

1. **在**委托人**字段中，输入要获得您要为该*AWS 账户 身份授权的权限的 ID*、*IAM 用户 ARN* AWS 或服务，然后选择添加。**（如果您希望授权多个委托人，请为每个委托人重复此步骤。）

1. 在 **Actions**（操作）字段中，选中要为委托人授权的每种操作对应的复选框。

1. （可选）如果希望向权限添加限定语句，请展开 **Specify conditions**（指定条件）。

   1. 从 **Operator**（运算符）下拉菜单中选择运算符。

   1. 从 **Key**（类型）下拉菜单中选择类型。

   1. 根据您选择的键类型，在 **Value**（值）字段中输入其值。（如果想添加更多条件，请选择 **Add new condition**（添加新条件），然后为每个额外的步骤重复此步骤。）

1. 选择 **Save statement**（保存语句）。

1. （可选）如果希望向策略中添加更多语句，请展开 **Create another statement**（创建另一个语句），并重复步骤 6 - 10。

1. 选择**下一步**，则**自定义策略**屏幕中，**编辑策略详细信息**容器将具有您可以自己更改或自定义策略的**名称**和**策略文档**的字段。

1. 选择 **Next**（下一步），在 **Review and apply**（查看并应用）屏幕上，**Overview**（概述）容器将显示您要授权的已验证身份以及此策略的名称。在 **Policy document**（策略文档）窗格将是您刚刚写的实际政策以及您添加的任何条件——查看策略，如果看起来正确，请选择 **Apply policy**（申请策略）。（如果您需要更改或更正某些内容，请选择 **Previous**（上一页）并在 **Edit policy details**（编辑策略详细信息）容器中操作。）

# 创建自定义策略
<a name="creating-custom-policy"></a>

如果要创建自定义策略并将其附加到身份，您有以下选择：
+ **使用 Amazon SES API** – 在文本编辑器中创建策略，然后使用 [Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)中所述的 `PutIdentityPolicy` API 将策略附加到身份。
+ **使用 Amazon SES 控制台** – 在文本编辑器中创建策略，并在 Amazon SES 控制台中将其粘贴到自定义策略编辑器，将策略附加到身份。以下步骤介绍这种方法。



**使用自定义策略编辑器创建自定义策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在**身份**屏幕上的**身份**容器中，选择您希望为之创建授权策略的已验证身份。

1. 在上一步中选择的已验证身份的详细信息屏幕中，选择 **Authorization**（授权）选项卡。

1. 在 **Authorization policies**（授权策略）窗格中，选择 **Create policy**（创建策略），并从下拉列表中选择 **Create custom policy**（创建自定义策略）。

1. 在 **Policy document**（策略文档）窗格中，键入或粘贴 JSON 格式的策略文本。您还可以使用策略生成器快速创建策略的基本结构，然后在此处对其进行自定义。

1. 选择**应用策略**。（如果您需要修改自定义策略，只需在 **Authorization**（授权）选项卡，选择 **Edit**（编辑），然后在 **Policy document**（策略文档）窗格中更改，然后是窗格 **Save changes**（保存更改）。

# Amazon SES 中的身份策略示例
<a name="identity-authorization-policy-examples"></a>

您可以使用身份授权指定允许或拒绝对身份执行 API 操作的精细条件。

**Topics**
+ [指定主体](#identity-authorization-policy-example-delegate-user)
+ [限制操作](#sending-authorization-policy-example-restricting-action)
+ [使用多个语句](#identity-authorization-policy-example-multiple-statements)

## 指定主体
<a name="identity-authorization-policy-example-delegate-user"></a>

*委托人*（即您向其授予权限的实体）可以是 AWS 账户、 AWS Identity and Access Management (IAM) 用户或属于同一账户的 AWS 服务。

*以下示例显示了一个简单的策略，该策略允许 AWS ID *123456789012 控制同样归123456789012* 拥有的经过验证的身份 e *xample.com*。 AWS 账户 *

------
#### [ JSON ]

****  

```
{
  "Id":"SampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeMarketer",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:DeleteEmailIdentity",
        "ses:PutEmailIdentityDkimSigningAttributes"
      ]
    }
  ]
}
```

------

以下示例策略向两个用户授予控制已验证的身份 *example.com* 的权限。用户通过其 Amazon 资源名称（ARN）指定。

------
#### [ JSON ]

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeIAMUser",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::123456789012:user/John",
          "arn:aws:iam::123456789012:user/Jane"
        ]
      },
      "Action":[
        "ses:DeleteEmailIdentity",
        "ses:PutEmailIdentityDkimSigningAttributes"
      ]
    }
  ]
}
```

------

## 限制操作
<a name="sending-authorization-policy-example-restricting-action"></a>

根据您要授权的控制级别，可以在身份授权策略中指定多种操作：

```
 1. "BatchGetMetricData",
 2. "ListRecommendations",
 3. "CreateDeliverabilityTestReport",
 4. "CreateEmailIdentityPolicy",
 5. "DeleteEmailIdentity",
 6. "DeleteEmailIdentityPolicy",
 7. "GetDomainStatisticsReport",
 8. "GetEmailIdentity",
 9. "GetEmailIdentityPolicies",
10. "PutEmailIdentityConfigurationSetAttributes",
11. "PutEmailIdentityDkimAttributes",
12. "PutEmailIdentityDkimSigningAttributes",
13. "PutEmailIdentityFeedbackAttributes",
14. "PutEmailIdentityMailFromAttributes",
15. "TagResource",
16. "UntagResource",
17. "UpdateEmailIdentityPolicy"
```

身份授权策略还使您能够将主体限制为只能执行其中一项操作。

------
#### [ JSON ]

****  

```
{
    "Id": "ExamplePolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ControlAction",
            "Effect": "Allow",
            "Resource": "arn:aws:ses:us-east-1:123456789012:identity/example.com",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            },
            "Action": [
                "ses:PutEmailIdentityMailFromAttributes"
            ]
        }
    ]
}
```

------

## 使用多个语句
<a name="identity-authorization-policy-example-multiple-statements"></a>

身份授权策略可以包含多个语句。以下示例策略包含两个语句。第一个语句拒绝两个用户在同一个账户 `123456789012` 内通过 *sender@example.com* 访问 `getemailidentity`。第二个语句拒绝主体 *Jack* 在同一个账户 `123456789012` 内访问 `UpdateEmailIdentityPolicy`。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"DenyGet",
      "Effect":"Deny",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::123456789012:user/John", 
          "arn:aws:iam::123456789012:user/Jane"
        ]
      },
      "Action":[
        "ses:GetEmailIdentity"
      ]
    },
    {
      "Sid":"DenyUpdate",
      "Effect":"Deny",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "Principal":{
        "AWS":"arn:aws:iam::123456789012:user/Jack"
      },
      "Action":[
        "ses:UpdateEmailIdentityPolicy"
      ]
    }
  ]
}
```

------

# 在 Amazon SES 中管理您的身份授权策略
<a name="managing-policies"></a>

除了创建策略和将策略附加到身份之外，您还可以按照以下各部分的说明编辑、删除、列出和检索身份的策略。

## 使用 Amazon SES 控制台管理策略
<a name="managing-policies-console"></a>

管理 Amazon SES 策略需要使用 Amazon SES 控制台查看、编辑或删除附加到身份的策略。

**使用 Amazon SES 控制台管理策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在左侧导航窗格中，选择**已验证身份**。

1. 在身份列表中，选择您要管理的身份。

1. 在身份详细信息页面上，导航到 **Authorization**（授权）选项卡。在这里，您可以找到附上此身份的所有策略的列表。

1. 通过选中要管理的策略复选框来选择该策略。

1. 根据所需的管理任务，选择相应的按钮，如下所示：

   1. 要查看策略，请选择 **View policy**（查看策略）。如果需要其副本，请选择 **Copy**（复制）按钮，它将被复制到剪贴板。

   1. 要编辑策略，请选择 **Edit**（编辑）。在 **Policy document**（策略文档）中，编辑策略，然后选择 **Save changes**（保存更改）。
**注意**  
要撤销权限，您可以编辑策略或删除它。

   1. 要移除策略，请选择 **Delete**（删除）。
**重要**  
删除策略是永久性操作。我们建议您通过复制策略并粘贴到文本文件中来备份策略，然后再将其删除。

## 使用 Amazon SES API 管理策略
<a name="managing-policies-api"></a>

管理 Amazon SES 策略需要使用 Amazon SES API 查看、编辑或删除附加到身份的策略。

**使用 Amazon SES API 列出和查看策略**
+ 您可以使用 [ListIdentityPolicies API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html)列出附加到身份的策略。您也可以使用 [GetIdentityPoliciesAPI 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicies.html)自行检索策略。

**要使用 Amazon SES API 来编辑策略**
+ 您可以使用 [PutIdentityPolicy API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)编辑附加到身份的策略。

**要使用 Amazon SES API 删除策略**
+ 您可以使用 [DeleteIdentityPolicy API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html)删除附加到身份的策略。

# 使用 Amazon SES 的发送授权
<a name="sending-authorization"></a>

您可以配置 Amazon SES 来授权其他用户使用其自有 Amazon SES 账户从您拥有的身份（域或电子邮件地址）发送电子邮件。*发送授权*功能可用于维护您对身份的控制，以便随时更改或撤销权限。例如，如果您是业务负责人，您可以使用发送授权来允许第三方 (例如电子邮件营销公司) 从您的域发送电子邮件。

本章介绍了发送授权的细节，该授权取代了传统的跨账户通知功能。您应该首先了解使用授权策略进行基于身份的授权的基础知识，如[使用 Amazon SES 中的身份授权](identity-authorization-policies.md)中所述，其中介绍了授权策略剖析以及如何管理策略等重要主题。

## 跨账户通知旧式支持
<a name="sending-authorization-cross-account-sunsetting"></a>

与委托发件人发送的电子邮件（该电子邮件由身份拥有者授权委托发件人从其经验证的身份之一发送）相关联的退回邮件、投诉和送达的反馈通知，传统上是使用跨账户通知配置的，其中，委托发件人将主题与他们不拥有的身份（即跨账户）相关联。但是，跨账户通知已被使用配置集以及与委托发送相关联的经验证身份所取代，在这种情况下，委托发件人已获得身份拥有者的授权，可以使用其经验证的身份之一发送电子邮件。这种新方法允许灵活地通过以下两种结构配置退回邮件、投诉、送达和其它事件通知，具体取决于您是委托发件人还是经验证身份的拥有者：
+ **Configuration sets**（配置集）— 委托发件人可以在自己的配置集中设置事件发布，他可以在使用他不拥有但已获得身份所有者通过授权策略授权发送电子邮件时指定该配置集。事件发布允许向亚马逊、亚马逊 Data Firehose、Amazon Pinpoint 和亚马逊 SNS 发布退信 CloudWatch、投诉、送达和其他事件通知。请参阅[创建事件目标](event-destinations-manage.md)。
+ **Verified identities**（验证身份）— 除了让身份所有者授权委托发件人使用其经过验证的身份之一发送电子邮件之外，他还可以应委托发件人的请求，对共享身份配置反馈通知，以使用委托发件人拥有的 SNS 主题。只有委托发件人才会收到这些通知，因为他们拥有 SNS 主题。请参阅第 14 步以了解如何在授权策略程序中[配置“您不拥有的 SNS 主题”](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)。

**注意**  
为了兼容性，您账户中当前使用的旧版跨账户通知支持跨账户通知。此支持仅限于能够修改和使用您在 Amazon SES 经典控制台中创建的任何当前跨账户；但是，您无法再创建*新的*跨账户通知。要在 Amazon SES 新控制台中创建新控制台，请使用新的委托发送方法与配置集一起使用[事件发布](event-destinations-manage.md)，或使用经过验证的身份[使用自己的 SNS 主题进行配置](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)。

**Topics**
+ [跨账户通知旧式支持](#sending-authorization-cross-account-sunsetting)
+ [Amazon SES 发送授权概览](sending-authorization-overview.md)
+ [Amazon SES 发送授权的身份拥有者任务](sending-authorization-identity-owner-tasks.md)
+ [Amazon SES 发送授权的委托发件人任务](sending-authorization-delegate-sender-tasks.md)

# Amazon SES 发送授权概览
<a name="sending-authorization-overview"></a>

本主题概述了发送授权流程，然后介绍了 Amazon SES 的电子邮件发送功能（例如发送配额和通知）如何与发送授权结合使用。

本部分使用了以下术语：
+ **身份** – Amazon SES 用户用来发送电子邮件的地址或域。
+ **身份拥有者** – 已按照[已验证的身份](verify-addresses-and-domains.md)中所述过程验证了电子邮件地址或域所有权的 Amazon SES 用户。
+ **委托发件人** — 通过授权策略授权代表身份所有者发送电子邮件的 AWS 账户、 AWS Identity and Access Management (IAM) 用户或 AWS 服务。
+ **发送授权策略** - 一种附加到身份的文档，用于指定哪些人、在何种条件下可以使用该身份发送。
+ **Amazon 资源名称 (ARN)** — 一种在所有 AWS 服务中唯一标识 AWS 资源的标准化方法。对于发送授权而言，资源是身份拥有者希望委托发件人使用的身份。ARN 的某个示例为 *arn:aws:ses:us-east-1:123456789012:identity/example.com*。

## 发送授权的流程
<a name="sending-authorization-process"></a>

发送授权以发送授权策略为基础。如果要允许委托发件人代表您发送邮件，您可使用 Amazon SES 控制台或 Amazon SES API 创建发送授权策略，并将该策略与您的身份相关联。当委托发件人尝试通过 Amazon SES 代表您发送电子邮件时，委托发件人将在请求中或在电子邮件标头中传递您的身份的 ARN。

当 Amazon SES 收到发送电子邮件的请求时，它会检查您的身份策略（如果有）以确定您是否已授权该委托发件人代表该身份发送邮件。如果委托发件人已获得授权，Amazon SES 会接受电子邮件；否则，Amazon SES 将返回错误消息。

下图显示了发送授权概念之间的概述关系：

![\[发送授权概览\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/sending_authorization_overview.png)


发送授权过程包括以下步骤：

1. 身份所有者选择经过验证的身份供委托发件人使用。（如果您没有验证身份，请参阅[已验证的身份](verify-addresses-and-domains.md)）。
**注意**  
您为委托发件人选择的经过验证的身份不能为其分配[原定设置的配置集](managing-configuration-sets.md#default-config-sets)。

1. 委托发送者让身份所有者知道他们要使用哪个 AWS 账户 ID 或 IAM 用户 ARN 进行发送。

1. 如果身份拥有者同意允许委托发送者从身份拥有者的一个账户发送，则身份拥有者创建发送授权策略，并使用 Amazon SES 控制台或 Amazon SES API 将该策略附加到所选身份。

1. 身份拥有者将身份的 ARN 提供给委托发件人，以便委托发件人在发送电子邮件时向 Amazon SES 提供 ARN。

1. 代理发送者可以通过在代理发送期间指定的配置集中启用的[事件发布](monitor-using-event-publishing.md)来设置退回和投诉通知。身份所有者还可以为退回邮件和投诉事件设置电子邮件反馈通知，以便发送到委托发件人的 Amazon SNS 主题。
**注意**  
如果身份拥有者禁用发送事件通知，则委托发件人必须设置事件发布，以将退回邮件和投诉事件发送到 Amazon SNS 主题或 Firehose 流。发件人还必须对他们发送的每封电子邮件应用包含事件发布规则的配置集。如果身份拥有者和委托发件人都未设置针对退回邮件和投诉事件发送通知的方法，则 Amazon SES 将自动通过电子邮件将事件通知发送到电子邮件的 Return-Path (退回路径) 字段中的地址（或者 Source (来源) 字段中的地址，如果未指定退回路径地址），即使身份拥有者禁用了电子邮件反馈转发也是如此。

1. 委托发件人通过在请求中或在电子邮件标头中传递身份拥有者的身份的 ARN，尝试代表身份拥有者经由 Amazon SES 发送电子邮件。委托发件人可以使用 Amazon SES SMTP 接口或 Amazon SES API 发送电子邮件。收到请求后，Amazon SES 会检查附加到身份的所有策略，如果委托发件人有使用指定“发件人”地址和“退回路径”地址的授权，则接受电子邮件；否则，Amazon SES 会返回错误，并且不接受该邮件。
**重要**  
必须先将委托发件人的 AWS 帐户从沙箱中删除，然后才能将其用于向未经验证的地址发送电子邮件。

1. 如果身份所有者需要取消对委托发件人的授权，则身份所有者将编辑发送授权策略或完全删除此策略。身份拥有者可通过使用 Amazon SES 控制台或 Amazon SES API 来执行上述任一操作。

有关身份拥有者或委托发件人如何执行这些任务的信息，请分别参阅[身份拥有者任务](sending-authorization-identity-owner-tasks.md)或[委托发件人任务](sending-authorization-delegate-sender-tasks.md)。

## 电子邮件发送功能的属性
<a name="sending-authorization-attribution"></a>

对于各种 Amazon SES 电子邮件发送功能（例如每日发送配额、退回邮件和投诉、DKIM 签名、反馈转发等），了解委托发件人和身份拥有者的角色很重要。属性如下：
+ **发送配额** – 使用身份拥有者的身份发送的电子邮件会计入委托发件人的配额。
+ **退回邮件和投诉** – 退回邮件和投诉事件记录在委托发件人的 Amazon SES 账户中，因此可能影响委托发件人的声誉。
+ **DKIM 签名** – 如果身份拥有者已为某个身份启用 Easy DKIM 签名，发自该身份的所有电子邮件将进行 DKIM 签名，包括由委托发件人发送的电子邮件。只有身份所有者能够控制电子邮件是否进行 DKIM 签名。
+ **通知** – 身份拥有者和委托发件人都可针对退回邮件和投诉设置通知。电子邮件身份所有者还可以启用电子邮件反馈转发。有关设置通知的信息，请参阅[监控您的 Amazon SES 发送活动](monitor-sending-activity.md)。
+ **验证** – 身份拥有者有责任执行[已验证的身份](verify-addresses-and-domains.md)中的以下过程，以验证其拥有授权委托发件人使用的电子邮件地址和域。委托发件人不需要验证专用于发送授权的任何电子邮件地址或域。
**重要**  
必须先将委托发件人的 AWS 帐户从沙箱中删除，然后才能将其用于向未经验证的地址发送电子邮件。
+ **AWS 区域**-委托发件人必须从验证身份所有者身份的 AWS 地区发送电子邮件。给委托发件人授予权限的发送授权策略必须附加到该区域中的身份。
+ **计费** – 从委托发件人发送的所有邮件，包括委托发件人使用身份所有者的地址发送的电子邮件，将计入委托发件人的账户中。

# Amazon SES 发送授权的身份拥有者任务
<a name="sending-authorization-identity-owner-tasks"></a>

本部分介绍身份所有者在配置发送授权时必须执行的步骤。

**Topics**
+ [为 Amazon SES 发送授权验证身份](sending-authorization-identity-owner-tasks-verification.md)
+ [设置 Amazon SES 发送授权的身份拥有者通知](sending-authorization-identity-owner-tasks-notifications.md)
+ [获取委托发件人的信息，用于 Amazon SES 发送授权](sending-authorization-identity-owner-tasks-information.md)
+ [在 Amazon SES 中创建发送授权策略](sending-authorization-identity-owner-tasks-policy.md)
+ [发送策略示例](sending-authorization-policy-examples.md)
+ [向委托发件人提供有关 Amazon SES 发送授权的身份信息](sending-authorization-identity-owner-tasks-identity.md)

# 为 Amazon SES 发送授权验证身份
<a name="sending-authorization-identity-owner-tasks-verification"></a>

配置发送授权的第一步是证明您拥有委托发件人将用于发送电子邮件的电子邮件地址或域。验证过程如[已验证的身份](verify-addresses-and-domains.md)中所述。

您可以通过在的 “已验证身份” 部分或使用 `GetIdentityVerificationAttributes` API 操作检查其状态来确认电子邮件地址[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)或域名是否已通过验证。

您必须先提交一份请求，要求将您的账户移出 Amazon SES 沙盒，之后您或委托发件人才能向未经验证的电子邮件地址发送电子邮件。有关更多信息，请参阅 [请求生产访问权限（从 Amazon SES 沙盒中移出）](request-production-access.md)。

**重要**  
必须先将 AWS 账户 委托发件人从沙箱中移除，然后才能将其用于向未经验证的地址发送电子邮件或从未经验证的地址发送电子邮件。
如果您的账户位于沙盒中，则无法向账户中未经验证的电子邮件地址发送电子邮件，即使这些域或电子邮件地址已在身份账户中经过验证也是如此。

# 设置 Amazon SES 发送授权的身份拥有者通知
<a name="sending-authorization-identity-owner-tasks-notifications"></a>

如果您授权委托发件人代表您发送电子邮件，则 Amazon SES 会将这些电子邮件产生的退回邮件或投诉计入委托发件人的而不是您的退回邮件和投诉限制。但是，如果您的 IP 地址因代理发件人发送的邮件而出现在第三方反垃圾邮件、基于 DNS 的黑洞列表 (DNSBLs) 中，则您的身份信誉可能会受到损害。为此，如果您是身份所有者，应为您的身份（包括为委托发送授权的身份）设置电子邮件反馈转发。有关更多信息，请参阅 [通过电子邮件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。

委托发件人可以且应当针对您已授权其使用的身份设置其自己的退回邮件和投诉通知。他们还可以设置[事件发布](monitor-using-event-publishing.md)来将退回邮件和投诉事件发布到 Amazon SNS 主题或 Firehose 流中。

如果身份拥有者和委托发件人都未设置针对退回邮件和投诉事件发送通知的方法，或者发件人未应用使用事件发布规则的配置集，则 Amazon SES 将自动通过电子邮件将事件通知发送到电子邮件的 Return-Path (退回路径) 字段中的地址（或者 Source (来源) 字段中的地址，如果未指定退回路径地址），即使禁用了电子邮件反馈转发也是如此。下图阐述了此过程。

![\[Flowchart showing notification paths for bounce/complaint events based on various settings.\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/images/feedback_forwarding.png)


# 获取委托发件人的信息，用于 Amazon SES 发送授权
<a name="sending-authorization-identity-owner-tasks-information"></a>

您的发送授权策略必须指定至少一个*主体*，该主体是您授予访问权限的代理发件人的实体，以便他们可以代表您的一个已验证身份发送。对于 Amazon SES 发送授权策略，委托人可以是您的委托发件人 AWS 账户或 AWS Identity and Access Management (IAM) 用户 ARN，也可以是 AWS 服务。

一个简单的方法是，*主体*（代理发件人）是被授权人，而您（身份所有者）是授权策略中的授权人，您授予他们*允许*从您拥有的*资源*（已验证身份）发送电子邮件、原始电子邮件、模板电子邮件或批量模板电子邮件的任意组合的权限。

如果需要进行精细控制，请让委托发件人设置一个 IAM 用户，从而只允许一个委托发件人代表您发送电子邮件，而不是委托发件人的 AWS 账户中的任何用户。委托发件人可在《IAM 用户指南》**的[在您的 AWS 账户中创建 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html)中找到有关设置 IAM 用户的信息。

向您的委托发件人询问 AWS 账户 ID 或 IAM 用户的亚马逊资源名称 (ARN)，以便您可以将其包含在发送授权策略中。您可以推荐委托发件人参考 [向身份拥有者提供信息](sending-authorization-delegate-sender-tasks-information.md) 中提供的说明，以便查找这些信息。如果委托发送者是 AWS 服务，请参阅该服务的文档以确定服务名称。

以下示例策略说明了身份所有者为授权委托发件人从身份所有者的资源发送而创建的策略中所需的基本元素。身份所有者将进入已验证身份工作流程，然后在授权下，使用策略生成器以最简单的形式创建以下基本策略，允许委托发件人代表身份所有者拥有的资源发送：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSESSendEmail",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": [
          "arn:aws:ses:us-east-1:444455556666:identity/bob@example.com"
      ],
      "Condition": {}
    }
  ]
}
```

------

对于上述政策，以下图例解释了关键元素以及谁拥有这些要素：
+ **Principal**（主体）：此字段使用委托发件人的 IAM 用户 ARN 填充。
+ **Action**（操作）：此字段填充了两个 SES 操作（`SendEmail` & `SendRawEmail`）身份所有者允许委托发件人使用身份所有者的资源执行操作。
+ **Resource**（资源）：此字段填充了身份所有者已验证的资源，他们授权委托发件人发送该资源。

# 在 Amazon SES 中创建发送授权策略
<a name="sending-authorization-identity-owner-tasks-policy"></a>

与在 Amazon SES 中创建任何授权策略类似，如[创建身份授权策略](identity-authorization-policies-creating.md)中所述，要授权某个委托发件人使用您拥有的电子邮件地址或域（*身份*）发送电子邮件，您可以创建指定了 SES 发送 API 操作的策略，然后将该策略附加到身份。

有关可在发送授权策略中指定的 API 操作列表，请参阅[特定于策略的语句](policy-anatomy.md#identity-authorization-policy-statements)表中的*操作*行。

您可以使用策略生成器或通过创建自定义策略来创建发送授权策略。两种方法都提供了创建发送授权策略的特定过程。

**注意**  
您附加到电子邮件地址标识的发送授权策略优先于附加到其相应域标识的策略。例如，如果您为 *example.com* 创建一个禁止委托发件人的策略，并且为 *sender@example.com* 创建一个允许委托发件人的策略，那么委托发件人可以从 *sender@example.com* 发送电子邮件，但是不能从 *example.com* 域上的任何其他地址发送电子邮件。
如果您为 *example.com* 创建一个允许委托发件人的策略，并且为 *sender@example.com* 创建一个禁止委托发件人的策略，则委托发件人可以从 *example.com* 域上的任何地址发送电子邮件，但 *sender@example.com* 除外。
如果您不熟悉 SES 授权策略的结构，请参阅 [策略剖析](policy-anatomy.md)。
如果您正在授权的身份在次要区域中复制，作为[全局端点](global-endpoints.md)功能的一部分，您需要在主要区域和次要区域的身份上创建发送授权策略，以便委托发送者有权在两个区域中使用此身份进行发送。

## 使用策略生成器创建发送授权策略
<a name="sending-authorization-identity-owner-tasks-identity-policy-generator"></a>

您可以使用策略生成器创建发送授权策略，步骤如下。

**使用策略生成器创建发送授权策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在 **Verified identities**（已验证身份）屏幕上的 **Identities**（身份）容器中，选择您希望授权代理发件人代表您发送的已验证身份。

1. 选择已验证身份的**授权**选项卡。

1. 在 **Authorization policies**（授权策略）窗格中，选择 **Create policy**（创建策略），并从下拉列表中选择 **Use policy generator**（使用策略生成器）。

1. 在 **Create statement**（创建语句）窗格中，选择 **Effect**（效果）字段中的 **Allow**（允许）。（如果要创建策略以限制委派发件人，请改为选择 **Deny**拒绝。）

1. 在 **Principals**（主体）字段中，输入您的代理发件人与您共享的 *AWS 账户 ID* 或 *IAM 用户 ARN*，以授权他们代表您的账户为此身份发送电子邮件，然后选择 **Add**（添加）。（如果您希望授权多个委托发件人，请为每个代表发件人重复此步骤。）

1. 在 **Actions**（操作）字段中，选中要为委托发件人授权的每种发送类型的复选框。

1. （可选）如果希望向代理发件人权限添加限定语句，请展开 **Specify conditions**（指定条件）。

   1. 从 **Operator**（运算符）下拉菜单中选择运算符。

   1. 从 **Key**（类型）下拉菜单中选择类型。

   1. 根据您选择的键类型，在 **Value**（值）字段中输入其值。（如果想添加更多条件，请选择 **Add new condition**（添加新条件），然后为每个额外的步骤重复此步骤。）

1. 选择 **Save statement**（保存语句）。

1. （可选）如果希望向策略中添加更多语句，请展开 **Create another statement**（创建另一个语句），并重复步骤 6 - 10。

1. 选择**下一步**，则**自定义策略**屏幕中，**编辑策略详细信息**容器将具有您可以自己更改或自定义策略的**名称**和**策略文档**的字段。

1. 选择 **Next**（下一步），在 **Review and apply**（查看并应用）屏幕上，**Overview**（概述）容器将显示您为代理发件人授权的已验证身份以及此策略的名称。在 **Policy document**（策略文档）窗格将是您刚刚写的实际政策以及您添加的任何条件——查看策略，如果看起来正确，请选择 **Apply policy**（申请策略）。（如果您需要更改或更正某些内容，请选择 **Previous**（上一页）并在 **Edit policy details**（编辑策略详细信息）容器中操作。） 您刚刚创建的策略将允许您的代理发件人代表您发送邮件。

1. <a name="configure-sns-topic-you-dont-own"></a>（可选）如果您的委托发件人还希望使用他们拥有的 SNS 主题、在他们收到退回或投诉时接收反馈通知，或者在发送电子邮件时，您需要在此经过验证的身份中配置他们的 SNS 主题。（您的委托发件人需要与您分享他们的 SNS 主题 ARN。） 选择 **Notifications**（通知）选项卡，然后选择 **Feedback notifications**（反馈通知）容器中的 **Edit**（编辑）。

   1. 在 **Configure SNS topics**（配置 SNS 主题）窗格的任何反馈字段(“退回”、“投诉”或“发送”)中，选择 **SNS topic you don’t own**（您不拥有的 SNS 主题），并输入您的代理发件人拥有并与您共享的 **SNS topic ARN**（SNS 主题 ARN）。（只有您的委托发件人才会收到这些通知，因为他们拥有 SNS 主题——您作为身份所有者不会。）

   1. （可选）如果您希望主题通知包括原始电子邮件中的标头，请选中 **Include original email headers**（包括原始电子邮件标头）框直接位于每种反馈类型的 SNS 主题名称下方。此选项仅在您已将 Amazon SNS 主题分配到关联的通知类型时可用。有关原始电子邮件标头的内容的信息，请参阅 [通知内容](notification-contents.md)中的 `mail` 对象。

   1. 选择 **Save changes**（保存更改）。您对通知设置所做的更改可能需要几分钟才能生效。

   1. （可选）由于您的委托发件人将收到有关退回和投诉的 Amazon SNS 主题通知，因此如果您不想收到有关此身份发送的反馈，则可以完全禁用电子邮件通知。要禁用退回和投诉的电子邮件反馈，请在 **Notifications**（通知）选项卡下的 **Email Feedback Forwarding**（电子邮件反馈转发）容器中，选择 **Edit**（编辑），取消选中 **Enabled**（已启用）框，然后选择 **Save changes**（保存更改）。现在，交付状态通知只会发送到委托发件人所拥有的 SNS 主题。

## 创建自定义发送授权策略
<a name="sending-authorization-identity-owner-tasks-identity-policy-custom"></a>

如果要创建自定义发送授权策略并将其附加到身份，您有以下选择：
+ **使用 Amazon SES API** – 在文本编辑器中创建策略，然后使用 [Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)中所述的 `PutIdentityPolicy` API 将策略附加到身份。
+ **使用 Amazon SES 控制台** – 在文本编辑器中创建策略，并在 Amazon SES 控制台中将其粘贴到自定义策略编辑器，将策略附加到身份。以下步骤介绍这种方法。



**使用自定义策略编辑器创建自定义发送授权策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在 **Verified identities**（已验证身份）屏幕上的 **Identities**（身份）容器中，选择您希望授权代理发件人代表您发送的已验证身份。

1. 在上一步中选择的已验证身份的详细信息屏幕中，选择 **Authorization**（授权）选项卡。

1. 在 **Authorization policies**（授权策略）窗格中，选择 **Create policy**（创建策略），并从下拉列表中选择 **Create custom policy**（创建自定义策略）。

1. 在 **Policy document**（策略文档）窗格中，键入或粘贴 JSON 格式的策略文本。您还可以使用策略生成器快速创建策略的基本结构，然后在此处对其进行自定义。

1. 选择**应用策略**。（如果您需要修改自定义策略，只需在 **Authorization**（授权）选项卡，选择 **Edit**（编辑），然后在 **Policy document**（策略文档）窗格中更改，然后是窗格 **Save changes**（保存更改）。

1. （可选）如果您的委托发件人还希望使用他们拥有的 SNS 主题、在他们收到退回或投诉时接收反馈通知，或者在发送电子邮件时，您需要在此经过验证的身份中配置他们的 SNS 主题。（您的委托发件人需要与您分享他们的 SNS 主题 ARN。） 选择 **Notifications**（通知）选项卡，然后选择 **Feedback notifications**（反馈通知）容器中的 **Edit**（编辑）。

   1. 在 **Configure SNS topics**（配置 SNS 主题）窗格的任何反馈字段(“退回”、“投诉”或“发送”)中，选择 **SNS topic you don’t own**（您不拥有的 SNS 主题），并输入您的代理发件人拥有并与您共享的 **SNS topic ARN**（SNS 主题 ARN）。（只有您的委托发件人才会收到这些通知，因为他们拥有 SNS 主题——您作为身份所有者不会。）

   1. （可选）如果您希望主题通知包括原始电子邮件中的标头，请选中 **Include original email headers**（包括原始电子邮件标头）框直接位于每种反馈类型的 SNS 主题名称下方。此选项仅在您已将 Amazon SNS 主题分配到关联的通知类型时可用。有关原始电子邮件标头的内容的信息，请参阅 [通知内容](notification-contents.md)中的 `mail` 对象。

   1. 选择 **Save changes**（保存更改）。您对通知设置所做的更改可能需要几分钟才能生效。

   1. （可选）由于您的委托发件人将收到有关退回和投诉的 Amazon SNS 主题通知，因此如果您不想收到有关此身份发送的反馈，则可以完全禁用电子邮件通知。要禁用退回和投诉的电子邮件反馈，请在 **Notifications**（通知）选项卡下的 **Email Feedback Forwarding**（电子邮件反馈转发）容器中，选择 **Edit**（编辑），取消选中 **Enabled**（已启用）框，然后选择 **Save changes**（保存更改）。现在，交付状态通知只会发送到委托发件人所拥有的 SNS 主题。

# 发送策略示例
<a name="sending-authorization-policy-examples"></a>

您可以使用发送授权指定允许委托发件人代表您发送电子邮件的精细条件。

**Topics**
+ [发送授权的特定条件](#sending-authorization-policy-conditions)
+ [指定委托发件人](#sending-authorization-policy-example-sender)
+ [限制“发件人”地址](#sending-authorization-policy-example-from)
+ [限制主体发送电子邮件的时间](#sending-authorization-policy-example-time)
+ [限制电子邮件发送操作](#sending-authorization-policy-example-action)
+ [限制电子邮件发件人的显示名称](#sending-authorization-policy-example-display-name)
+ [使用多个语句](#sending-authorization-policy-example-multiple-statements)

## 发送授权的特定条件
<a name="sending-authorization-policy-conditions"></a>

*条件*是语句中有关权限的任何限制。语句中指定条件的部分可能为各部分中最为详尽的部分。*密钥*是作为访问限制基础的具体特征，例如，请求的日期和时间。

您需使用条件和密钥一起明确说明限制。例如，如果需要限制委托发件人，使其不能在 2019 年 7 月 30 日后代表您对 Amazon SES 发出请求，则可以使用名为 `DateLessThan` 的条件。您使用的密钥名为 `aws:CurrentTime`，并将其值设置为 `2019-07-30T00:00:00Z`。

您可以使用 *IAM 用户指南*中[可用密钥中列出的任何一个 AWS范围内的密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#AvailableKeys)，也可以使用以下特定于 SES 的密钥之一，这些密钥在发送授权策略时非常有用：


****  

|  条件键  |  说明  | 
| --- | --- | 
|   `ses:Recipients`   |  限制收件人地址，这包括“收件人”、“抄送”和“密件抄送”地址。  | 
|   `ses:FromAddress`   |  限制“发件人”地址。  | 
|   `ses:FromDisplayName`   |  限制用作“发件人”显示名称的字符串的内容（有时称为“易记发件人”）。例如，“John Doe <johndoe@example.com>”的显示名称为 John Doe。  | 
|   `ses:FeedbackAddress`   |  限制“退回路径”地址，这是供退回邮件和投诉通过电子邮件反馈转发发送给您的地址。有关电子邮件反馈转发的信息，请参阅[通过电子邮件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。  | 

您可以将 `StringEquals` 和 `StringLike` 条件与 Amazon SES 密钥一起使用。这些条件用于区分大小写的字符串匹配。对于 `StringLike`，值可以在字符串中的任何位置包括多字符匹配的通配符（\$1） 或单字符匹配的通配符（?）。例如，下列条件指定委托发件人只能从以 *invoicing* 开头并以 *@example.com* 结尾的“发件人”地址发送电子邮件：

```
1. "Condition": {
2.     "StringLike": {
3.       "ses:FromAddress": "invoicing*@example.com"
4.     }
5. }
```

您还可以使用 `StringNotLike` 条件来防止委托发件人从某些电子邮件地址发送电子邮件。例如，您可以通过在您的策略语句中包含以下条件，禁止从 *admin@example.com* 以及类似地址（例如 *“admin”@example.com*、*admin\$11@example.com* 或 *sender@admin.example.com*）发送邮件：

```
1. "Condition": {
2.     "StringNotLike": {
3.       "ses:FromAddress": "*admin*example.com"
4.     }
5.  }
```

有关如何指定条件的更多信息，请参阅*《IAM 用户指南》*中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

## 指定委托发件人
<a name="sending-authorization-policy-example-sender"></a>

*委托人*（即您向其授予权限的实体）可以是 AWS 账户、 AWS Identity and Access Management (IAM) 用户或 AWS 服务。

*以下示例显示了一个简单的策略，该策略允许 AWS ID *123456789012* 从经过验证的身份 e *xample.com*（归88888888888888所有）发送电子邮件。 AWS 账户 **本政策中的`Condition`声明仅允许委托人（即 AWS ID *123456789012*）从地址营销\$1发送电子邮件。 \$1 @example .com*，其中 *\$1* 是发件人想要在 m *arketing* \$1 之后添加的任何字符串。 。

------
#### [ JSON ]

****  

```
{
  "Id":"SampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeMarketer",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringLike":{
          "ses:FromAddress":"marketing+.*@example.com"
        }
      }
    }
  ]
}
```

------

以下示例策略向两个 IAM 用户授予从身份 *example.com* 发送电子邮件的权限。IAM 用户通过其 Amazon 资源名称（ARN）来指定。

------
#### [ JSON ]

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeIAMUser",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::111122223333:user/John",
          "arn:aws:iam::444455556666:user/Jane"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ]
    }
  ]
}
```

------

以下示例策略向 Amazon Cognito 授予从身份 *example.com* 发送电子邮件的权限。

------
#### [ JSON ]

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeService",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "Service":[
          "cognito-idp.amazonaws.com"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "888888888888",
          "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:888888888888:userpool/your-user-pool-id-goes-here"
        }
      }
    }
  ]
}
```

------

以下示例策略向 AWS 组织中的所有账户授予从身份 example.com 发送电子邮件的权限。 AWS 组织是使用 [PrincipalOrgID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) 全局条件键指定的。

------
#### [ JSON ]

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeOrg",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":"*",
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringEquals":{
          "aws:PrincipalOrgID":"o-xxxxxxxxxxx"
        }
      }
    }
  ]
}
```

------

## 限制“发件人”地址
<a name="sending-authorization-policy-example-from"></a>

如果您使用的是已验证的域，则可能需要创建一个策略，以便只允许委托发件人从指定电子邮件地址发送电子邮件。要限制 “发件人” 地址，您需要在密钥上设置一个名为 *ses: 的*条件FromAddress。*以下政策允许从身份 e *xample.com* 发送 AWS 账户 ID *123456789012*，但只能从电子邮件地址 sender@example.com 发送。*

------
#### [ JSON ]

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeFromAddress",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringEquals":{
          "ses:FromAddress":"sender@example.com"
        }
      }
    }
  ]
}
```

------

## 限制主体发送电子邮件的时间
<a name="sending-authorization-policy-example-time"></a>

您还可以配置发件人授权策略，限制委托发件人只能在一天的特定时间范围或在特定的日期范围内发送电子邮件。例如，如果您计划在 2021 年 9 月发送电子邮件广告，则可以使用以下策略限制主体只能在此月发送电子邮件。

------
#### [ JSON ]

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"ControlTimePeriod",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "DateGreaterThan":{
          "aws:CurrentTime":"2021-08-31T12:00Z"
        },
        "DateLessThan":{
          "aws:CurrentTime":"2021-10-01T12:00Z"
        }
      }
    }
  ]
}
```

------

## 限制电子邮件发送操作
<a name="sending-authorization-policy-example-action"></a>

发件人可使用两种操作通过 Amazon SES 发送电子邮件：`SendEmail` 和 `SendRawEmail`，具体取决于发件人想要对电子邮件格式的控制程度。通过发送授权策略，您可以限制委托发件人使用两种操作中的一种。但是，许多身份所有者都会将电子邮件发送调用的具体方式交给委托发件人决定，也就是在策略中同时启用这两种操作。

**注意**  
如果您允许委托发件人经由 SMTP 接口访问 Amazon SES，则必须至少选择 `SendRawEmail`。

如果您的使用案例中需要限制操作，则可在发送授权策略中仅包括一种操作。以下示例向您说明如何限制仅使用 `SendRawEmail` 操作。

------
#### [ JSON ]

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"ControlAction",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendRawEmail"
      ]
    }
  ]
}
```

------

## 限制电子邮件发件人的显示名称
<a name="sending-authorization-policy-example-display-name"></a>

某些电子邮件客户端显示邮件发送者的易记名称（如果电子邮件标头中提供） 而不是实际的“发件人”地址。例如，“John Doe <johndoe@example.com>”的显示名称为 John Doe。例如，您可能是从 *user@example.com* 发送电子邮件，但您希望收件人看到该电子邮件来自 *Marketing* 而不是来自 *user@example.com*。*以下政策允许从 identity e *xample.com* 发送 AWS 账户 ID 123456789012，但前提是 “发件人” 地址的显示名称包含营销信息。*

------
#### [ JSON ]

****  

```
{
  "Id":"ExamplePolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeFromAddress",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Condition":{
        "StringLike":{
          "ses:FromDisplayName":"Marketing"
        }
      }
    }
  ]
}
```

------

## 使用多个语句
<a name="sending-authorization-policy-example-multiple-statements"></a>

发送授权策略可以包含多个语句。以下示例策略包含两个语句。第一项声明授权两 AWS 账户 人从 *sender@example.com* 发送，只要 “发件人” 地址和反馈地址都使用域名 e *xam* ple.com 即可。第二条语句授权 IAM 用户从 *sender@example.com* 发送电子邮件，条件是收件人的电子邮件地址使用 *example.com* 域。

# 向委托发件人提供有关 Amazon SES 发送授权的身份信息
<a name="sending-authorization-identity-owner-tasks-identity"></a>

在您创建发送授权策略并将其附加到您的身份后，可以向委托发件人提供身份的 Amazon Resource Name (ARN)。委托发件人在电子邮件发送操作或电子邮件的标头中将该 ARN 传递给 Amazon SES。要查找您身份的 ARN，请执行以下步骤。

**查找身份的 ARN**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在身份列表中，选择附加了发送授权策略的身份。

1. 在**摘要**容器中，第二列 **Amazon 资源名称（ARN）**将包含身份的 ARN。该值类似于 *arn:aws:ses:us-east-1:123456789012:identity/user@example.com*。复制整个 ARN 并将它提供给您的委托发件人。
**重要**  
如果您正在授权的身份在次要区域中复制，作为[全局端点](global-endpoints.md)功能的一部分，请将区域参数（例如 `us-east-1`）替换为星号 `*`，如以下示例 `arn:aws:ses:*:123456789012:identity/user@example.com` 所示。

# Amazon SES 发送授权的委托发件人任务
<a name="sending-authorization-delegate-sender-tasks"></a>

作为委托发件人，您将代表不属于自己但已获得使用授权的身份发送电子邮件。即使您代表身份所有者发送，退回邮件和投诉也会计入您 AWS 账户的退回和投诉指标，您发送的消息数量也计入您的发送配额。如果发送身份拥有者的电子邮件时需要提出发送配额提升申请，该申请也由您负责提交。

作为委托发件人，您必须完成以下任务：
+ [向身份拥有者提供信息](sending-authorization-delegate-sender-tasks-information.md)
+ [使用委托发件人通知](sending-authorization-delegate-sender-tasks-notifications.md)
+ [代表身份拥有者发送电子邮件](sending-authorization-delegate-sender-tasks-email.md)

# 向 Amazon SES 发送授权的身份拥有者提供信息
<a name="sending-authorization-delegate-sender-tasks-information"></a>

作为委托发件人，您必须向身份所有者提供您的 AWS 账户 ID 或 IAM 用户的 Amazon 资源名称 (ARN)，因为您将代表身份所有者发送电子邮件。身份所有者需要您的账户信息，这样他就可以创建一个策略，授予您从其验证身份之一发送的权限。

如果您想使用自己的 SNS 主题，可以请求身份所有者配置反馈通知，以便发送到一个或多个 SNS 主题的退回、投诉或交付。执行此操作，您需要与身份所有者共享 SNS 主题 ARN，以便其可以在授权您发送的已验证身份中配置您的 SNS 主题。

以下步骤说明了如何查找您的账户信息以及要与您的身份所有者共享的 SNS 主题 ARNs 。

**要查找您的 AWS 账户 ID**

1. 登录到 a AWS 管理控制台 t [https://console.aws.amazon.com](https://console.aws.amazon.com/)。

1. 在控制台的右上角，展开您的 name/account 电话号码，然后在下拉列表中选择 “**我的账户**”。

1. 账户设置页面将打开并显示您的所有账户信息，包括您的 AWS 账户 ID。

**要查找您的 IAM 用户 ARN**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择 **Users**（用户）。

1. 在用户列表中，选择用户名。**Summary** 部分将显示 IAM 用户 ARN。ARN 与以下示例类似：*arn:aws:iam::123456789012:user/John*。

**要查找您的 SNS 主题 ARN**

1. [在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. 在导航窗格中，选择**主题**。

1. 在主题列表中，SNS 主题显示 ARNs 在 AR **N** 列中。ARN 类似于以下示例：arn: aws: sns: us-east-1 *:4444555566* 66:。my-sns-topic

# 使用 Amazon SES 发送授权的身份拥有者通知
<a name="sending-authorization-delegate-sender-tasks-notifications"></a>

作为跨账户电子邮件的委托发件人，您代表您未拥有但已获得授权使用的身份发送电子邮件；但是，退回邮件和投诉仍然计入*您的*退回邮件和投诉指标，而不是身份拥有者的指标。

如果账户的邮件退回率或投诉率过高，则您的账户有被审核的风险，或其发送电子邮件的功能将被暂停。因此，设置通知并制定流程来监控它们十分重要。您还需要建立一套流程从邮件列表中删除已退回或遭投诉的地址。

因此，作为委托发件人，您可以将 Amazon SES 配置为在您代表您未拥有但经身份拥有者授权使用的任何身份发送的电子邮件发生退回邮件和投诉事件时发送通知。您还可以设置[事件发布](monitor-using-event-publishing.md)以将退回邮件和投诉通知发布到 Amazon SNS 或 Firehose。

**注意**  
如果将 Amazon SES 设置为使用 Amazon SNS 发送通知，则按标准 Amazon SNS 费率收取所接收通知的费用。有关更多信息，请参阅 [Amazon SNS 定价页面](https://aws.amazon.com/sns/pricing)。

## 创建新的委托发件人通知
<a name="sending-authorization-delegate-sender-tasks-management-add"></a>

您可以通过使用[事件发布](event-destinations-manage.md)的配置集，或使用[配置了您自己的 SNS 主题](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)的经验证身份来设置委托发送通知。

下面给出了使用任何一种方法设置新的委托发送通知的过程：
+ 通过配置集进行事件发布
+ 针对您拥有的 SNS 主题的反馈通知

**通过代表发送的配置集设置事件发布**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 按照 [创建事件目标](event-destinations-manage.md) 所述的过程操作。

1. 在配置集中设置事件发布后，当您使用身份所有者授权您发送的经验证的身份以委托发件人身份发送电子邮件时，指定配置集的名称。请参阅[代表身份拥有者发送电子邮件](sending-authorization-delegate-sender-tasks-email.md)。

**为代表发送的 SNS 主题设置反馈通知**

1. 在决定要用于反馈通知的 SNS 主题之后，请按照以下步骤操作[查找您的 SNS 主题 ARN](sending-authorization-delegate-sender-tasks-information.md#find-sns-topic-arn)，然后复制完整的 ARN 并与身份所有者共享。

1. 要求身份所有者配置 SNS 主题，以获得有关他授权发送的共享身份的反馈通知。（您的身份所有者将需要遵循在授权策略过程中 [configuring SNS topics](sending-authorization-identity-owner-tasks-policy.md#configure-sns-topic-you-dont-own)（配置 SNS 主题）的过程）。

# 使用 Amazon SES 发送授权代表身份拥有者发送电子邮件
<a name="sending-authorization-delegate-sender-tasks-email"></a>

作为委托发件人，您发送电子邮件的方式与其他 Amazon SES 发件人相同，不同的是，您需要提供身份拥有者已授权您使用的身份的 Amazon Resource Name (ARN)。当您调用 Amazon SES 来发送电子邮件时，Amazon SES 会检查您指定的身份是否包含授权您发送电子邮件的策略。

有几种不同的方法可用于指定在发送电子邮件时的身份的 ARN。您使用的方法取决于您是使用 Amazon SES API 操作还是 Amazon SES SMTP 接口来发送电子邮件。

**重要**  
要成功发送电子邮件，您必须连接到身份所有者验证身份的 AWS 区域中的 Amazon SES 终端节点。
**此外，必须先将身份所有者和委托发件人的 AWS 账户从沙箱中删除，然后两个账户才能向未经验证的地址发送电子邮件。**有关更多信息，请参阅 [请求生产访问权限（从 Amazon SES 沙盒中移出）](request-production-access.md)。
如果您被授权使用的身份在次要区域中复制，作为[全局端点](global-endpoints.md)功能的一部分：  
身份所有者应该向您提供了一个身份 ARN，其中区域参数（例如 `us-east-1`）被替换为星号 `*`，如以下示例 `arn:aws:ses:*:123456789012:identity/user@example.com` 所示。
身份所有者应该已经在主要区域和次要区域为您创建了发送授权策略。

## 使用 Amazon SES API
<a name="sending-authorization-delegate-sender-tasks-api"></a>

与任何 Amazon SES 电子邮件发件人一样，如果您通过 Amazon SES API（直接通过 HTTPS 或间接通过 AWS SDK）访问 Amazon SES，则可以在三种电子邮件发送操作中进行选择：`SendEmail``SendTemplatedEmail`、和。`SendRawEmail`[Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)详细介绍了这些参数 APIs，但我们在此处提供了发送授权参数的概述。

### SendRawEmail
<a name="sending-authorization-delegate-sender-tasks-api-sendrawemail"></a>

如果您想要使用 `SendRawEmail` 以便可以控制电子邮件的格式，您可以通过以下两种方式之一指定委托授权身份：
+ **向 `SendRawEmail` API 传递可选参数**。下表中描述了必需参数：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/sending-authorization-delegate-sender-tasks-email.html)
+ **在电子邮件中包括 X 标头**。X 标头是自定义标头，可以作为标准电子邮件标头的补充来使用（例如 From、Reply-To 或 Subject 标头）。Amazon SES 能识别三种 X 标头，您可以用它们来指定发送授权参数：
**重要**  
请不要在 DKIM 签名中包含这些 X 标头，因为它们将在发送电子邮件之前被 Amazon SES 删除。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/sending-authorization-delegate-sender-tasks-email.html)

  Amazon SES 会从电子邮件中删除所有 X 标头，然后再发送。如果电子邮件中包含 X 标头的多个实例，则 Amazon SES 仅使用第一个实例。

  以下示例显示了一封包含发送授权 X 标头的电子邮件：

  ```
   1. X-SES-SOURCE-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   2. X-SES-FROM-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   3. X-SES-RETURN-PATH-ARN: arn:aws:ses:us-east-1:123456789012:identity/example.com
   4. 
   5. From: sender@example.com
   6. To: recipient@example.com
   7. Return-Path: feedback@example.com
   8. Subject: subject
   9. Content-Type: multipart/alternative;
  10. 	boundary="----=_boundary"
  11. 
  12. ------=_boundary
  13. Content-Type: text/plain; charset=UTF-8
  14. Content-Transfer-Encoding: 7bit
  15. 
  16. body
  17. ------=_boundary
  18. Content-Type: text/html; charset=UTF-8
  19. Content-Transfer-Encoding: 7bit
  20. 
  21. body
  22. ------=_boundary--
  ```

### SendEmail 和 SendTemplatedEmail
<a name="sending-authorization-delegate-sender-tasks-api-sendemail"></a>

如果您使用 `SendEmail` 或 `SendTemplatedEmail` 操作，则可以通过传入下面的可选参数来指定委托的授权身份。使用 `SendEmail` 或 `SendTemplatedEmail` 操作时，不能使用 X 标头方法。


****  

| 参数 | 说明 | 
| --- | --- | 
| `SourceArn` | 与发送授权策略相关联的身份的 ARN 允许您使用在 `SendEmail` 或 `SendTemplatedEmail` 的 `Source` 参数中指定的电子邮件地址发送电子邮件。 | 
| `ReturnPathArn` | 与发送授权策略相关联的身份的 ARN 允许您使用在 `SendEmail` 或 `SendTemplatedEmail` 的 `ReturnPath` 参数中指定的电子邮件地址。 | 

以下示例显示如何使用 `SendEmail` 或 `SendTemplatedEmail` 操作和[适用于 Python 的 SDK](https://aws.amazon.com/sdk-for-python) 来发送包含 `SourceArn` 和 `ReturnPathArn` 属性的电子邮件。

```
import boto3
from botocore.exceptions import ClientError

# Create a new SES resource and specify a region.
client = boto3.client('ses',region_name="us-east-1")

# Try to send the email.
try:
    #Provide the contents of the email.
    response = client.send_email(
        Destination={
            'ToAddresses': [
                'recipient@example.com',
            ],
        },
        Message={
            'Body': {
                'Html': {
                    'Charset': 'UTF-8',
                    'Data': 'This email was sent with Amazon SES.',
                },
            },
            'Subject': {
                'Charset': 'UTF-8',
                'Data': 'Amazon SES Test',
            },
        },
        SourceArn='arn:aws:ses:us-east-1:123456789012:identity/example.com',
        ReturnPathArn='arn:aws:ses:us-east-1:123456789012:identity/example.com',
        Source='sender@example.com',
        ReturnPath='feedback@example.com'
    )
# Display an error if something goes wrong.	
except ClientError as e:
    print(e.response['Error']['Message'])
else:
    print("Email sent! Message ID:"),
    print(response['ResponseMetadata']['RequestId'])
```

## 使用 Amazon SES SMTP 接口
<a name="sending-authorization-delegate-sender-tasks-smtp"></a>

使用 Amazon SES SMTP 接口进行委托发送时，必须在邮件中包含 `X-SES-SOURCE-ARN`、`X-SES-FROM-ARN` 和 `X-SES-RETURN-PATH-ARN` 标头。在 SMTP 会话中发出 `DATA` 命令后将传递这些标头。

# 使用模拟器在 Amazon SES 中发送测试电子邮件
<a name="send-an-email-from-console"></a>

我们建议使用 Amazon SES 控制台发送 SES 测试电子邮件。由于控制台要求您手动输入信息，因此您通常仅使用它来发送测试电子邮件。在开始使用 Amazon SES 之后，您很可能会使用 Amazon SES SMTP 接口或者 API 来发送电子邮件。但控制台对监控您的发送活动很有用。

**Topics**
+ [从控制台使用邮箱模拟器](#send-test-email)
+ [手动使用邮箱模拟器](#send-email-simulator)

## 从控制台使用邮箱模拟器
<a name="send-test-email"></a>

**重要**  
在本教程中，您将从控制台向自己发送电子邮件，以便检查是否收到了该电子邮件。如需进一步试验或进行负载测试，请参阅[手动使用邮箱模拟器](#send-email-simulator)。
您发送到邮箱模拟器的电子邮件不会计入您的发送配额或您的退信率和投诉率，也不影响 Virtual Deliverability Manager 指标。
 

在按照这些步骤进行操作之前，请完成 [设置 Amazon Simple Email Service](setting-up.md) 中的任务。

**从 Amazon SES 控制台发送测试电子邮件**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 从 **Identities**（身份）表中，选择已验证的电子邮件身份（通过直接单击身份名称而不是选中其复选框）。*如果您没有经过验证的电子邮件身份，请参阅 [创建电子邮件地址身份](creating-identities.md#verify-email-addresses-procedure)。*

1. 在所选电子邮件身份的详细信息页面上，选择 **Send test email**（发送测试电子邮件）。

1. 对于**邮件详细信息**，选择 **Email Format**（电子邮件格式）。有以下两个选项：
   + ****Formatted (格式化)****：这是最简单的选项。如果您只是想将消息文本键入到 **Body** 文本框中，则选择此选项。当您发送电子邮件时，Amazon SES 会为您将文本转换为电子邮件格式。
   + ****Raw (原生)****：如果您要发送更复杂的邮件（例如包含 HTML 或附件的邮件），请选择此选项。由于此灵活性，您需要设置消息的格式，如 [使用 Amazon SES API v2 发送原始电子邮件](send-email-raw.md) 中所述，然后将整个设置了格式的消息（包括标头） 粘贴到 **Body** 文本框中。您可以使用以下示例（包含 HTML）来发送采用 **Raw** 电子邮件格式的测试电子邮件。将此消息整个复制并粘贴到 **Body** 文本框中。确保 `MIME-Version` 标头和 `Content-Type` 标头之间没有空白行；这两行之间的空白行将导致电子邮件的格式为纯文本而不是 HTML。

     ```
      1. Subject: Amazon SES Raw Email Test
      2. MIME-Version: 1.0
      3. Content-Type: text/html
      4. 
      5. <!DOCTYPE html>
      6. <html>
      7. <body>
      8. <h1>This text should be large, because it is formatted as a header in HTML.</h1>
      9. <p>Here is a formatted link: <a href="https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html">Amazon Simple Email Service Developer Guide</a>.</p>
     10. </body>
     11. </html>
     ```

1. 通过展开 **Scenario**（场景）列表框选择要测试的模拟电子邮件场景的类型。

   1. 如果您选择 **Custom**（自定义）并且仍在 Amazon SES 沙盒中，请确保 **Custom recipient**（自定义收件人）字段中的地址是经过验证的电子邮件地址。有关更多信息，请参阅 [创建电子邮件地址身份](creating-identities.md#verify-email-addresses-procedure)。

1. 根据需要填写其余字段。

1. 选择 **Send Test Email**（发送测试电子邮件）。

1. 登录您将电子邮件发送到的地址的电子邮件客户端。您将找到已发送的电子邮件。

## 手动使用邮箱模拟器
<a name="send-email-simulator"></a>

Amazon SES 包含一个邮箱模拟器，您可以用它来测试您的应用程序如何处理各种电子邮件发送场景。邮箱模拟器非常有用，例如，在您希望测试电子邮件发送应用程序而无需创建虚构电子邮件地址时，或者当您希望确定系统的最大吞吐量而不会影响每日发送配额时。

### 重要注意事项
<a name="send-email-simulator-considerations"></a>

在使用 Amazon SES 邮箱模拟器时，请注意以下功能和限制：
+ 即使您的账户位于 Amazon SES 沙盒中，您也可以使用邮箱模拟器。
+ 发送到邮箱模拟器的电子邮件限制为您的账户的最大发送速率，但不会影响您的每日发送配额。例如，如果授权您的账户每 24 小时周期发送 10000 封邮件，而您向邮箱模拟器发送了 100 封邮件，您最多仍可以向普通收件人发送 10000 封邮件而不会超过您的发送配额。
+ 发送到邮箱模拟器的电子邮件不会影响您的电子邮件送达率或声誉指标。例如，如果您发送大量邮件到电子邮件模拟器的退信地址，它不会在[声誉指标控制台页面](reputation-dashboard-dg.md)上显示消息来警告您邮件退回率太高。
+ 在计费方面，发送到 Amazon SES 邮箱模拟器的电子邮件与使用 Amazon SES 发送的任何其他电子邮件相同。换而言之，对于您发送给邮箱模拟器的邮件以及发送到普通收件人的邮件，我们将向您收取相同的费用。
+ 邮箱模拟器支持加标签，利用此功能，您可以通过多种方式将电子邮件发送到同一邮箱模拟器地址，也可以查看应用程序如何处理可变信封退回路径（VERP）。例如，您可以将电子邮件发送到 *bounce\$1label1@simulator.amazonses.com* 和 *bounce\$1label2@simulator.amazonses.com* 以测试您的应用程序是否可以使用导致退回的电子邮件地址匹配退信。
+ 如果您使用邮箱模拟器模拟来自同一个发送请求的多个退信，Amazon SES 会将退信回复合并成单个回复。

### 使用邮箱模拟器
<a name="send-email-simulator-how-to-use"></a>

要使用电子邮件模拟器，请在下表中找到场景，然后将电子邮件发送到对应的电子邮件地址。

**注意**  
向邮箱模拟器地址发送电子邮件时，必须使用软件开发工具包、Amazon SES 控制台、Amazon SES AWS SMTP 接口或亚马逊 SES API 通过 Amazon SES 发送。 AWS CLI邮箱模拟器不会回复接收自外部来源的电子邮件。


| 模拟的场景 | 电子邮件地址 | 
| --- | --- | 
| 成功送达：收件人的电子邮件提供商接受了电子邮件。如果您按照[为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)中所述方式设置送达通知，那么 Amazon SES 会通过 Amazon Simple Notification Service（Amazon SNS）将送达通知发送给您。 | success@simulator.amazonses.com | 
| 退信：收件人的电子邮件提供商拒绝您的电子邮件并返回 SMTP 550 5.1.1（“未知用户”）响应代码。Amazon SES 会生成一条退信通知，根据您的账户设置，通过电子邮件将其发送给您或者发送通知到 Amazon SNS 主题。邮箱模拟器电子邮件地址不会像一般的电子邮件地址一样在出现硬退信时被加入 Amazon SES 黑名单。您从邮箱模拟器收到的退信响应符合 [RFC 3464](https://tools.ietf.org/html/rfc3464)。有关如何接收退信反馈的信息，请参阅[为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)。 | bounce@simulator.amazonses.com | 
| 自动回复：收件人的电子邮件提供商接受您的电子邮件并将其传送到收件人的收件箱。电子邮件提供商发送自动回复（例如“out of the office（外出，OOTO）”消息）到电子邮件 Return-Path 标头中的地址，如果没有 Return-Path 标头，则发送到信封发件人（MAIL FROM）地址。您从邮箱模拟器收到的自动回复符合 [RFC 3834](https://tools.ietf.org/html/rfc3834) 标准。 | ooto@simulator.amazonses.com | 
| 投诉：收件人的电子邮件提供商接受您的电子邮件并将其传送到收件人的收件箱。收件人在自己的邮件客户端中确定您的邮件是未经请求的，并单击 Mark as Spam (标记为垃圾邮件)。Amazon SES 随后通过电子邮件或通知 Amazon SNS 主题（具体取决于您的账户设置）将投诉通知转发给您。您从邮箱模拟器收到的投诉响应符合 [RFC 5965](https://tools.ietf.org/html/rfc5965)。有关如何接收投诉反馈的信息，请参阅 [为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)。 | complaint@simulator.amazonses.com | 
| 收件人地址在黑名单上：Amazon SES 生成硬退信，就像是收件人的地址在全局黑名单上一样。 | suppressionlist@simulator.amazonses.com | 

### 测试拒绝事件
<a name="send-email-simulator-test-rejections"></a>

您经由 Amazon SES 发送的每个邮件都会经过病毒扫描。如果您发送一个包含病毒的邮件，Amazon SES 会接受该邮件，检测病毒，然后拒绝整个邮件。当 Amazon SES 拒绝邮件时，它会停止处理邮件，并且不会尝试将邮件发送到收件人的邮件服务器。然后，它将生成一个拒绝事件。

Amazon SES 邮箱模拟器不包含用于测试拒绝事件的地址。但是，您可以使用欧洲计算机防病毒研究所 (EICAR) 测试文件来测试拒绝事件。此文件是一个以安全的方式测试反病毒软件的行业标准方法。要创建 EICAR 测试文件，请将以下文本粘贴到一个文件中：

```
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
```

将该文件另存为 `sample.txt`，将其附加到电子邮件，然后将电子邮件发送到经验证的地址。如果该电子邮件没有任何其他问题，Amazon SES 会接受该邮件，但接着会拒绝它，如同它包含真实病毒一样。

**注意**  
拒绝的电子邮件（包括通过使用上述过程发送的电子邮件）将被计入您的每日发送配额中。我们将向您发送的每封邮件收费，包括被拒绝的邮件。

要了解有关 EICAR 测试文件的更多信息，请参阅 [Wikipedia 上的 EICAR 测试文件页面](https://en.wikipedia.org/wiki/EICAR_test_file)。