邮件信任始于认证

M3AAWG 经典白皮书中文版 · Trust in Email Begins with Authentication, Updated February 2015 · Dave Crocker & Terry Zink 执笔

原文来源:M3AAWG「Trust in Email Begins with Authentication」, Updated February 2015, Edited by Dave Crocker (M3AAWG Senior Technical Advisor) & Terry Zink (Microsoft). © M3AAWG。本文为中文意译,保留全部 RFC 引用和技术示例。

一、执行摘要

互联网的发展让我们能够与世界各地的用户自由交流。遗憾的是,并非所有参与者都是善意的邻居。在检测和过滤问题流量的同时,还有一个互补性的工作方向:识别值得信赖的参与者。用安全术语来说,前者试图识别"坏角色"(Bad Actors),而后者则试图建立区分"好角色"(Good Actors)的方法。

识别好角色可划分为两个活动:

  1. 标识参与者(如发件人或邮件服务运营者);
  2. 评估参与者的可信度

前者是认证(Authentication),后者是声誉评估(Reputation Assessment)。

本白皮书聚焦第一步:对声称对邮件承担责任的参与者身份进行认证。它为理解当前保护互联网邮件的各项努力提供了背景知识,然后深入介绍了最主流的三种机制——SPF、DKIM 和 DMARC。

从宏观角度看,邮件信任的建立包含三个步骤:

  1. 标识(Identification)——确定邮件消息中哪些参与者身份可以被检视;
  2. 认证(Authentication)——验证这些身份声明的真实性;
  3. 声誉评估(Reputation Assessment)——基于认证后的身份,评估其历史行为以决定邮件处理策略。

二、引言

互联网邮件建立在开放设计之上。任何人都可以向任何 SMTP 服务器发送邮件,声明任何发件人身份。从一开始,这一开放性就是邮件系统成功的关键——但它也带来了被滥用的可能性。

早期的防御思路是建立两道防线:

  1. 过滤坏角色——通过内容分析(垃圾邮件过滤器)、发件人黑名单、IP 信誉等手段识别和拦截恶意邮件;
  2. 认证好角色——通过技术手段验证发件人身份的合法性,使接收方能够将声誉判断建立在可验证的身份之上。

这两条防线之间形成了一场持续的"军备竞赛":攻击者不断改进技术绕过过滤器,防御者不断升级检测手段。认证技术的出现为防御者提供了不对称优势——它不再仅仅被动地"猜测"哪些邮件是坏的,而是主动让"好"邮件有机会证明自己。

本白皮书提供一个综合性的认证评估框架,帮助读者理解:

三、基础技术

3.1 电子邮件架构

理解邮件认证之前,有必要回顾邮件系统的基本架构。邮件系统涉及三类主要组件:

一封邮件的典型旅程如下:发件人使用 MUA 撰写邮件,邮件通过 SMTP 提交协议(RFC 5321)发送给发件人域的 MTA。发件人 MTA 通过 DNS 查询目标域的 MX 记录,确定目标 MTA 的地址,并通过 SMTP 将邮件传递过去。目标 MTA 接收邮件后,将邮件投递到收件人的邮箱中,收件人通过 MUA 读取邮件。在此过程中的每一跳,MTA 都会在邮件头部添加一个 Received: 字段,记录该跳的详细信息。

3.2 邮件处理中的多重角色

一封邮件在传输过程中涉及多个参与者,每个参与者都有其对应的标识(identifier)。理解这些标识的区别是理解邮件认证的基础:

头部字段含义说明
From:发件人地址邮件信封内容,由发件人 MUA 设置,可能是伪造的
Sender:实际发送者当邮件以他人名义发送时标注真实发送者
Return-Path:退回路径由目标 MTA 在信封末尾添加,用于退信(NDR)投递
Received:传输记录每跳 MTA 按顺序添加,越靠近顶部的 Received 越新

需要特别强调身份(Identity)与标识符(Identifier)的区别。标识符是一个字符串,如 alice@example.com;身份则是这个标识符所代表的真实参与者。认证所做的就是从标识符出发,验证其是否真的对应了声称的参与者。

