本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
提供 Amazon SES 中您自己的 DKIM 身份验证令牌 (BYODKIM)
作为使用 Easy DKIM 的替代方法,您可以改为使用自己的公有-私有密钥对配置 DKIM 身份验证。此过程称为自带 DKIM (BYODKIM)。
使用 BYODKIM,可以使用单个 DNS 记录为您的域配置 DKIM 身份验证,而不是使用 Easy DKIM,后者要求您发布三个单独的 DNS 记录。此外,使用 BYODKIM,您可以根据需要经常为您的域轮换 DKIM 密钥。
警告
如果您当前启用了 Easy DKIM 并且正在迁移到 BYODKIM,请注意,在设置 BYODKIM 且您的 DKIM 状态处于待定状态时,Amazon SES 将不会使用 Easy DKIM 对您的电子邮件签名。从您进行调用以启用 BYODKIM(通过 API 或控制台)的那一刻到 SES 可以确认 DNS 配置的那一刻之间,SES 可能会在没有 DKIM 签名的情况下发送您的电子邮件。因此,建议使用中间步骤从一种 DKIM 签名方法迁移到另一种(例如,使用启用了 Easy DKIM 的域的子域,然后在 BYODKIM 验证通过后将其删除),或者在应用程序停机期间(如果有)执行此活动。
步骤 1:创建密钥对
要使用自带 DKIM 功能,您需要先创建 RSA 密钥对。
生成的私有密钥必须为 PKCS #1 或 PKCS #8 两种格式之一,使用至少 1024 位 RSA 加密(至多 2048 位),并使用 base64(PEM)
注意
您可以使用第三方应用程序和工具生成 RSA 密钥对,只要私有密钥是使用至少 1024 位 RSA 加密(至多 2048 位)生成并使用 base64 (PEM)
在以下过程中,使用大多数 Linux、macOS 或 Unix 操作系统中内置的 openssl
genrsa
命令创建密钥对的示例代码将自动使用 base64 (PEM)
使用 Linux、macOS 或 Unix 命令行来创建密钥对
-
在命令行中,输入以下命令生成私钥,
nnnn
替换为至少为 1024 且最多 2048 的位长度:openssl genrsa -f4 -out private.key
nnnn
-
在命令行中,输入以下命令可生成公有密钥:
openssl rsa -in private.key -outform PEM -pubout -out public.key
步骤 2:将选择器和公有密钥添加到 DNS 提供商的域配置中
现在您已创建密钥对,您必须将公有密钥作为 TXT 记录添加到您的域的 DNS 配置中。
将公有密钥添加到您的域的 DNS 配置中
-
登录您的 DNS 提供商或托管提供商的管理控制台。
-
将新的文本记录添加到您的域的 DNS 配置中。记录应该使用以下格式:
名称 类型 值 selector
。 _domainkey。example.com
TXT p=
yourPublicKey
在前面的示例中,进行以下更改:
-
selector
替换为标识密钥的唯一名称。注意
少数 DNS 提供商不允许记录名称中包含下划线 (_)。但是,DKIM 记录名称中的下划线是必需的。如果您的 DNS 提供商不允许您在记录名称中输入下划线,请联系提供商的客户支持团队以获取帮助。
-
example.com
用您的域名替换。 -
yourPublicKey
替换为您之前创建的公钥,并添加p=
前缀,如上面的 “值” 列所示。注意
当您将公有密钥发布(添加)到 DNS 提供商时,必须按如下所示进行格式化:
-
您必须删除生成的公有密钥的第一行和最后一行(分别为
-----BEGIN PUBLIC KEY-----
和-----END PUBLIC KEY-----
)。此外,您还必须删除生成的公有密钥中的换行符。产生的值是一个字符串,不包含空格或换行符。 -
您必须包含
p=
前缀,如上表中的 Value(值)列所示。
-
不同的提供商具有不同的 DNS 记录更新过程。下表包含的链接指向几个广泛使用的 DNS 提供商的文档。此列表并不详尽无遗,也不表示认可;同样,如果您的 DNS 提供商未列出,这并不意味着您不能将该域与 Amazon SES 一起使用。
DNS/托管提供商 文档链接 Amazon Route 53
《Amazon Route 53 开发人员指南》中的编辑记录
GoDaddy
添加 TXT 记录
(外部链接) DreamHost
如何添加自定义 DNS 记录?
(外部链接) Cloudflare
在 CloudFlare 中管理 DNS 记录
(外部链接) HostGator
Namecheap
Names.co.uk
更改您的域的 DNS 设置
(外部链接) Wix
在您的 Wix 账户中添加或更新 TXT 记录
(外部链接) -
步骤 3:配置并验证域以使用 BYODKIM
您可以使用控制台或 AWS CLI为新域(即当前不用于通过 Amazon SES 发送电子邮件的域)以及现有域(即您已设置为与 Amazon SES 一起使用的域)设置 BYODKIM。在使用本节中的 AWS CLI 步骤之前,必须首先安装和配置 AWS CLI。有关更多信息,请参阅《AWS Command Line Interface 用户指南》。
选项 1:创建使用 BYODKIM 的新域身份
此部分包含用于创建使用 BYODKIM 的新域身份的过程。新域身份是您之前尚未设置为使用 Amazon SES 发送电子邮件的域。
如果要配置现有域以使用 BYODKIM,请改为完成 选项 2:配置现有域身份 中的过程。
从控制台使用 BYODKIM 创建身份
-
按照创建域身份中的过程操作,当您到达步骤 8 时,请按照 BYODKIM 特定的说明进行操作。
要使用 BYODKIM 创建身份,请访问 AWS CLI
要配置新域,请使用 Amazon SES API 中的 CreateEmailIdentity
操作。
-
在文本编辑器中,粘贴以下代码:
{ "EmailIdentity":"
example.com
", "DkimSigningAttributes":{ "DomainSigningPrivateKey":"privateKey
", "DomainSigningSelector":"selector
" } }在前面的示例中,进行以下更改:
-
example.com
替换为您要创建的域。 -
privateKey
用您的私钥替换。注意
您必须删除生成的私有密钥的第一行和最后一行(分别为
-----BEGIN PRIVATE KEY-----
和-----END PRIVATE KEY-----
)。此外,还必须删除生成的私有密钥中的换行符。产生的值是一个字符串,不包含空格或换行符。 -
selector
替换为您在域名的 DNS 配置中创建 TXT 记录时指定的唯一选择器。
完成后,将文件另存为
create-identity.json
。 -
-
在命令行输入以下命令:
aws sesv2 create-email-identity --cli-input-json file://
path/to/create-identity.json
在前面的命令中,
path/to/create-identity.json
替换为您在上一步中创建的文件的完整路径。
选项 2:配置现有域身份
此部分包含用于更新现有域身份以使用 BYODKIM 的过程。现有域身份是您已设置以使用 Amazon SES 发送电子邮件的域。
从控制台使用 BYODKIM 更新域身份
登录 AWS Management Console 并打开 Amazon SES 控制台,网址为https://console.aws.amazon.com/ses/
。 -
在导航窗格中的 Configuration(配置)下,选择 Verified identities(已验证身份)。
-
在身份列表中,选择身份类型为域的身份。
注意
如果需要创建或验证域,请参阅 创建域身份。
-
在 “身份验证” 选项卡下的 “DomainKeys 已识别邮件 (DKIM)” 窗格中,选择 “编辑”。
-
在 Advanced DKIM settings(高级 DKIM 设置)窗格中,选择 Identity type(身份类型)字段中的 Provide DKIM authentication token (BYODKIM) [提供 DKIM 身份验证令牌 (BYODKIM)] 按钮。
-
对于 Private key(私有密钥),粘贴先前生成的私有密钥。
注意
您必须删除生成的私有密钥的第一行和最后一行(分别为
-----BEGIN PRIVATE KEY-----
和-----END PRIVATE KEY-----
)。此外,还必须删除生成的私有密钥中的换行符。产生的值是一个字符串,不包含空格或换行符。 -
对于选择器名称,输入您在域的 DNS 设置中指定的选择器的名称。
-
在 DKIM 签名字段中,选中已启用复选框。
-
选择 Save changes(保存更改)。
要使用 BYODKIM 更新域身份,请访问 AWS CLI
要配置现有域,请使用 Amazon SES API 中的 PutEmailIdentityDkimSigningAttributes
操作。
-
在文本编辑器中,粘贴以下代码:
{ "SigningAttributes":{ "DomainSigningPrivateKey":"
privateKey
", "DomainSigningSelector":"selector
" }, "SigningAttributesOrigin":"EXTERNAL" }在前面的示例中,进行以下更改:
-
privateKey
用您的私钥替换。注意
您必须删除生成的私有密钥的第一行和最后一行(分别为
-----BEGIN PRIVATE KEY-----
和-----END PRIVATE KEY-----
)。此外,还必须删除生成的私有密钥中的换行符。产生的值是一个字符串,不包含空格或换行符。 -
selector
替换为您在域名的 DNS 配置中创建 TXT 记录时指定的唯一选择器。
完成后,将文件另存为
update-identity.json
。 -
-
在命令行输入以下命令:
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 状态
从控制台验证域的 DKIM 状态
配置域以使用 BYODKIM 后,您可以使用 SES 控制台验证已正确地配置 DKIM。
登录 AWS Management Console 并打开 Amazon SES 控制台,网址为https://console.aws.amazon.com/ses/
。 -
在导航窗格中的配置下,选择已验证身份。
-
在身份列表中,选择要验证其 DKIM 状态的身份。
-
对 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
。
-