本页目录
普通 DNS 将名称解析为地址。反向 DNS(PTR)则正好相反,它回答的问题是:“哪个主机名属于 203.0.113.10?”邮件服务器在每次收到连接时都会进行这一查询,它还能让日志和 traceroute 结果更易读。服务器上的每个地址都可以免费设置反向 DNS。
什么是 PTR 记录
反向查询使用专用的区域。对于 IPv4,地址按倒序写在 in-addr.arpa 下;对于 IPv6,每个十六进制数字按倒序写在 ip6.arpa 下。记录类型为 PTR:
10.113.0.203.in-addr.arpa. PTR mail.example.com.这些区域归 IP 地址段的持有者所有,对于您服务器的地址而言,持有者就是 DediJet。因此,您需要在 DediJet 控制面板中设置 PTR,而不是在域名的 DNS 服务商处设置。正向记录(A 和 AAAA)仍在您的 DNS 服务商处管理。
邮件服务器为何需要正向确认的反向 DNS
接收方邮件服务器会对连入的 IP 地址检查两项内容:
- 该地址有 PTR 记录,例如
mail.example.com。 - 该主机名通过其
A或AAAA记录解析回同一地址。
两者一致时,该地址即具备正向确认的反向 DNS(FCrDNS)。大型邮箱服务商要求发件方具备 FCrDNS,否则会拒收邮件或将其归入垃圾邮件;许多自建邮件服务器也会强制执行这一检查,Postfix 通过 reject_unknown_client_hostname 实现。请使用与邮件服务器在 HELO/EHLO 问候语中所声明名称相同的名称,该名称在 Postfix 中由 myhostname 设置。
设置 PTR 记录
先创建正向记录。在您的 DNS 服务商处,通过一条
A记录将mail.example.com指向203.0.113.10,并为您将用于发信的 IPv6 地址添加一条AAAA记录。使用dig +short mail.example.com A检查能否正常解析。设置反向记录。在控制面板中打开该服务器,然后选择“反向 DNS”。选择地址,并输入主机名
mail.example.com。验证记录,方法如下文所示。
如需管理大量地址,或在自动化部署脚本中设置 PTR 记录,请使用 DediJet API:它提供与控制面板相同的反向 DNS 设置。
验证记录
如果缺少查询工具,请先安装:Ubuntu 和 Debian 上为 apt install -y bind9-dnsutils,AlmaLinux 和 Rocky Linux 上为 dnf install -y bind-utils。然后运行:
dig -x 203.0.113.10 +short
host 203.0.113.10
dig +short mail.example.com A前两条命令应返回 mail.example.com(dig 输出时末尾会带一个点),第三条应返回 203.0.113.10。当正反两个方向一致时,该记录即为正向确认的记录。
生效时间与缓存
更改发布后,已经查询过旧值的解析器会继续返回旧值,直到其 TTL(生存时间)到期。TTL 是完整应答中第二列的数字:
dig -x 203.0.113.10 +noall +answer10.113.0.203.in-addr.arpa. 3600 IN PTR mail.example.com.本例中 TTL 为 3600 秒,因此缓存了旧应答的解析器最长可能在一小时内继续返回旧值。如需在不受任何缓存影响的情况下查看当前值,请使用 dig +trace -x 203.0.113.10 从根服务器开始逐级跟踪委派。
IPv6 的反向 DNS
每个 IPv6 地址都有各自的 PTR 记录,没有人会为整个 /64 填满记录。请为实际使用的地址设置记录,至少要为邮件服务器的发信地址设置。dig -x 会为您生成冗长的 ip6.arpa 名称:
dig -x 2001:db8:1234:5678::25 +short即使您从未打算使用 IPv6,它对邮件也很重要:当双方都支持 IPv6 时,您的邮件服务器可能会通过 IPv6 投递,接收方服务器随后就会检查该 IPv6 地址。您可以为该地址设置 PTR 和匹配的 AAAA 记录,并在 Postfix 中用 smtp_bind_address6 固定发信地址;也可以用 inet_protocols = ipv4 让邮件服务器只使用 IPv4。如需添加专用地址,请参阅配置您的 /64 IPv6 子网。
常见错误
- 没有匹配的正向记录。PTR 指向的名称没有
A或AAAA记录,或者该名称解析到了其他地址,导致 FCrDNS 校验失败。 - 使用裸域名。
example.com通常指向您的网站,而网站往往托管在其他地方。请使用专用主机名,例如mail.example.com。 - 问候名称不匹配。邮件服务器在问候时自称
localhost,或使用与 PTR 不同的其他名称。 - 邮件从其他地址发出。PTR 设置在主 IP 上,但邮件实际从某个 IPv6 地址或额外 IPv4 地址发出。请在邮件日志中检查源地址。
- 对反向 DNS 期望过高。它不会影响网站或搜索排名,也不能替代 SPF、DKIM 或 DMARC。
SPF、DKIM 和 DMARC 简介
反向 DNS 用于标识服务器。另外三种在您的 DNS 服务商处设置的 DNS 记录,用于验证您域名的邮件:
- SPF 列出允许代表该域名发信的地址,以
TXT记录的形式设置在example.com上:v=spf1 ip4:203.0.113.10 ip6:2001:db8:1234:5678::25 -all。 - DKIM 为每封邮件签名。密钥对由您的邮件软件(OpenDKIM、Rspamd 等)生成;公钥放在
selector._domainkey.example.com的TXT记录中。 - DMARC 告诉接收方在 SPF 和 DKIM 检查失败时应如何处理,以及将报告发送到哪里。先在
_dmarc.example.com创建一条内容为v=DMARC1; p=none的TXT记录,再添加一个指向您自己掌控的报告邮箱的rua标签,待报告显示一切正常后,再改为quarantine或reject。
运行邮件服务器还意味着不能对陌生人开放:根据可接受使用政策,禁止开放中继(open relay)。
仍未解决?
如果控制面板不接受您的主机名,或 TTL 到期后新记录仍未生效,请在技术支持页面提交工单,并附上地址、主机名以及 dig -x 的输出。