我想为SES验证我的域,并且我已经包括SES给我的TXT记录。
然而,我已经尝试了2-3次,SES总是报告失败。我怀疑是因为TXT值不正确。当我尝试dig _amazonses.domain.co txt
时,它会导致
;; ANSWER SECTION:
_amazonses.domain.co. 300 IN TXT "v=spf1 include:_amazonses.com a mx ~all"
根据我所读到的,TXT值应该是SES给出的值?
我认为当前的TXT值是因为我的域提供商有2个现有的TXT记录:
TXT <blank> v=spf1 include:_amazonses.com a mx ~all
TXT * v=spf1 include:_amazonses.com a mx ~all
我应该删除这些记录以进行验证吗?
还要注意,我的两个A记录都指向我的EC2 IP。
A <blank> 1.2.3.4
A * 1.2.3.4
谢谢你的回答。
我发现了两篇非常好的文章,帮助我最终验证了我的域所需的所有记录:
这些在这里:
亚马逊:
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/domain-verification-problems.html#domain-验证检查dns
您可以使用以下程序检查您的亚马逊SES域验证TXT记录是否正确发布到您的DNS服务器。此过程使用适用于Windows和Linux的nslookup工具。在Linux上,您也可以使用dig。
这些指令中的命令是在Windows7上执行的,我们使用的示例域是ses-example.com。
在这个过程中,您首先找到为您的域提供服务的DNS服务器,然后查询这些服务器以查看TXT记录。您查询为您的域提供服务的DNS服务器,因为这些服务器包含您的域的最新信息,这些信息可能需要时间才能传播到其他DNS服务器。
要验证您的域验证TXT记录是否已发布到DNS服务器
Find the name servers for your domain by taking the following steps.
Go to the command line. To get to the command line on Windows 7, choose Start and then type cmd. On Linux-based operating systems, open a terminal window.
At the command prompt, type the following, where <domain> is your domain. This will list all of the name servers that serve your domain.
nslookup -type=NS <domain>
If your domain was ses-example.com, this command would look like:
nslookup -type=NS ses-example.com
The command's output will list the name servers that serve your domain. You will query one of these servers in the next step.
Verify that the TXT record is correctly published by taking the following steps.
At the command prompt, type the following, where <domain> is your domain, and <name server> is one of the name servers you found in step 1.
nslookup -type=TXT _amazonses.<domain> <name server>
In our ses-example.com example, if a name server that we found in step 1 was called ns1.name-server.net, we would type the following:
nslookup -type=TXT _amazonses.ses-example.com ns1.name-server.net
In the output of the command, verify that the string that follows text = matches the TXT value you see when you choose the domain in the Identities list of the Amazon SES console.
In our example, we are looking for a TXT record under _amazonses.ses-example.com with a value of fmxqxT/icOYx4aA/bEUrDPMeax9/s3frblS+niixmqk=. If the record is correctly published, we would expect the command to have the following output:
_amazonses.ses-example.com text = "fmxqxT/icOYx4aA/bEUrDPMeax9/s3frblS+niixmqk="
GoDaddy:
https://www.godaddy.com/community/Managing-Domains/TXT-record-not-found/m-p/129225/highlight/true#M25042
我也有同样的问题。我从另一个主机转移了我的域。转移后,我的亚马逊SES域验证(TXT记录)和DKIM记录(CNAME)不再经过验证,即使是在我将它们从以前的DNS主机输入GoDaddy DNS区域后也是如此。
当我在命令行工具(Mac终端或Windows cmd)中使用以下代码执行DNS检查时:
nslookup-type=TXT _amazones.yourdomain.com yournameserver.com
我收到了以下结果:
**服务器找不到_amazones.yourdomain.com:NXDOMAIN
正如我所发现的(以及其他人所提到的),这是因为GoDaddy将您的域附加到TXT名称条目的末尾。因此,如果您将TXT名称输入为:
_amazones.yourdomain.com
实际记录为:
_amazones.yourdomain.com.yourdomain.com
(这意味着亚马逊SES找不到记录,因为他们正在搜索_amazones.yourdomain.com,因此无法验证)
您可以通过NSLOOKUP检查双域记录来验证这一点。对于您的TXT记录:
nslookup-type=TXT _amazones.yourdomain.com.yourdomain.com yournameserver.com
请确保用实际的名称服务器替换您的nameserver.com。查找您的名称服务器:
nslookup-type=NS yourdomain.com
如果您的域名被重复,这应该会返回类似以下内容:
服务器:yournameserver.com地址:12.12.12.12#53(IP地址)
_amazones.yourdomain.com.yourdomain.com text="your_text_code_will_appear_here">
并搜索DKIM:
主机-t CNAME replace_this_with_your_DKIM_value_domainkey.yourdomain.com.yourdomain.com
其他论坛建议放置句号在你的域的末尾,以防止GoDaddy再次自动添加你的域,但我发现这对GoDaddly不起作用。
相反,您必须从TXT名称和CNAME名称中删除您的域。与亚马逊SES管理控制台的建议不同:TXT名称*:_amazones.yourdomain.com
输入:TXT名称*:_amazones
这同样适用于DKIM CNAME条目。而不是:名称:big_long_code_here_domainkey.yourdomain.com
请输入以下内容:名称:big_long_code_here_域密钥
这些值保持不变。我看到一些论坛上说,你必须用双引号(")输入你的价值观。但我没有这么做,结果很好——然而,我确实把我的gmail SPF记录TXT值用双引号括起来了_(ツ)_/。
等待一段时间,让它们传播,然后用NSLOOKUP再次检查(这次没有重复您的域两次):
对于TXT记录:
nslookup-type=TXT _amazones.yourdomain.com yournameserver.com
对于特定CNAME(DKIM)记录:
主机-t CNAME replace_this_with_your_DKIM_value_domainkey.yourdomain.com
(替换要检查的三条记录中每一条的DKIM代码)。
或者,使用在线DNS检查工具(如https://dnschecker.org)查看您的更改是否开始在全球传播(在文本输入中输入_amazones.yourdomain.com执行TXT搜索/或通过输入执行DKIM搜索
用_your_DKIM_value替换his_walue_domainkey.yourdomain.com)。如果是,亚马逊SES验证您的TXT和DKIM条目应该是时间问题。
这对我很有效,希望能有所帮助——我试着简单地向像我这样的人解释(那些不知道自己在做什么,边走边学的人)。干杯
(附言:亚马逊的"付费"支持无法向我提供这些信息(我想每个DNS主机都略有不同),我不得不反复尝试)。
亚马逊SES域验证可能被卡在"待验证";或在";失败";以下一个或多个原因的验证状态:
- TXT记录包含额外字符或缺少字符
- 您的DNS提供商会自动将顶点域添加到DNS记录的末尾
- TXT记录尚未添加到委派的名称服务器中
确认您的记录没有任何这些问题后,您可以在亚马逊SES上重试域验证。
检查TXT记录是否包含其他字符或缺少字符。使用诸如dig或nslookup之类的DNS工具测试您的TXT记录。在macOS或Linux操作系统上,运行dig命令:
注意:将_amazones.example.com替换为您在Amazon SES中的TXT记录名称。
$ dig TXT _amazonses.example.com +short
在Windows操作系统上,运行nslookup命令。
阅读完整的亚马逊文章在亚马逊SES域验证可能会被困在";待验证";或在";失败";以下一个或多个原因的验证状态:
- TXT记录包含额外字符或缺少字符
- 您的DNS提供商会自动将顶点域添加到DNS记录的末尾
- TXT记录尚未添加到委派的名称服务器中
确认您的记录没有任何这些问题后,您可以在亚马逊SES上重试域验证。
检查TXT记录是否包含其他字符或缺少字符。使用诸如dig或nslookup之类的DNS工具测试您的TXT记录。在macOS或Linux操作系统上,运行dig命令:
注意:将_amazones.example.com替换为您在Amazon SES中的TXT记录名称
$dig TXT _amazones.example.com+短
在Windows操作系统上,使用nslookup命令。
根据我的经验,请检查您的DNS提供商是否自动将顶点域添加到DNS记录的末尾。只需dig
,而无需您的域名,并最终获得您的TXT记录。
更多信息,请访问https://aws.amazon.com/it/premiumsupport/knowledge-center/ses-domain-stuck-pending-verification/#:~:text=简短的%20描述,更多的%20以下的%20原因%3A&text=您的%20DNS%20提供商%20自动%20添加到%20委派的%20名称%20服务器。
首先,您需要确定在哪里进行该条目。如果你在GoDaddy
中购买了域,但托管在1and1
中,并且你给了1and1
的nameserver
,那么你必须在1and1
DNS而不是Godaddy
中添加这些详细信息。
如果您在GoDaddy
中购买了域并在1and1
中托管,但已将A
记录从GoDaddy
重定向到1and1
,而不是nameserver
,则必须添加GoDaddy
。
在大多数情况下,在DNS中添加SES相关设置很简单。只需添加SES给出的TXT名称和值。即使是DKIM设置。
但并非所有服务器都是这样。
给定SES字符串:
_amazonses.yourdomain.com Pe82YD6rnCI0AXMHIZv8v0h/thYRZk97YCuQUA=
您必须在GoDaddy DNS设置TXT记录中输入以下内容:
_amazonses Pe82YD6rnCI0AXMHIZv8v0h/thYRZk97YCuQUA=
在1和1或VPSLink等中,您必须输入提供的全文。只是在GoDaddy中不同。它添加域名本身。
要验证域,您不需要SPF,而是需要亚马逊提供的自定义TXT记录。查看文档,网址:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html