2024年5月25日发(作者:)

邮件拒收与DNS劫持

最近接到了一些反馈说,在使用我们的RBL时,会拒绝所有入站信件。据我们判

断,应该是查询者使用了具有DNS劫持的DNS服务器所导致。

首先,我们先简单说一下RBL的原理。目前用于垃圾邮件过滤的RBL服务,

应该称之为基于DNS的实时黑名单查询,也就是说,这个服务是通过DNS协议来

完成的。

具体而言,当一个客户端希望查询某个IP地址(如11.22.33.44)是否在某

个RBL(如)中 是,其实际上是查询如下地址是否存在解

析: . (IP地址逆转附加在RBL地址后)。

DNS的解析分为几种类型,对于RBL查询,通常是查询这个地址是否存在A记录、

TXT记录或者任意(ANY)记 录。

如果该地址被列入了这个RBL,那么查询会返回一个具体的解析结果,根据

RBL和查询的不同,可以返回一段文本,也可以返回一个或几个IP地 址,也可

以同时返回文本和IP。返回的文本通常是一个说明,用来说明这个IP地址被列

入了哪个RBL,具体信息去哪里查询等。返回的IP地址并不具有实际 意义,只

是标识该查询有结果,通常这个IP地址是一个保留IP段的地址,如127.0.0.1、

127.0.0.2等。

如果该地址没有被列入这个RBL,那么该查询会返回一个查询错误

(NXDOMAIN),表示该地址未列入。DNS劫持就发生在这里,具体情况我们下面再

详细解释。

举例说明这个查询过程:

当查询的IP地址不在RBL中时,返回状态为MXDOMAIN。

# dig .

; <<>>DiG 9.3.3rc2 <<>> .

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 58553

;; flags: qrrdra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;. IN A

;; AUTHORITY SECTION:

. 3600 IN SOA

. . 2008061006 14400 3600 14400 3600

;; Query time: 8 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Tue Jun 10 09:28:55 2008

;; MSG SIZE rcvd: 90

当查询的IP地址在RBL中时,返回状态为NOERRO,并给出具体的结果:

127.0.8.2(这里使用RBL的测试地址127.0.0.2,通常RBL都会提供一个特定地

址,用于测试RBL是否工作)。

# dig .

; <<>>DiG 9.3.3rc2 <<>> .

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5032

;; flags: qrrdra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 0

;; QUESTION SECTION:

;. IN A

;; ANSWER SECTION:

. 10800 IN A 127.0.8.2

;; AUTHORITY SECTION:

.

.

.

.

.

.

.

.

.

.

.

.

10800 IN NS

10800 IN NS

10800 IN NS

10800 IN NS

10800 IN NS

10800 IN NS

;; Query time: 3 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Tue Jun 10 09:31:01 2008

;; MSG SIZE rcvd: 172