Amazon 的 SES 邮件服务需要 DKIM 身份验证。身份验证的一个步骤是将 CNAME 记录添加到您域的 DNS。
不幸的是,CNAME 记录有一个下划线。我的注册商 Network Solutions 不允许在 CNAME 记录中使用下划线。
有解决方法吗?转移到不同的注册商是一种选择,但显然是一个可怕的选择。
在与 Network Solutions 客户服务通话两个多小时后,他们正在为我手动输入 Amazon SES DKIM 身份验证记录。
首先,他们不允许在他们CNAME
的下划线的事实是不正确的行为。
根据 RFC 1034:
不是主机名的名称可以由任何可打印的 ASCII 字符组成。
根据 RFC 4871,DKIM 标准需要下划线:
所有 DKIM 密钥都存储在名为“_domainkey”的子域中。给定具有“example.com”的“d=”标记和“foo.bar”的“s=”标记的 DKIM 签名字段,DNS 查询将针对“foo.bar._domainkey.example.com” .
RFC 1034 描述了 CNAME 记录并指出它CNAME RR
不是(必然) a hostname
,因此应该允许任何可打印的 ASCII 字符。网络解决方案在这方面是错误的。
虽然 DKIM 记录可以存储为TXT
记录,但 Amazon SES 使用 CNAME 记录以便它们可以轮换密钥。如果不是因为 Network Solution 的无能政策,这应该是可能的。
对于这方面的大多数信息,我推荐这个站点,它解释了任何不是的 DNS 条目hostnames
(a 中的字段CNAME
可以,但不一定)应该允许使用下划线。
为了最终让他们手动输入记录,他们需要升级工单。必须通过电话完成,我最初的电子邮件工单得到了令人失望的回复“你需要打电话进来”。
我不得不多次解释其他名称服务器允许在 CNAME 中使用下划线,如果它们不能容纳我们,我们将立即切换。
他们必须与主要帐户持有人(不是我,也不是技术人员)交谈,以“确认”这些 DNS 记录应该到位。尽管他只是打电话来“确认”,但他们还是让他在电话里跑了 70 多分钟。这个确认似乎完全没有必要,因为我的帐户被授权编辑 DNS 记录。
这是一次相当令人沮丧的经历,我计划尽快从网络解决方案迁移。所需的停机时间过去曾劝阻过我们,但在这一点上,我认为这是合理的。
虽然您可能能够说服他们手动输入记录,但如果可能的话,我建议您切换名称服务器。
DKIM 完成了TXT
记录。当然,您可以拥有CNAME
指向记录的记录(或链)TXT
,但直接创建记录更为常见TXT
。
您的 DNS 权威名称服务提供商应该允许您将带有下划线的标签(DKIM 要求)放入您域的区域文件中。如果没有,请选择其他 DNS 名称服务提供商或使用您自己的名称服务器。
您使用的DNS注册商与它无关。注册商不控制域的内容,他们甚至不会意识到它。
可能您的注册商和 DNS 名称服务提供商恰好是同一个组织,但它们是不同的角色,应该单独考虑。
DKIM 需要名为_domainkey
( RFC 4871 ) 的子域(并且下划线对子域完全有效)。
如果您的 DNS 提供商不允许它们怎么办?
例如,对于SendGrid,它会要求您将 CNAMEs1._domainkey.example.com
指向s1.domainkey.u1234567.00000.sendgrid.net
,因此通过以下方式获取 TXT 记录:
$ host -t txt s1.domainkey.u1234567.00000.sendgrid.net
s1.domainkey.u1234567.00000.sendgrid.net descriptive text "k=rsa\; t=s\; p=SOMETHING+VERY+LOOOOOOOONG"
现在为包含内容的子域创建一个 TXT 记录s1._domainkey
(例如,请记住取消转义\
):
k=rsa; t=s; p=SOMETHING+VERY+LOOOOOOOONG
亚马逊论坛 ( https://forums.aws.amazon.com/thread.jspa?threadID=119464 ) 说如果 CNAME 记录不起作用,您可以使用 TXT 记录:
"在我的 DNS 设置中设置一个 TXT 条目,该条目如下所示:名称:._domainkey.mydomain.com 类型:TXT 值:"p=AAZZZZZZEEEEEEERRRRRRRTTTTTTTYYYYYYYYY..","
我还不能让它工作,但我认为这是正确的方向,因为我不太可能能够使用 yahoo et.al。更改其 DNS 策略。