什么是 DNSBL(RBL)?DNS 黑名单的工作原理
DNSBL(基于 DNS 的黑名单,也称 DNS 阻止列表或 RBL)是名单运营方认为属于垃圾邮件或滥用来源的 IP 地址或域名的列表,它以公开方式发布,任何人都可以通过普通的 DNS 查询来检查。邮件服务器会在一个或多个 DNSBL 中查询每个连入的发件方,然后据此拒收邮件、接收邮件,或把结果计入垃圾邮件评分。
本文介绍 DNSBL 查询的工作原理(反转 IP 地址、A 和 TXT 记录、IPv6 半字节格式)、基于 IP 的名单与基于域名的名单的区别、收件方实际如何使用查询结果、黑名单与白名单有何不同、地址为何会被列入,以及在邮件无法送达时,列入问题处于什么位置。本文依据 RFC 5782 和主要名单运营方截至 2026 年 11 月的官方文档整理。
DNSBL 和 RBL 的含义
RFC 5782《DNS Blacklists and Whitelists》使用总称 DNSxL 指代一种 DNS 区域,其记录用于标识名单上的主机。黑名单称为 DNSBL,白名单称为 DNSWL。两者的构建方式相同,区别只在于收件方赋予匹配结果的含义。
RBL 是 Real-time Blackhole List(实时黑洞列表)的缩写。根据该 RFC,第一份此类名单创建于 1997 年,并以这个名称为人所知。严格来说,RBL 指的是那份最初的名单及其后继名单,RFC 还指出该术语在美国是注册服务商标。不过在日常使用中,“RBL”和“DNSBL”几乎可以互换,所以“RBL 是什么”和“DNSBL 是什么”实际上是同一个问题。
RFC 5782 是一份信息性(Informational)文档,而不是互联网标准。它由 IRTF 反垃圾邮件研究组(Anti-Spam Research Group)编写,代表该研究组就提升 DNS 黑名单与白名单之间互操作性的做法所达成的共识。它不描述也不推荐添加或移除地址的政策,RFC 预计这部分内容将由另一份文档说明。实际上,每个运营方都会自行制定列入和解除政策。
DNSBL 查询的工作原理
DNSBL 查询就是普通的 DNS 查询,因此手动检查不需要任何专门软件:任何能解析域名的工具都可以查询名单。不过,名单运营方可能会设定使用条款。例如,Spamhaus 的公共服务器仅对低查询量的非商业用途免费,而且通过公共解析器发出的查询无法得到可靠的应答(见下文)。
IPv4:反转地址并加上区域名
对于 IPv4 地址,将四个八位组倒序书写,再加上名单的区域名。这种结构借鉴自反向 DNS。RFC 5782 的示例中,要在 bad.example.com 的名单中检查 192.0.2.99,需查询:
99.2.0.192.bad.example.comA 记录表示“已列入”,TXT 记录说明原因
- A 记录。每个被列入的条目都必须有 A 记录。按照惯例,其值为 127.0.0.2。这个值是一个信号,而不是地址,不得当作地址使用;名单使用 127.0.0.0/8 范围,是为了避免该值被误用时产生多余的网络流量。
- 未列入。如果地址不在名单上,就不存在相应的记录,因此查询通常返回 NXDOMAIN。
- TXT 记录。DNSBL 应发布说明列入原因的 TXT 记录。客户端必须检查 A 记录,也可以同时检查 TXT 记录。
- 不同子名单返回不同的值。综合名单可以返回不同的 127.0.0.x 值来表示命中了哪份子名单,也可以同时返回多条 A 记录。其含义因名单而异,请务必阅读运营方的文档。我们的DNSBL 返回码指南介绍了常见的返回码。
在终端中查询(此处的区域名仅为示例):
dig +short 99.2.0.192.bad.example.com A
dig +short 99.2.0.192.bad.example.com TXT测试条目
RFC 5782 要求 IPv4 名单中必须包含 127.0.0.2 的条目,且不得包含 127.0.0.1 的条目。客户端应在信任某个区域之前检查这些测试条目,对于应答不正确的区域则不应使用。
IPv6:半字节格式
IPv6 地址需完整写成 32 位十六进制数字,然后逐位(每次一个半字节)倒序排列,各位之间用点分隔,最后加上名单的区域名。RFC 中以 ugly.example.com 上的 2001:db8:1:2:3:4:567:89ab 为例:
b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.8.b.d.0.1.0.0.2.ugly.example.comIPv6 名单必须包含测试条目 ::FFFF:7F00:2(即以 IPv4 映射地址表示的 127.0.0.2),且不得包含 ::FFFF:7F00:1。并非所有名单都支持 IPv6,因此依赖 IPv6 查询之前,请先查看运营方的文档。
基于 IP 的名单与基于域名的名单
根据所收录的内容,名单大致分为两类。
| 类型 | 查询的名称 | 收件方通常检查的对象 |
|---|---|---|
| 基于 IP | 反转后的 IP 地址加区域名 | 连入服务器的 IP;Received 头字段中出现的 IP |
| 基于域名(RHSBL) | 域名加区域名 | HELO 名称、MAIL FROM 域名、邮件正文链接中的域名 |
在 RFC 5782 的域名示例中,要在 doms.example.net 中检查 invalid.edu,需查询 invalid.edu.doms.example.net。基于域名的名单有时也称为 RHSBL(right-hand-side blacklist,右侧黑名单)。其测试条目使用保留名称:名单必须包含 TEST,且不得包含 INVALID。
Spamhaus Domain Blocklist(dbl.spamhaus.org)是一个广泛使用的例子,其文档提到了几个实用要点:
- 它只收录域名。用 IP 地址查询它,总是会返回“已列入”的代码,因此不能把它配置为通用的 IP DNSBL。Spamhaus 建议使用 ZEN(zen.spamhaus.org)进行 IP 查询。
- 可以查询完整的主机名;如果该主机所属的域名被列入,就会匹配。
- 在 SMTP 会话期间,会用它检查 HELO 字符串和 MAIL FROM 域名。邮件被接收后,还会检查邮件头和正文中的域名,例如 URL 和联系地址。
实际影响是:发信 IP 干净并不保证邮件能送达。被列入的发信域名,或邮件中链接的被列入域名,同样可能导致邮件被拦截。
收件服务器如何使用 DNSBL
RFC 5782 描述了典型的配置方式。邮件服务器在每个传入的 SMTP 连接上检查一组已配置的 DNSxL。命中黑名单则拒绝连接,命中白名单则接收。另一种方式是把结果送入评分函数,与其他信号一起综合权衡。在邮件接收之后运行的过滤器,通常从 Received 头字段或正文中的 URI 提取要检查的 IP。
拒收还是评分?
这由收件方选择。SpamCop 自己的 FAQ 称其名单是一种激进的工具,建议对疑似垃圾邮件进行标记或分流,或把名单作为评分中的一个因素,而不是直接拒收邮件。它将拒收设置描述为供无法采用更细致方法的管理员参考的信息。
收件方需要注意的陷阱
- 您是在委托判断。使用 DNSxL 意味着把服务器的部分管理工作交给名单运营方。RFC 指出,您应确保该名单的政策与您自己的政策一致。
- 失效的名单。运营方在关闭名单时,可能会设置一个把所有地址都列入的通配记录。客户端正是通过上文的测试条目来发现这种情况的。
- 缓存。服务器可以缓存查询结果,但必须遵守 TTL 并丢弃过期记录。
- 公共解析器。Spamhaus 的 FAQ 指出,通过 Google Public DNS 发出的查询在大多数情况下会返回“未列入”,从而漏掉真正的列入。127.255.255.x 范围内的代码是错误,例如通过被封锁的公共解析器查询时返回的 127.255.255.254,不得理解为“已列入”。Spamhaus 指出,有些服务器因此误拒了所有邮件,并建议自行运行解析器。
这也是两个检测工具对同一地址给出不同结果的原因之一:它们可能是通过不同的解析器查询的。
黑名单与白名单(DNSBL 与 DNSWL)
DNSBL 和 DNSWL 的查询方式相同,但匹配的含义正好相反。根据 RFC 5782,网络管理员通常用 DNSBL 阻止流量,用 DNSWL 优先接收流量。同一份名单甚至可以在一种场景下用作黑名单,在另一种场景下用作白名单。
| 方面 | DNSBL(黑名单) | DNSWL(白名单) |
|---|---|---|
| 用途 | 拒收或扣分 | 接收或加分 |
| TXT 记录 | 应说明列入原因 | 用处不大,因为 SMTP 无法告诉客户端它为何被接收;但有些名单仍会发布 |
| A 记录的值 | 是否列入,以及属于哪份子名单 | 可以携带信誉或可信度评分 |
dnswl.org(list.dnswl.org)是白名单的一个例子。其文档说明,应答采用 127.0.x.y 的形式,其中 x 为类别,y 为信任级别,从 0(无)到 3(高)。它建议让列入的主机跳过灰名单和黑名单检查,让中、高信任级别的主机跳过垃圾邮件过滤,但绝不跳过病毒扫描。白名单条目能免除多少检查,仍由收件方决定。
IP 或域名被列入的常见原因
每个运营方都有自己的标准,许多运营方不公开具体的触发条件。以下原因均来自运营方公开的文档。
- 垃圾邮件举报和垃圾邮件陷阱。SpamCop Blocking List 收录发送了被 SpamCop 用户举报的邮件的 IP,发往垃圾邮件陷阱(被垃圾邮件发送者收集或创建的地址)的邮件权重更高。其 FAQ 指出,如果没有新的举报,列入只持续 24 小时,举报停止后地址会自动移除。
- 被感染或被入侵的设备。Spamhaus XBL 会根据以下证据自动列入 IP:恶意软件、通过设备中转第三方流量的“免费 VPN”应用、参与暴力破解攻击,或试图使用盗取的凭据中继邮件。如果原因仍然存在,该 IP 下次连接时会被再次列入。
- 配置错误和名单维护不善。Spamhaus CSS 列举了与正向 DNS 不一致的 HELO 名称、被入侵的网站和 CMS、不安全的配置,以及维护不善的邮件列表。它声明必须先查明并纠正原因,才能解除。
- 政策性列入。Spamhaus PBL 收录不应直接发信的地址空间,通常是家庭宽带。Spamhaus 表示,PBL 列入并不是最终用户的任何行为造成的;来自这类地址段的邮件应通过经过认证的 SMTP 服务器发出。
- 共享基础设施。在共享主机上,其他客户的发信行为可能影响您使用的 IP。请参阅共享主机 IP 被列入黑名单时的处理方法。
邮件无法送达时 DNSBL 处于什么位置
DNSBL 列入只是邮件无法送达的可能原因之一,而不是唯一原因。地址错误、邮箱已满、收件方的问题以及缺少身份认证,也都可能导致退信。如果涉及某份名单,退信中通常会写明名单名称或附上查询 URL。
- 阅读退信。记下回复码以及正文中的名单名称或 URL。
- 确定您的发信 IP 和域名。查看邮件头中的 Received 行,或询问服务器的管理人员。
- 一次性检查主要名单。使用黑名单检测工具,然后在运营方自己的查询页面上确认命中结果。
- 消除原因。对照上文列出的原因逐一排查。在原因消除之前提出申请,通常会导致再次被列入。
- 按照该运营方的流程办理。有些名单会自行过期,有些接受解除申请,还有些只接受网络所有者的申请。是否解除始终由名单运营方决定,提出申请并不代表一定会被移除。
收件方也会运行自己的过滤规则,因此列入结束后,邮件未必会立即恢复正常。完整的排查步骤请参阅邮件被列入黑名单:如何解读退信,身份认证请参阅SPF、DKIM 和 DMARC 的设置方法。如果您自己无法查明原因,可以向我们咨询。
常见问题
RBL 和 DNSBL 是一回事吗?
实际上是的。RBL 是 1997 年创建的那份最初名单的名称,RFC 5782 则使用 DNSBL 作为通用术语。如今大多数人会混用这两个词。
查询返回了 127.0.0.2,这是什么意思?
按照 RFC 5782 所述的惯例,127.0.0.2 表示该地址已被列入。综合名单会对不同的子名单使用不同的值,而有些值(例如 Spamhaus 的 127.255.255.x 代码)是错误而不是列入。确切含义请查看运营方的文档。
上了 DNSBL,我的所有邮件都会被退回吗?
不一定。每个收件方自行选择使用哪些名单,以及命中后是拒收还是仅计入垃圾邮件评分。这就是为什么发往某些收件人的邮件会失败,而发往其他收件人的邮件仍能送达。
IPv6 地址可以在 DNSBL 中检查吗?
RFC 5782 定义了一种 IPv6 格式,即把完整地址按十六进制逐位倒序排列。并非所有名单都支持 IPv6,因此请确认您关心的名单是否支持 IPv6。
上了白名单,邮件就永远不会被过滤吗?
不是。白名单条目只是一个信号,收件方可以按自己的判断使用。例如,dnswl.org 建议只对中、高信任级别的条目跳过垃圾邮件过滤,并且绝不跳过病毒扫描。
参考的官方页面
本文中的事实已在发布时对照以下官方页面进行核实。相关政策和行为可能随时变更,恕不另行通知,在依赖重要信息之前,请先查看官方页面。
- RFC 5782: DNS Blacklists and Whitelists
- Spamhaus FAQ: DNSBL Usage
- Spamhaus: Domain Blocklist (DBL)
- Spamhaus: Exploits Blocklist (XBL)
- Spamhaus: Combined Spam Sources (CSS)
- Spamhaus: Policy Blocklist (PBL)
- SpamCop FAQ: What is the SpamCop Blocking List (SCBL)?
- SpamCop FAQ: How do I configure my mailserver to reject mail based on the blocklist?
- dnswl.org: Return codes and recommended usage
相关指南
如何解读 DNSBL 返回码:RFC 5782 中 127.0.0.2 的含义,Spamhaus、SpamCop 和 UCEPROTECT 的返回码,错误码,以及 NXDOMAIN 与 SERVFAIL 的区别。
邮件被黑名单拦截?读懂退信代码,按正确顺序排查原因,判断哪些黑名单真正有影响,并以正确的方式申请移除。
被 Spamhaus 列入黑名单?了解您在哪个列表上(ZEN、PBL、XBL、CSS、SBL、DBL)、返回码的含义,以及每个列表对应的正确移除途径。