有一种方法可以检索有关域(和子域)的 DNS 记录的所有(TXT)条目吗?
我的目标是验证我的域的配置:www.rosposhop.com 我为某些子域正确设置了多个 SPF 和 DKIM 记录
rosposhop.com
md.rosposhop.com (SPF+DKIM)
mg.rosposhop.com (SPF+DKIM)
(所以我总共有5个TXT项目)
现在,如果我用
dig
或 host -a
询问,我只得到第一个 TXT 项目,而不是我应该拥有 TXT 项目的完整列表。
我哪里错了?
$ dig rosposhop.com TXT
; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> rosposhop.com TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14774
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;rosposhop.com. IN TXT
;; ANSWER SECTION:
rosposhop.com. 2362 IN TXT "google-site-verification=udcP944OqB1PldDn1ML"
;; Query time: 65 msec
;; SERVER: ***********
;; WHEN: Sat Dec 27 09:10:43 CET 2014
;; MSG SIZE rcvd: 123
顺便说一句,如果我及时询问子域名,现在我又只得到第一个条目:
$ dig md.rosposhop.com TXT
返回:
;; ANSWER SECTION:
md.rosposhop.com. 2223 IN TXT "v=spf1 include:spf.man*******"
我再次没有收到 DKIM 信息。 这是一个安全/权限主题? 抱歉我对 DNS 的无知。
谢谢 乔治
通过一次 DNS 查询一次性获取所有信息的方法是错误的。它假设单个区域的数据是 a) 静态的,b) 由单个名称服务器管理。 DNS 对区域数据没有这样的限制。
SPF 和 DKIM(以及 DMARC,如果您想将其混合使用)都在特定域上使用 TXT 记录。无需获取某个域名及其子域名的所有TXT记录即可查看相关配置。
如果您想获取 SPF 和 DKIM 信息,只需查询相应的域即可。假设您正在
md.rosposhop.com
和 mg.rosposhop.com
上进行返回路径域和 DKIM 签名,那么您应该对 上的 TXT 记录感兴趣
md.rosposhop.com
- SPFmg.rosposhop.com
- SPF(selector)._domainkey.md.rosposhop.com
- DKIM(selector)._domainkey.mg.rosposhop.com
- DKIM其中(选择器)是您用于该 DKIM 记录的选择器。对于每个
md.rosposhop.com
和 mg.rosposhop.com
域,您可以有多个选择器。其他域上的 TXT 记录无关。
要获取域的所有记录,您可以使用
AXFR
请求来执行区域传输。这必须发送到该域的权威服务器之一:
dig rosposhop.com axfr @ns52.domaincontrol.com
但是,大多数 DNS 服务器出于安全原因限制区域传输。通常,只有主服务器允许区域传输,并且只允许传输到已知的从服务器。
domaincontrol.com
服务器不允许区域传输,因此如果您尝试此操作,将会收到错误消息。
在某些情况下,您有多个 TXT 条目具有相同的 DNS 条目。例如,通配符和基本 DNS 名称的 LetsEncrypt 密钥验证需要两个 _acme_challenge TXT 条目,对于同一域名具有不同的密钥,如下所述:https://community.letsencrypt.org/t/multiple-challenges-when-requesting -3 个域名的通配符证书/66783。
如果您特别想要所有 DKIM 记录,您可以尝试在 registry.prove.email 上搜索 - 那里有 900,000 个域选择器对。所以并不详尽,但却是一个很好的起点。