

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

# 设置 Amazon SES 电子邮件接收
<a name="receiving-email-setting-up"></a>

本节介绍了开始配置 Amazon SES 以接收邮件之前所需的先决条件。请务必先阅读 [电子邮件接收概念和使用案例](receiving-email-concepts.md)，以了解 Amazon SES 工作原理的概念，并考虑希望如何接收、筛选和处理电子邮件。

在创建*规则集*、*接收规则*和 *IP 地址筛选条件*配置电子邮件接收之前，必须先完成以下设置先决条件：
+ 发布 DNS 记录证明您拥有域，使用 Amazon SES 验证您的域。
+ 允许 Amazon SES 发布 MX 记录来接收您域的电子邮件。
+ 授予 Amazon SES 访问其他 AWS 资源的权限，以便执行接收规则操作。

创建和验证域身份时，您需要将记录发布到 DNS 设置，以完成验证过程，但仅凭这一点还不足以使用电子邮件接收。针对电子邮件接收，还需要发布 MX 记录以指定自定义邮件发件人域。此记录用于您域的 DNS 设置，以允许 SES 接收您域的电子邮件。授予权限是必需的，因为除非 Amazon SES 有权使用这些操作所需的相应 AWS 服务，否则您在收据规则中选择的操作将不起作用。

**Topics**
+ [为 Amazon SES 接收电子邮件验证您的域](receiving-email-verification.md)
+ [为 Amazon SES 电子邮件接收发布 MX 记录](receiving-email-mx-record.md)
+ [授予 Amazon SES 电子邮件接收的权限](receiving-email-permissions.md)

# 为 Amazon SES 接收电子邮件验证您的域
<a name="receiving-email-verification"></a>

与任何您要使用 Amazon SES 发送或接收电子邮件的域相同，您必须首先证明您拥有该域。验证过程包括使用 SES 启动域验证，然后以别名记录或 TXT 格式将 DNS 记录发布到您的 DNS 提供商，具体取决于您使用何种验证方式。