3.3 域名系统(DNS)

DNS(Domain Name System)是互联网的名称解析基础设施,它将人类可读的域名(如 example.com)映射为机器可读的 IP 地址或其它资源记录。邮件认证协议高度依赖 DNS:

DNS 中的区域(Zone)是域名空间的一个管理单元。资源记录(Resource Record, RR)是 DNS 中存储数据的容器。SPF 和 DKIM 最常使用 TXT 类型的资源记录。此外,这些协议常在域名中使用下划线子域名(underscore sub-domains),例如 _spf.example.comselector1._domainkey.example.com,以避免与常规 DNS 记录发生冲突。

3.4 认证的承诺

邮件认证的核心承诺是:接收方能够知道一封邮件到底来自哪里。这里的"来自哪里"不是指邮件头部的 From: 字段(它可以被随意伪造),而是指经过技术验证后,接收方可以对发件人的某些属性建立确定性的认知。

这种确定性让声誉系统得以建立。如果接收方无法确定发件人的身份,就无法对其声誉做出判断——每一次评估都只能从零开始。通过认证,发件人的历史行为可以被持续跟踪:一个经过认证的域名如果在过去从未发送过垃圾邮件,它就更有可能被视为可信的发件方。声誉是邮件信任体系中的关键一环。

3.5 认证技术概览

邮件认证领域存在多种技术方案,它们在认证的对象、方法、复杂度等方面各有不同。以下是七种主要的认证技术:

技术类型认证对象核心机制标准化
IP通道认证发送 MTA 的 IP 地址IP 地址匹配(DNSBL / 自定义白名单)非标准
PGP对象认证消息内容端到端数字签名,公钥通过 Web of Trust 分发RFC 4880
S/MIME对象认证消息内容端到端数字签名,公钥通过 X.509 PKI 分发RFC 3851
BATV退回路径认证Return-Path签名信封退回地址,防止退信炸弹非标准/草稿
SPF通道认证发件 IP / 域名DNS 发布授权策略,匹配发件 MTA 的 IPRFC 7208
DKIM对象认证邮件主体+特定头部域名级数字签名,公钥通过 DNS 发布RFC 6376
DMARC策略层From: 域SPF + DKIM 对齐 + 域策略发布 + 报告机制RFC 7489

这些技术可以分为两大类:通道认证(验证传输路径)和对象认证(验证消息内容的真实性和完整性)。以下两节将重点介绍这两类认证的代表性技术:SPF 和 DKIM。

3.6 通道认证(路径注册)基础——SPF 范式

SPF 是通道认证(Channel Authentication)的典型代表。它的核心思想是:域名所有者通过在 DNS 中发布一条 TXT 记录,明确声明哪些 IP 地址被授权代表该域名发送邮件。

SPF 的工作流程如下:

  1. 发件人 MTA 通过 SMTP 将邮件发送到收件人 MTA。
  2. 收件人 MTA 从邮件信封中提取 MAIL FROM(即 Return-Path)中的域。
  3. 收件人 MTA 查询该域的 DNS,获取 SPF 记录。
  4. 收件人 MTA 将发件 MTA 的源 IP 与 SPF 记录中的授权 IP 列表进行匹配。
  5. 如果源 IP 匹配授权列表,SPF 检查通过;否则根据策略(如 -all~all)返回失败或软失败。

SPF 本质上是在回答一个问题:"这个 IP 地址是否有权代表该域发送邮件?"

SPF 的局限性:SPF 仅验证 SMTP 信封域(MAIL FROM),而非邮件头部 From: 字段中用户可见的发件人地址。这意味着攻击者可以注册一个自己的域,在其 SPF 记录中授权自己的服务器,然后在 From: 字段中伪造一个知名企业的域名。SPF 本身无法检测这种「显示名伪造」攻击——这正是 DMARC 试图解决的问题。

3.7 对象(密码学)认证基础——DKIM 范式

DKIM(DomainKeys Identified Mail)是对象认证(Object Authentication)的典型代表。它使用密码学数字签名来验证邮件内容的完整性和声称的发送域。

