我在本地机器上运行自己的 HTTP、SMTP 和 DNS 服务器。确切地说,我在 Ubuntu 上安装了 LAMP、Postfix 和 BIND9。一切都很顺利,只是从我的邮件服务器发送的电子邮件经常被远程 SMTP 服务器拒绝,因为缺少正确的 rDNS (PTR) 记录(基本上,我从来没有费心要求我的 ISP 为我更新它,所以它是一个通用的记录)。所以我终于做到了。我的 ISP 更新了我用于所有服务器的 IP 地址的 rDNS 记录(它们都在一台物理计算机上)。因此,IP 解析为我的邮件服务器的主机名,即:
mail.mysite.com
当我使用“nslookup”命令进行反向 DNS 查找时,首先选择 Google 的 DNS 服务器 (8.8.8.8),然后我得到了正确的主机名。但是当我使用自己的 DNS 服务器时,我得到了 servfail 错误。现在我的每台服务器似乎都正常工作。我没有发现任何异常或任何问题。那么我应该等待 DNS 传播吗(我的 ISP 大约 6 小时前更新了一个 IP)或者我个人是否应该更新我的 DNS 服务器设置或其他设置?
答案1
好的,我是这样解决的:
假设我的 IP 地址是 46.249.xx.yy 在文件 named.conf.local 中我写了有关反向 DNS 区域的内容:
zone "xx.249.46.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.46.249.xx";
};
在“zones”目录中的文件 db.46.249.xx 中我执行了以下操作:
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.xxxxxxxx.com. director.xxxxxxxx.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.
yy IN PTR ns1.xxxxxxxxxx.com.
yy IN PTR mail.xxxxxxxxx.com.
现在,当我重新启动 BIND 时,debug.log 文件中不再出现任何错误,当我运行以下命令时:
nslookup 46.249.xx.yy
然后我得到了两个答案:
ns1.xxxxxxxxx.com
和
mail.xxxxxxxx.com
当我进行检查时:
命名检查区 xxxxxxxxx.com /etc/bind/zones/db.46.249.xx
我明白了。
PS 简而言之,我的反向 DNS 区域文件全乱了,这与我的 ISP 更新他们拥有的我的静态 IP 的 PTR 记录没有任何关系。