正向确认的反向 DNS (fcrdns) 是否仅查找 IP 到主机名,然后查找主机名到 IP,还是也与第一个主机名进行比较(特别是在垃圾邮件过滤中)?
假设我有这些记录:
- reverse.somedomain:127.0.0.1
- mail.somedomain:127.0.0.1
- mail.mailserverdomain:127.0.0.1
- PTR 127.0.0.1:reverse.somedomain
MTA 尝试验证主机的 RDNS 并解析mail.mailserverdomain
为127.0.0.1
,然后反向解析127.0.0.1
为reverse.somedomain
,然后转发reverse.somedomain
到127.0.0.1
。这会是有效的 FCRDNS 吗?还是 PTR 记录需要指向HELO
命令中给出的名称(邮件服务器如何识别自身)?
问题归结为,如果 FCRNDS 使用两个或三个查询,那么序列要么是:
- 得到
HELO mail.senderdomain
- 解析
mail.senderdomain
到IP。 - 解决连接 IP 到
hostname.senderdomain
失败:hostname.senderdomain != mail.senderdomain
或者
- 得到
HELO mail.senderdomain
- 解析
mail.senderdomain
IP - 解析 IP 至
hostname.senderdomain
- 解析
hostname.senderdomain
到同一个IP
成功:hostname.senderdomain
匹配连接 IP,反之亦然。
由于实用检查需要根据 IP 确认HELO
主机名(否则我的邮件服务器可能会在 HELO 中声称是 Google),因此将进行正向查找,将其与连接 IP 进行比较。然后下一步是反向查找,给出连接 IP 的主机名。现在,较短的序列将比较主机名,而较长的序列将进行另一次正向查找并比较 IP。
如果使用第一个序列,这意味着,使用像mail.domain
邮件服务器配置中的功能性主机名,同时使用像在 rDNS 中标识主机的主机名,server123.domain
会使您的邮件被标记为可能的垃圾邮件。
答案1
事实上都不是。
FCRDNS 代表“正向确认反向 DNS”。
它的工作原理是,首先,查找连接 IP 地址的 PTR 记录。如果没有 PTR 记录,则检查立即失败。启用此功能的邮件服务器将拒绝连接,例如从我自己的邮件服务器中截取的这个拒绝:
Sep 18 02:48:10 grummle postfix/smtpd[16577]: NOQUEUE: reject: RCPT from unknown[204.51.178.49]: 450 4.7.1 Client host rejected: cannot find your hostname, [204.51.178.49]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<smtp49.rsend1.com>
由于 204.51.178.49 没有 PTR 记录,因此反向 DNS 检查失败。
第二步是获取返回的主机名,并查找其 IP 地址。该 IP 地址必须与连接到服务器的 IP 地址匹配。这就是转发确认的意思。如果不匹配,我们再次拒绝连接。(很少有人能做到这一点,以至于我在上周的日志中甚至没有一个例子。)