M3AAWG 停放域名保护最佳实践——防止域名被滥用为邮件发送源

摘要:M3AAWG(Messaging, Malware and Mobile Anti-Abuse Working Group)于2022年发布的《Protecting Parked Domains Best Common Practices》为域名持有者提供了保护停放域名不被滥用的标准操作指南。停放域名(Parked Domains)通常用于防御性注册、品牌保护或未来项目储备,持有人无意使用它们发送或接收邮件。然而,未设防的停放域名极易被第三方利用作拼写相似域名(Typosquatting)攻击的目标,或在SPF/DKIM/DMARC验证中产生误报。本文是该BCP的中文技术翻译与深度解读,指导国内域名持有者通过DNS记录声明域名不发送邮件。

1. 停放域名的定义与安全风险

1.1 什么是停放域名

停放域名是指已被注册但未被实际用于网站托管或邮件通信的域名。典型的停放域名使用场景包括:

共同特征:域名注册有效,但无邮件服务器(MX)、无发送源(SPF/DKIM/DMARC),持有人无意收发邮件。

1.2 未保护停放域名的安全风险

未声明任何DNS记录的停放域名面临三大风险:

  1. 第三方伪造发送:攻击者注册与你停放域名相似的域名(如将example.com注册为examp1e.com),自建邮件服务器使用该域名发送垃圾邮件
  2. DMARC 验证干扰:在部署了严格DMARC策略(p=reject)的邮件环境中,拼写相似域名的认证失败可能被视为源自你主域的攻击,触发不必要的告警
  3. SPF 宽松匹配误判:RFC 7208 定义的 SPF 验证机制中,如果停放域名未发布任何SPF记录,接收MTA可能使用宽松解释(neutral/softfail),无法明确拒绝伪造邮件 [1]

2. 保护机制总览

M3AAWG BCP 建议通过以下五类DNS记录的协同配合,向接收MTA明确声明停放域名不参与任何邮件通信:

记录类型 功能 发布策略
SPF 声明不授权任何IP发送邮件 v=spf1 -all
DKIM 不发布任何DKIM公钥 不创建任何 _domainkey 记录
DMARC 声明严格的邮件认证策略并接收报告 p=reject; rua=mailto:...;
MX (Null MX) 声明不收邮件 MX 0 .
SOA 传递联系信息 在SOA的RNAME字段设置 hostmaster

3. DNS 记录详细配置

3.1 SPF:发布 v=spf1 -all

根据RFC 7208,SPF记录声明哪些IP地址被授权使用该域名发送邮件。对于停放域名,应发布最严格的形式:

example.com.  TXT  "v=spf1 -all"

-all 表示"所有未明确授权的发送方都应被拒绝"(hard fail)。由于停放域名没有任何授权IP,每一封冒用该域名发送的邮件都会被接收MTA判定为SPF失败。比较其他可用选项:

有些人可能担心发布SPF记录会增加DNS查询。实际上,-all 匹配机制直接终止查询流程,不会产生额外的DNS开销 [1] §5.2。

3.2 DKIM:不发布任何记录

M3AAWG BCP 明确建议停放域名不发布任何 _domainkey 子域下的TXT记录。原因:

; 不添加任何类似下面的记录:
; default._domainkey.example.com.  TXT  "v=DKIM1; p=..."

3.3 DMARC:发布 p=reject

DMARC 是声明停放域名不参与邮件通信的最重要的策略记录。M3AAWG BCP 推荐配置:

_dmarc.example.com.  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-rua@example.com; rf=afrf; pct=100"

关键参数:

国内域名持有者应注意:rua邮箱应设置为能够接收大量自动化报告的企业邮箱地址,且应配置独立的邮件过滤规则防止聚合报告被误判为垃圾邮件。对于拥有大量停放域名的组织,建议使用专用报告聚合平台 [2]。此外,发信人应定期检查 DMARC 聚合报告中的发送源 IP——这是发现第三方滥用停放域名的最直接手段。

3.4 Null MX:通过 MX 0 . 声明不收邮件

RFC 7505 定义了 Null MX 机制,通过将MX记录指向一个裸点(.)来声明域名不接受任何邮件:

example.com.  MX  0  .

这一配置告诉所有发送MTA:该域名不提供任何邮件接收服务,任何尝试投递都应被回退。Null MX 的优势:

3.5 SOA 联系信息

虽然SOA记录不是为了邮件安全而设计的,但M3AAWG BCP建议在SOA的RNAME字段(通常格式为 hostmaster.example.com.)中设置有效联系方式,以便邮件系统管理员在发现滥用时联系域名持有者:

example.com.  SOA  ns1.example.com. hostmaster.example.com. (2026072501 3600 900 604800 86400)

4. 完整配置示例

4.1 场景A:纯停放域名(无A/AAAA记录)

最典型的停放域名——仅用于防御性注册,没有任何基础架构:

; DNS 区域文件:example.com
$TTL 3600

@  IN  SOA  ns1.example.com. hostmaster.example.com. (2026072501 3600 900 604800 86400)
@  IN  NS   ns1.example.com.
@  IN  NS   ns2.example.com.

