授权的服务器可以发送不需要的邮件。有效的签名可以属于与收件人看到的不同的域。每项检查回答关于邮件的不同问题。
每项检查证明了什么?
SPF 检查发送 IP,DKIM 检查签名,DMARC 将通过结果与可见的 From 域关联。
| 检查项 | 检查的身份 | 通过时证明了什么 | 不能证明什么 |
|---|---|---|---|
| SPF | Envelope-from 域,通常用于退信 | 连接 IP 已被该域的策略授权。 | 可见的 From 域或邮件的完整性。 |
| DKIM | 签名中 d= 值对应的签名域 | 签名可通过其发布的公钥和签名内容验证。 | 邮件的每个部分都已签名,或收件人需要该邮件。 |
| DMARC | 可见的 From 域 | 至少有一个通过的 SPF 或 DKIM 结果与该域对齐。 | 保证送达或进入收件箱。 |
SPF 如何工作?
接收方将连接服务器的 IP 与 DNS 中为 envelope-from 域发布的 SPF 策略进行比对。由于 SPF 不检查邮件内容,接收方可以在收到邮件正文之前完成该检查。
- 你发布授权使用该域的服务器或服务。
- 接收方查找策略,并根据连接 IP 评估其规则。
- 接收方将结果与自身的接受和过滤策略结合使用。
如果校友邮箱在不更改 envelope-from 地址的情况下将邮件转发给其他服务商,转发 IP 可能缺少授权。邮件列表重新发送邮件时也会产生同样的问题。转发方可以使用 Sender Rewriting Scheme (SRS),将 envelope-from 地址更改为自己能验证的域。
SPF 记录指定授权的发送方。嵌套的服务商策略会计入 DNS 查找限制。
DKIM 如何工作?
你的发送服务器使用私钥对邮件内容进行签名。接收方使用 DNS 中对应的公钥来验证该签名。
签名通过 d= 标识签名域,通过 s= 标识密钥选择器。选择器指明哪条 DNS 记录包含公钥。接收方使用该域和选择器查找公钥并验证签名。
单纯转发不会使 DKIM 失效,因为该检查不依赖转发服务器的 IP。修改已签名的内容(例如添加邮件列表页脚)可能导致签名失效。签名验证其覆盖的内容,但不加密邮件。
DMARC 如何关联这些身份?
DMARC 要求有一个通过的 SPF 或 DKIM 结果,其域与可见的 From 域对齐。任一对齐的通过即满足要求。
例如,一封显示 From: billing@example.com 的邮件可以在宽松对齐下通过 send.example.com 的 SPF。带有 d=example.com 的 DKIM 签名通过同样可以对齐。unrelated.example 的验证通过并不意味着它与 example.com 对齐。
你发布 DMARC 策略来请求对验证失败邮件的处理方式和身份验证报告。参与的接收方提供报告;没有报告并不能证明没有邮件使用你的域。
你应该为 Bird 配置什么?
你为发送域发布 DKIM、return-path CNAME 和 DMARC。return-path CNAME 指向 Bird 的退信基础设施,它提供 SPF 授权,无需额外的 apex SPF 记录。
从 dns_records 复制记录。检查 capabilities.sending.status 的发送就绪状态。其值表示你接下来需要做什么:
| 状态 | 含义与操作 |
|---|---|
pending | 验证尚未运行或正在运行;等待结果。 |
verified | 该功能的 DNS 记录与预期值匹配。 |
warning | 之前验证通过的记录不再匹配;在宽限期结束前修复。发送尚未受影响。 |
failed | DNS 值有误;请更正。 |
temporary_failure | DNS 查找临时失败;验证将自动重试。 |
not_configured | 该功能尚未为此域配置。 |
应该使用哪些检查?
将 SPF 和 DKIM 与 DMARC 配合使用,使经过验证的身份与收件人看到的域关联。
- 使用 SPF 授权 envelope-from 域的发送基础设施。
- 使用 DKIM 签名外发邮件并发布验证密钥。
- 发布 DMARC,审查报告的身份验证失败,在实施隔离或拒绝之前修正合法的发送方。