DKIM 的核心概念是数字签名

DKIM 本质上是在回答:"这封邮件在被签名后是否被篡改过?它是否真的来自声称的域?"

DKIM 提供了非否认性(non-repudiation):一旦 DKIM 签名通过验证,发件方域无法否认该邮件是由其授权系统签发的(前提是私钥未泄露)。这对声誉系统的建立至关重要。

3.8 SPF、DKIM 与 DMARC 的交互

SPF 和 DKIM 是独立的认证机制,它们各自验证不同的东西。DMARC 在此基础上增加了一个策略层,将这两者统一到一个框架中:

DMARC 的对齐(Alignment)概念是理解其价值的关键。SPF 检查的是 MAIL FROM 域,DKIM 检查的是签名域 d=,而普通用户看的是 From: 头部中的域。DMARC 要求 SPF 或 DKIM 的认证域与 From: 域匹配(严格对齐或宽松对齐),从而统一了认证和用户体验。

四、发件人策略框架(SPF)

4.1 认证的身份对象

SPF 认证的身份是 SMTP 信封中的 MAIL FROM 域名(也称为信封发件人域或 Return-Path 域)。注意这个域与用户看到的 From: 头部中的域可能是不同的。

4.2 DNS 查询机制

接收方 MTA 收到邮件后,提取 MAIL FROM 中的域,查询该域的 TXT 记录中是否存在以 v=spf1 开头的记录。如果存在,解析其中的机制和限定符,将发件 MTA 的源 IP 与授权规则进行匹配。

SPF 记录的基本语法如下:

v=spf1 ip4:192.0.2.0/24 include:_spf.example.com ~all

各机制含义:

限定符决定了匹配后的动作:

4.3 实施难点

SPF 在实际部署中面临以下挑战:

4.4 典型 SPF 记录示例

example.com.  TXT  "v=spf1 mx ip4:198.51.100.0/24 include:_spf.thirdparty.com ~all"

此记录含义:授权本域的 MX 服务器和 198.51.100.0/24 网段发送邮件,同时引用第三方服务商的 SPF 策略。未匹配的 IP 将被标记为软失败。

五、域名密钥识别邮件(DKIM)

5.1 认证的身份对象

DKIM 认证的身份是 DKIM 签名头部中 d= 参数声明的域名。该域名是签署邮件并对邮件内容负责的域。

5.2 数字签名与 DNS 查询

DKIM 将密码学签名引入邮件认证,工作流程如下:

  1. 发件方 MTA(或出站网关)使用私钥对邮件的特定头部和主体进行签名;
  2. 签名结果以 DKIM-Signature 头部字段的形式附加到邮件中;
  3. 接收方 MTA 从 DKIM-Signature 头部中提取选择器(s=)和签名域(d=);
  4. 接收方构造 DNS 查询:s._domainkey.d,获取该选择器对应的公钥 TXT 记录;
  5. 接收方使用公钥验证签名,确认邮件未被篡改且签名确实来自声称的域。

5.3 选择器(Selector)与密钥轮转

选择器是 DKIM 管理私钥的关键机制。域名所有者可以为不同的邮件流(如营销邮件、事务邮件、内部邮件)使用不同的选择器,每个选择器对应不同的私钥/公钥对。

选择器的主要用途是支持密钥轮转(Key Rotation)。定期更换签名私钥是一项安全最佳实践,通过部署新选择器、发布新公钥到 DNS、逐步淘汰旧选择器的方式,可以在不影响邮件正常签名的情况下实现密钥的平滑过渡。

5.4 DKIM 签名示例

以下是 DKIM-Signature 头部的实际示例(摘自 RFC 6376):

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
        d=authorscompany.com; i=@authorscompany.com;
        q=dns/txt; s=jan2015; t=1423253481; h=from:to:subject;
        bh=MzBfNjQ1Rjc4OUVhNkMzMkI=;
        b=jBcX7hYKwUoH2JkL9Q8MmZ...

各参数含义: