为了实现电子邮件服务器,我希望能够查找域的 DKIM 记录。这两组 DNS 查询有什么区别?我应该为我的电子邮件服务器选择哪一种?为什么?方法 1
> nslookup -q=txt m1._domainkey.amazon.com
Server: 10.0.11.162
Address: 10.0.11.162#53
Non-authoritative answer:
m1._domainkey.amazon.com text = "v=DKIM1\;k=rsa\;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAiSCfuVglLVcKGSFDAPmf1fg/bwnQkgxVkLdTIc1pIOS/K88Pl7p16oS0SW/h2reFQw0QzTEdCNxeXFLXvuoQbwp5lIn5dObz08zRKO3Fc8EOOCrpMq88MARY7glZPsb4l2DnJqwBtqGI1etN2trLbucmzSS9V89VQKmo0jiU7wIDAQAB"
方法 2
> nslookup -q=ns amazon.com
Server: 10.0.11.162
Address: 10.0.11.162#53
Non-authoritative answer:
amazon.com nameserver = ns1.amzndns.net.
amazon.com nameserver = ns2.amzndns.org.
amazon.com nameserver = ns2.amzndns.co.uk.
amazon.com nameserver = ns1.amzndns.org.
amazon.com nameserver = ns2.amzndns.com.
amazon.com nameserver = ns2.amzndns.net.
amazon.com nameserver = ns1.amzndns.co.uk.
amazon.com nameserver = ns1.amzndns.com.
Authoritative answers can be found from:
> nslookup -q=txt m1._domainkey.amazon.com ns1.amzndns.net
Server: ns1.amzndns.net
Address: 156.154.65.10#53
m1._domainkey.amazon.com text = "v=DKIM1\;k=rsa\;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAiSCfuVglLVcKGSFDAPmf1fg/bwnQkgxVkLdTIc1pIOS/K88Pl7p16oS0SW/h2reFQw0QzTEdCNxeXFLXvuoQbwp5lIn5dObz08zRKO3Fc8EOOCrpMq88MARY7glZPsb4l2DnJqwBtqGI1etN2trLbucmzSS9V89VQKmo0jiU7wIDAQAB"
编辑 1:我还想知道,如果我采用方法 2,是否应该查询每个名称服务器?如果其中一个服务器缺失该信息怎么办?
答案1
为了确保万无一失,Amazon 运行了其名称服务器的八个副本。主服务器似乎是另一个服务器:
> nslookup -type=SOA amazon.com
Non-authoritative answer:
amazon.com
primary name server = dns-external-master.amazon.com
responsible mail addr = root.amazon.com
serial = 2010176184
refresh = 180 (3 mins)
retry = 60 (1 min)
expire = 3024000 (35 days)
default TTL = 60 (1 min)
因此,我们可以猜测,指定的所有八个名称服务器实际上都是指定为授权开始的主服务器的副本。
从功能上讲,这两个选项几乎没有区别。因为它们都是副本,所以查询八个中的哪一个应该没有区别。第一个选项要求您的本地 DNS 中继报告它最近请求域密钥记录的八个中的哪一个,或者如果失败,则任意选择一个并报告。第二个选项要求您的本地 DNS 请求名称服务器列表,然后您自己选择其中一个并请求该名称服务器保存的域密钥记录。最后,您将得到相同的响应,但第一个选项对您来说实现起来要简单得多,并且可能更好地利用了 DNS 查询的缓存特性。
答案2
两者的主要区别在于速度。两种方法实现相同的目的,但方法 2) 意味着对于每个查询,您都需要向权威名称服务器进行外部 DNS 查询。
方法 1) 将让您的本地 DNS 服务器执行其任务,例如,处理一次向权威服务器询问结果,然后在记录的 TTL 保留时对该信息的每个未来请求都从本地缓存返回结果,这样速度要快得多。
当然,实际上两者之间的时间差以毫秒为单位,对于您的本地 DNS 服务器来说可能是一位数,而对于权威服务器来说则至少是两位数。但是,如果您每小时从特定域收到数百/数千条消息,而对于一些大型提供商(例如 gmail.com、amazon.com 等)来说,这并非不可能,那么时间上的微小差异可能会累积成严重的延迟。而且由于您检索的 DKIM 记录很少会发生变化,因此这种延迟几乎没有任何好处。
答案3
DKIM 记录通常可通过全球 DNS 获得。无需查询权威 NS。所有查询都应给出相同的结果(就像您的情况一样)。