; 不发送邮件 → SPF -all
@  IN  TXT  "v=spf1 -all"

; 不接收邮件 → Null MX
@  IN  MX  0  .

; DMARC 策略 → p=reject
_dmarc  IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-rua@example.com; pct=100"

4.2 场景B:有A记录的停放域名

停放域名配置了A记录(用于展示简单着陆页或停车页),但依然不用于邮件:

; DNS 区域文件:example.com
$TTL 3600

@  IN  SOA  ns1.example.com. hostmaster.example.com. (2026072501 3600 900 604800 86400)
@  IN  NS   ns1.example.com.
@  IN  NS   ns2.example.com.

; 用于HTTP服务(停车页)
@  IN  A    203.0.113.10
@  IN  AAAA 2001:db8::10

; 但绝不用于邮件
@  IN  TXT  "v=spf1 -all"
@  IN  MX   0  .
_dmarc  IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-rua@example.com; pct=100"

4.3 场景C:多域名通配保护

对于拥有数十到数百个停放域名(如品牌变体和国际化域名)的企业,可考虑在DNS模板中统一配置:

; 模板:brand-protection-domains.template
; 适用于所有防御性注册域名
$DOMAIN = DOMAIN_PLACEHOLDER
$DOMAIN.  IN  SOA  ns1.parentcompany.com. hostmaster.parentcompany.com. (NOW 3600 900 604800 86400)
$DOMAIN.  IN  NS   ns1.parentcompany.com.
$DOMAIN.  IN  NS   ns2.parentcompany.com.
$DOMAIN.  IN  TXT  "v=spf1 -all"
$DOMAIN.  IN  MX   0  .
_dmarc.$DOMAIN.  IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-rua@parentcompany.com; pct=100"

使用DNS API自动化此流程,可确保新增的停放域名不会因遗漏配置而被利用。

5. 进阶保护:DNSBL 登录

M3AAWG BCP 还建议在确认域名永远不发送邮件的前提下,考虑将停放域名主动提交到域名黑名单(DNSBL)。尽管这听起来反直觉,但目的是:

常用的域名黑名单:

注意:若未来计划启用停放域名用于邮件发送,必须先申请从这些黑名单中移除,处理周期可能长达数周。

6. 验证配置是否生效

配置完成后应执行以下验证:

# 验证 SPF
dig txt example.com +short
# 预期输出: "v=spf1 -all"

# 验证 Null MX
dig mx example.com +short
# 预期输出: "0 ."

# 验证 DMARC
dig txt _dmarc.example.com +short
# 预期输出: "v=DMARC1; p=reject; ..."

# 验证 DKIM 缺失
dig txt default._domainkey.example.com +short
# 预期输出: (无输出,表示记录不存在)

# 使用第三方工具
# https://www.mail-tester.com 检查域名
# https://dmarcly.com/tools/dmarc-checker DMARC验证

7. 结论

停放域名作为品牌保护和战略储备的重要资产,不应被邮件安全策略忽视。M3AAWG BCP 提供了清晰、可操作的四步方案:发布 v=spf1 -all、不发布DKIM记录、发布 p=reject 的DMARC记录、设置 Null MX。这些措施不仅保护域名免于被第三方滥用,也减少了接收MTA因域名状态不明确而产生的额外安全检查开销。对于邮件服务器运维团队来说,在品牌保护清单中加入停放域名的 DNS 安全配置,是一项低成本高回报的邮件安全基础工作。

参考文献

  1. RFC 7208 — Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1. S. Kitterman. April 2014. §5 (Mechanisms -all, ~all, ?all), §4.6.3 (SPF Record Size Limits and Processing).
  2. RFC 7489 — Domain-based Message Authentication, Reporting, and Conformance (DMARC). M. Kucherawy, E. Zwicky. March 2015. §7 (Aggregate Reports and Reporting), §6 (Policy Evaluation: reject, quarantine, none).
  3. RFC 7505 — A "Null MX" No Service Resource Record for Domains that Accept No Mail. J. Levine, R. Segmuller. June 2015. §3 (Null MX Format and Semantics: MX 0 .).
  4. RFC 1035 — Domain Names — Implementation and Specification. P. Mockapetris. November 1987. §3.3.9 (SOA RDATA Format including RNAME field).
  5. RFC 6376 — DomainKeys Identified Mail (DKIM) Signatures. D. Crocker, T. Hansen, M. Kucherawy. September 2011. §3.3.2 (DKIM Key Record Location and the selector._domainkey naming convention).
  6. M3AAWG. "Protecting Parked Domains Best Common Practices." Messaging, Malware and Mobile Anti-Abuse Working Group, 2022. 原文出处:https://www.m3aawg.org/

引用本文

ztpop.net 知识库编辑. "M3AAWG 停放域名保护最佳实践——防止域名被滥用为邮件发送源" ztpop.net 知识库.

本站技术文章采用 CC-BY 4.0 许可,可自由引用,仅需标注来源 ztpop.net。