通过控制台，您可以使用 [Easy DKIM](send-email-authentication-dkim-easy.md) 或 [自带 DKIM (BYODKIM)](send-email-authentication-dkim-bring-your-own.md) 验证您的域，并轻松复制其 DNS 记录以发布到您的 DNS 提供商 - 见 [创建域身份](creating-identities.md#verify-domain-procedure) 中的操作方法说明。或者，您可以使用 SES [https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html)或[https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html) APIs。

您可以在 SES 控制台的 “已[验证身份](view-verified-domains.md)” 表中查看其状态，或者使用 SES 或，轻松确认您的域名或电子邮件地址已通过验证[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html) APIs。[https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html)

# 为 Amazon SES 电子邮件接收发布 MX 记录
<a name="receiving-email-mx-record"></a>

*邮件交换器* 记录（*MX 记录*）是一种配置，指定哪些邮件服务器可以接受发送到您的域的电子邮件。

要让 Amazon SES 管理您的传入电子邮件，您需要将 MX 记录添加到您的域的 DNS 配置。您创建的 MX 记录是指接收您使用 Amazon SES 的 AWS 地区的电子邮件的终端节点。例如，美国西部（俄勒冈）区域的端点为 *inbound-smtp.us-west-2.amazonaws.com*。有关完整的端点列表，请参阅 [SES 区域和端点](regions.md#region-endpoints)。

**注意**  
在 Amazon SES 中接收电子邮件的终端节点不是 IMAP 或 POP3 电子邮件服务器。您不能 URLs 将它们用作电子邮件客户端中的传入邮件服务器。如果您需要一种能够使用电子邮件客户端发送和接收电子邮件的解决方案，请考虑使用 [Amazon WorkMail](https://aws.amazon.com/workmail)。

以下过程包括 MX 记录的常规创建步骤。*创建 MX 记录的具体步骤取决于您的 DNS 或托管服务提供商。*有关将 MX 记录添加到域的 DNS 配置的信息，请参阅提供商的文档。

**注意**  


**将 MX 记录添加到域的 DNS 配置**

1. （先决条件）要完成这些过程，您需要修改您域的 DNS 记录。如果您无法访问 DNS 记录，或者您不方便这样做，请联系您的系统管理员以获取帮助。

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

1. 创建新的 MX 记录。

1. 对于 MX 记录的 **Name (名称)**，输入您的域。例如，如果您希望 Amazon SES 管理发送到域 *example.com* 的电子邮件，请输入以下内容：

   ```
   example.com.
   ```
**注意**  
根据您的 DNS 提供商：1) 域扩展名末尾的尾随 `.` 可能不需要。2）**名称**字段可能被称为**主机**、**域**或**邮件域**。

1. 对于 **Type**（类型），选择 **MX**。
**注意**  
一些 DNS 提供商将 **Type**（类型）字段称为 **Record Type**（记录类型）或类似名称。

1. 对于 **Value**（值），输入以下内容：

   ```
   10 inbound-smtp.region.amazonaws.com
   ```

   在前面的示例中，*region*替换为您在 Amazon SES 中使用的 AWS 区域接收电子邮件的终端节点的地址。例如，如果您使用的是美国东部（弗吉尼亚北部）区域，请*region*替换为`us-east-1`。有关电子邮件接收端点的完整列表，请参阅 [SES 区域和端点](regions.md#region-endpoints)。
**注意**  
对于记录 **Value**（值）和记录 **Priority**（优先级），一些 DNS 提供商的管理控制台包含单独的字段。如果您的 DNS 提供商是这种情况，请输入 `10` 作为 **Priority**（优先级）值，并为 **Value**（值）输入传入邮件端点 URL。

**重要**  
MX 记录的具体创建过程取决于您的 DNS 或托管提供商。请参阅您的提供商的文档或联系他们，以获取有关将 MX 记录添加到您域 DNS 配置的信息。

## 有关为不同提供商创建 MX 记录的说明
<a name="receiving-email-mx-record-links"></a>

为您的域创建 MX 记录的过程取决于您使用的 DNS 提供商。本节包含指向几个常用 DNS 提供商的文档的链接。此列表不是完整提供商列表。如果下面未列出您的提供商，您仍可以通过 Amazon SES 来使用此提供商。此列表中包含的不是对任何公司的产品或服务的认可或推荐。


| DNS/托管提供商名称 | 文档链接 | 
| --- | --- | 
|  Amazon Route 53  |  [使用 Amazon Route 53 控制台创建记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)  | 
|  GoDaddy  |  [添加 MX 记录](https://www.godaddy.com/help/add-an-mx-record-19234)（外部链接）  | 
|  DreamHost  |  [如何更改我的 MX 记录？](https://help.dreamhost.com/hc/en-us/articles/215035328)（外部链接）  | 
|  Cloudflare  |  [设置电子邮件记录](https://developers.cloudflare.com/dns/manage-dns-records/how-to/email-records/)（外部链接）  | 
|  HostGator  |  [更改 MX 记录 - Windows](https://www.hostgator.com/help/article/changing-mx-records-windows)（外部链接）  | 
|  Namecheap  |  [如何设置邮件服务所需的 MX 记录？](https://www.namecheap.com/support/knowledgebase/article.aspx/322/2237/how-can-i-set-up-mx-records-required-for-mail-service)（外部链接）  | 
|  Names.co.uk  |  [更改您的域的 DNS 设置](https://www.names.co.uk/support/domains/1156-changing_your_domains_dns_settings.html)（外部链接）  | 
|  Wix  |  [在您的 Wix 账户中添加或更新 MX 记录](https://support.wix.com/en/article/adding-or-updating-mx-records-in-your-wix-account)（外部链接）  | 

# 授予 Amazon SES 电子邮件接收的权限
<a name="receiving-email-permissions"></a>

在 SES 中接收电子邮件时可以执行的某些任务，例如向亚马逊简单存储服务 (Amazon S3) Service 存储桶发送电子邮件或调用 AWS Lambda 函数，需要特殊权限。本节包含几个常用案例的示例策略。

**Topics**
+ [设置 IAM 角色权限以执行“交付到 S3 存储桶”操作](#receiving-email-permissions-s3-iam-role)
+ [授予 SES 写入 S3 存储桶的权限](#receiving-email-permissions-s3)
+ [授予 SES 使用您的 AWS KMS 密钥的权限](#receiving-email-permissions-kms)
+ [授予 SES 调用 AWS Lambda 函数的权限](#receiving-email-permissions-lambda)
+ [授予 SES 发布属于不同账户的 Amazon SNS 主题的权限 AWS](#receiving-email-permissions-sns)

## 设置 IAM 角色权限以执行“交付到 S3 存储桶”操作
<a name="receiving-email-permissions-s3-iam-role"></a>

以下几点适用于此 IAM 角色：
+ 它只能用于[交付到 S3 存储桶操作](receiving-email-action-s3.md)。
+ 如果要向 SES [电子邮件接收](regions.md#region-receive-email)不可用的区域中的 S3 存储桶写入数据，则必须使用该角色。

如果要写入到 S3 存储桶，您可以向 IAM 角色提供访问相关资源的权限，以便[交付到 S3 存储桶操作](receiving-email-action-s3.md)。您还需要授予 SES 权限才能代入该角色，以便通过 IAM 信任策略执行操作，如[下一节](#receiving-email-permissions-s3-iam-role-trust)所述。

必须将此权限策略粘贴到 IAM 角色的内联策略编辑器中，请参阅[交付到 S3 存储桶操作](receiving-email-action-s3.md)，并按照 **IAM 角色**项目中给出的步骤进行操作。（以下示例还包括可选权限，以防您想在 S3 操作中使用 SNS 主题通知或客户托管密钥。）

**注意**  
您可以选择设置 S3 操作而不指定 IAM 角色，只需在 S3 存储桶策略中允许 SES 服务，如 [授予 SES 写入 S3 存储桶的权限](#receiving-email-permissions-s3) 所示。这也适用于跨账户场景。
如果您为 S3 操作指定 IAM 角色，则 SES 将担任 “PutObject” 操作的角色，并且此处指定的 IAM 权限足以满足相同的账户使用需求。但是，对于跨账户使用，您需要一个额外的存储桶策略，允许 IAM 角色在存储桶中 PutObject “”。这由存储桶所有者授予跨账户存储桶权限来指定，如[存储桶所有者授予跨账户存储桶权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)中所述。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        },
        {
            "Sid": "SNSAccess",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:us-east-1:111122223333:my-topic"
        },
        {
            "Sid": "KMSAccess",
            "Effect": "Allow",
            "Action": "kms:GenerateDataKey*",
            "Resource": "arn:aws:kms:us-east-1::111122223333:key/key-id"
        }
    ]
}
```

------

对前面的策略示例进行以下更改：
+ *amzn-s3-demo-bucket*替换为您要写入的 S3 存储桶的名称。
+ *region*替换为您创建接收规则 AWS 区域 的位置。
+ 将 *111122223333* 替换为您的 AWS 账户 ID。
+ *my-topic*替换为要向其发布通知的 SNS 主题的名称。
+ *key-id*替换为您的 KMS 密钥的 ID。

### 适用于 S3 操作 IAM 角色的信任策略
<a name="receiving-email-permissions-s3-iam-role-trust"></a>

应将以下信任策略添加到 IAM 角色的*信任关系*中，以允许 SES 代入该角色。

**注意**  
仅当您未使用[交付到 S3 存储桶操作](receiving-email-action-s3.md)工作流程的 **IAM 角色**项目中给出的步骤，从 SES 控制台创建 IAM 角色时，才需要手动添加此信任策略。*当从控制台创建 IAM 角色时，系统会自动生成此信任策略并将其应用于该角色，因此您无需执行此步骤。*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESAssume",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                  "AWS:SourceAccount":"111122223333",
                  "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
                }
            }
        }
    ]
}
```

------

对前面的策略示例进行以下更改：
+ *region*替换为您创建接收规则 AWS 区域 的位置。
+ 将 *111122223333* 替换为您的 AWS 账户 ID。
+ *rule\$1set\$1name*替换为包含接收规则（包含传送到 Amazon S3 存储桶操作）的规则集的名称。
+ *receipt\$1rule\$1name*替换为包含传送到 Amazon S3 存储桶操作的接收规则的名称。

## 授予 SES 写入 S3 存储桶的权限
<a name="receiving-email-permissions-s3"></a>

当您将以下策略应用于 S3 存储桶时，只要该存储桶位于支持 SES [电子邮件接收](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)的区域中，它就会授予 SES 写入该存储桶的权限；如果您想写入*电子邮件接收*区域之外的存储桶，请参阅[设置 IAM 角色权限以执行“交付到 S3 存储桶”操作](#receiving-email-permissions-s3-iam-role)。有关创建接收规则，向 Amazon S3 传输传入电子邮件的更多信息，请参阅[交付到 S3 存储桶操作](receiving-email-action-s3.md)。

有关将策略附加到 S3 的存储桶的更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用存储桶策略和用户策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowSESPuts",
      "Effect":"Allow",
      "Principal":{
        "Service":"ses.amazonaws.com"
      },
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
    }
  ]
}
```

------

对前面的策略示例进行以下更改：
+ *amzn-s3-demo-bucket*替换为您要写入的 S3 存储桶的名称。
+ *region*替换为您创建接收规则的 AWS 区域。
+ 将 *111122223333* 替换为您的 AWS 账户 ID。
+ *rule\$1set\$1name*替换为包含接收规则（包含传送到 Amazon S3 存储桶操作）的规则集的名称。
+ *receipt\$1rule\$1name*替换为包含传送到 Amazon S3 存储桶操作的接收规则的名称。

## 授予 SES 使用您的 AWS KMS 密钥的权限
<a name="receiving-email-permissions-kms"></a>

为了让 SES 能够加密您的电子邮件，它必须具有使用 AWS KMS 密钥的权限，该密钥在设置接收规则时由您指定。您可以使用账户中的默认 KMS 密钥（**aws/ses**），也可以使用您创建的客户托管式密钥。如果您使用默认 KMS 密钥，不需要执行任何其他步骤来为 SES 提供使用权限。若要使用客户托管式密钥，您需要向 SES 提供该密钥的使用权限，方法是在密钥策略中添加一条语句。

使用以下策略语句作为密钥策略，以允许 SES 在您的域上接收电子邮件时使用您的客户托管式密钥。

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
}
```

对前面的策略示例进行以下更改：
+ *region*替换为您创建接收规则的 AWS 区域。
+ 将 *111122223333* 替换为您的 AWS 账户 ID。
+ 替换为包含您*rule\$1set\$1name*与电子邮件接收关联的接收规则的规则集的名称。
+ 替换为您*receipt\$1rule\$1name*与电子邮件接收关联的接收规则的名称。

如果您使用 AWS KMS 向启用服务器端加密的 S3 存储桶发送加密消息，则需要添加策略操作。`"kms:Decrypt"`使用前面的示例，将此操作添加到策略中，如下所示：

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
}
```

有关为 AWS KMS 密钥附加策略的更多信息，请参阅*《AWS Key Management Service 开发人员指南*》[AWS KMS中的使用密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 授予 SES 调用 AWS Lambda 函数的权限
<a name="receiving-email-permissions-lambda"></a>

要允许 SES 调用 AWS Lambda 函数，您可以在 SES 控制台中创建接收规则时选择该函数。当您执行此操作时，SES 会自动为此函数添加必要的权限。

此外，也可以使用 AWS Lambda API 中的 `AddPermission` 操作将策略附加到函数。以下 `AddPermission` API 调用可授予 SES 调用 Lambda 函数的权限。有关向 Lambda 函数附加策略的更多信息，请参阅《AWS Lambda 开发人员指南》**中的 [AWS Lambda 权限](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)。

```
{
  "Action": "lambda:InvokeFunction",
  "Principal": "ses.amazonaws.com",
  "SourceAccount": "111122223333",
  "SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name",
  "StatementId": "GiveSESPermissionToInvokeFunction"
}
```

对前面的策略示例进行以下更改：
+ *region*替换为您创建接收规则的 AWS 区域。
+ 将 *111122223333* 替换为您的 AWS 账户 ID。
+ *rule\$1set\$1name*替换为包含您在其中创建 Lambda 函数的接收规则的规则集的名称。
+ *receipt\$1rule\$1name*替换为包含您的 Lambda 函数的接收规则的名称。

## 授予 SES 发布属于不同账户的 Amazon SNS 主题的权限 AWS
<a name="receiving-email-permissions-sns"></a>

要在单独的 AWS 账户中发布针对某个主题的通知，您必须在 Amazon SNS 主题中附加政策。SNS 主题必须与域和接收规则集位于同一区域中。

以下政策授予 SES 使用单独 AWS 账户向 Amazon SNS 主题发布内容的权限。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "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": "444455556666",
                "AWS:SourceArn": "arn:aws:ses:us-east-1:777788889999:receipt-rule-set/rule_set_name:receipt-rule/rule_name"
                }
            }
        }
    ]
}
```

------

对前面的策略示例进行以下更改：
+ *topic\$1region*替换为 AWS 区域 创建 Amazon SNS 主题时使用的。
+ *sns\$1topic\$1account\$1id*替换为拥有 Amazon SNS 主题的 AWS 账户的 ID。
+ *topic\$1name*替换为您要向其发布通知的 Amazon SNS 主题的名称。
+ *aws\$1account\$1id*替换为配置为接收电子邮件的 AWS 账户的 ID。
+ *receipt\$1region*替换为您创建接收规则 AWS 区域 的位置。
+ *rule\$1set\$1name*替换为包含您在其中创建 “发布到 Amazon SNS” 主题操作的接收规则的规则集的名称。
+ *receipt\$1rule\$1name*替换为包含 “发布到 Amazon SNS” 主题操作的接收规则名称。

如果您的 Amazon SNS 主题 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": "*"
        }
    ]
}
```

------