RFC 5782:基于DNS的黑名单和白名单
ELI5: 想象一个共享电话簿,标记哪些电话号码是已知的电话推销员。当你接到电话时,查一下号码。DNSBL 的工作原理相同——邮件服务器在基于 DNS 的列表中查找发件人的 IP 地址,以决定该邮件是否可能是垃圾邮件或合法邮件,这一切都在毫秒内完成,使用普通 DNS 查询。
为什么存在这个
垃圾邮件过滤需要关于发送IP地址和域名的实时信誉数据。在DNSBLs之前,每个组织都必须维护自己的黑名单。这无法扩展——有数十亿个IP地址和数千个邮件服务器需要相同的信息。
基于DNS的列表通过将信誉数据发布为DNS记录来解决这个问题。任何邮件服务器都可以在SMTP事务期间以近乎零的延迟查询它们,使用它已经依赖的相同DNS基础设施。RFC 5782记录了这些列表的工作原理,涵盖:
- 用于查找IP地址和域名的DNS查询格式
- 返回代码如何编码列表原因
- 黑名单(DNSBLs)和白名单(DNSWLs)之间的区别
- 列表运营者的运营期望
工作原理
要查询DNSBL,接收邮件服务器反转发送者IP地址的八位组并附加列表的区域名称,然后执行DNS A记录查找。
IP地址查找
要检查203.0.113.42是否在zen.spamhaus.org上被列出:
查询: 42.113.0.203.zen.spamhaus.org A 应答: 127.0.0.2
八位组被反转(就像in-addr.arpa PTR记录一样)。127.0.0.0/8范围内的响应表示IP被列出。特定的返回值编码列表原因。NXDOMAIN响应表示IP未被列出。
返回代码含义(Spamhaus示例)
| 返回代码 | Spamhaus列表 | 含义 |
|---|---|---|
127.0.0.2 |
SBL | 直接垃圾邮件源,已验证 |
127.0.0.3 |
SBL CSS | 由自动化系统识别的垃圾邮件源 |
127.0.0.4 |
XBL (CBL) | 被入侵的主机(恶意软件、僵尸网络、开放代理) |
127.0.0.10 |
PBL | 终端用户IP范围,不应直接发送邮件 |
TXT记录以获取详情
相应的TXT查找返回人类可读的解释,通常包含一个取消列表的URL:
查询: 42.113.0.203.zen.spamhaus.org TXT 应答: "Listed at https://www.spamhaus.org/query/ip/203.0.113.42"
基于域名的查找
某些列表(如Spamhaus DBL或SURBL)列出域名而不是IP。域名直接预置到列表区域:
查询: baddomain.example.dbl.spamhaus.org A 应答: 127.0.1.2 (垃圾域名)
关键技术细节
电子邮件中使用的主要DNSBLs
| 列表 | 类型 | 列出内容 |
|---|---|---|
| Spamhaus ZEN | IP黑名单 | SBL + XBL + PBL的组合(最广泛使用) |
| Spamhaus DBL | 域名黑名单 | 在垃圾邮件内容和标题中发现的域名 |
| Barracuda BRBL | IP黑名单 | 向Barracuda蜜罐发送垃圾邮件的IP |
| SpamCop | IP黑名单 | 由SpamCop用户报告的IP(自动过期) |
| SURBL | URI黑名单 | 在垃圾邮件消息体中发现的域名 |
| dnswl.org | IP白名单 | 已验证的合法邮件发送者(DNSWL) |
查询机制
- 127.0.0.0/8范围内的响应 — IP被列出。特定地址编码原因。
- NXDOMAIN — IP未被列出。这是干净IP的预期响应。
- SERVFAIL / 超时 — 列表无法访问。必须视为"未列出"以避免在中断期间阻止所有邮件。
- 127.255.255.254 — 某些列表为测试查询返回此值以确认您的DNS正常工作。
IPv6支持
IPv6地址被扩展为完整的32个半字节形式,按半字节反转,并附加到区域。例如,2001:db8::1变成:
查询: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.zen.spamhaus.org A
常见错误
- DNS失败时阻止邮件。 如果DNSBL查询超时或返回SERVFAIL,正确的操作是将IP视为未列出。因为列表无法访问而阻止邮件将在列表中断期间造成大量误报。
- 不主动检查自己的IP。 如果您的发送IP落在Spamhaus或Barracuda上,您不会收到通知。使用自动检查定期监控您的IP。
- 忽略PBL列表。 Spamhaus PBL列出了指定用于终端用户访问(住宅宽带、移动)的IP范围。在PBL上不意味着您是垃圾邮件发送者——这意味着您应该通过授权邮件中继发送,而不是直接发送。
- 同时使用过多DNSBLs。 每个列表都有不同的策略、准确性和误报率。使用不知名或维护不良的列表会增加误报。坚持使用知名列表。
- 解决问题后不请求取消列表。 大多数DNSBLs要求您在修复根本问题后提交取消列表请求。某些(如SpamCop)自动过期,但其他(如Spamhaus SBL)需要手动操作。
可交付性影响
- DNSBL列表是可交付性紧急情况。 Spamhaus SBL列表将导致大多数主要邮箱提供商和企业网关立即拒绝。在主要DNSBL上的列表是对您发送基础设施影响最大的单一负面事件。
- 多个列表会加剧影响。 许多垃圾邮件过滤器使用计分系统:列表上的一个DNSBL添加积分,列表上的两个或三个可能会使您超过垃圾邮件阈值,即使仅一个列表不会阻止您。
- DNSWLs提供正面信誉。 在dnswl.org或类似白名单上被列出为您提供正面信誉信号。某些接收系统使用这些来为已知良好发送者快速跟踪递送。
- 共享IP放大风险。 如果您从共享IP地址发送,另一个发送者的不良行为可能导致IP被列出,影响您的可交付性。这是高容量发送者使用专用发送IP的关键优势。
- 监控是必不可少的。 每天检查您的发送IP对主要DNSBLs。许多可交付性监控服务会自动执行此操作。尽早发现列表——在数小时内——可限制损害。