域名与 DNS2 分钟阅读·186 字

如何配置邮件转发而不损害送达率

核心导读与要点提炼

转发就是一跳你无法控制的链路,而这一跳恰恰是 SPF 所校验的对象。业务邮箱该如何转发,以及什么时候干脆自建邮箱。

把业务邮箱转发到个人收件箱,是小企业使用域名时最常做的事之一,也是最容易悄悄做错的事之一。

首先必须理解的那一件事

转发从结构上就会破坏 SPF。 SPF 是一份授权名单:它列出哪些服务器被允许代表你的域名发信。转发服务收到你的邮件后,用它自己的服务器重新发出,因此最终收件方看到的那台服务器并不在你的名单上——尽管邮件本身没有任何问题。

DKIM 是部分转发邮件仍能送达的原因。签名随邮件内容一起传输,因此在干净的转发中毫发无损。DMARC 则用 From: 域名对齐来判定这对记录,而转发邮件通常在 SPF 上对齐失败,却能在 DKIM 上通过。

这正是「我发给某个人的邮件能到,走邮件列表就发不到」的机制所在:记录没有变,路径变了。

三种做法,以及它们各自是什么

做法邮箱由谁持有送达能力适用场景
在邮件服务器上做真正的转发服务商因多一跳而减弱你需要这个地址通往一个团队收件箱,而不是它本身成为一个邮箱
转发型别名服务商同上这个地址是联络入口,而不是工作信箱
在域名上托管邮箱你完整的 SPF 与 DKIM这个地址是一种真实身份:销售、客服、某个人

第三种才值得那份配置。如果这个地址印在名片上、客户会写信进来并期待有人回复,那它就是一个邮箱,就应该像一个真正的邮箱那样工作。

配置步骤

  1. 先把记录准备好。 域名在本站注册时,配置流水线会连同解析区、NS 与证书一起发布 SPF、MX 与 DMARC。无需任何人手动编辑区域文件,邮件从第一封起就在认证。
  2. 先决定这个地址是什么。 一个联络入口,还是某人的工作信箱?答案决定了你该转发还是该托管。
  3. 要转发就转发。 在邮件服务里把别名指向目标地址,并且接受上面那条 SPF 的提醒——转发邮件之所以能到,靠的是 DKIM,而不是 SPF。
  4. 如果自建邮箱,就用域名发信。 从这个地址发出,而不是发到它。回信若来自个人邮箱,在所有过滤器看来都是另一个发件人。
  5. 不要手工改动平台维护的记录。 这些记录由平台替你维护,因此手工加一条重复记录不是微调,而是冲突:同一名称下出现两条 SPF 或两条 DMARC,对收件方和我们都是歧义。如果你需要平台没有发布的记录,请把它加在现有记录旁边,而不是覆盖上去。
  6. 检查第一封邮件。 从外部发一封,并以陌生人的方式去读:邮件头里的 SPF 与 DMARC 结果,是这些记录正确的证据。邮件头里的 DKIM 描述的是原始发件人,不是我们的记录。

这些记录长什么样

域名在我们这里注册时,下面三条会被写进它的解析区,其中 yourbrand.com 换成你自己的域名:

text
; SPF —— 允许为该域名发信的服务器 yourbrand.com. TXT "v=spf1 include:_spf.zeso.net ~all" ; MX —— 该域名的邮件送到哪里 yourbrand.com. MX 10 mx1.zeso.net yourbrand.com. MX 20 mx2.zeso.net ; DMARC —— 收件方在两项校验不一致时该怎么做 _dmarc.yourbrand.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@zeso.net"

三条记录,没有 DKIM。密钥对属于邮件服务,所以这里不写 DKIM 记录——用别的东西编一条出来,不会大声报错,只会悄悄破坏签名。

本平台提供邮件转发,尚未提供邮箱托管。域名在这里注册后,你会得到不限别名与 catch-all,转发到你自己已经在用的收件箱。

把记录读回来

解析区就是「发布了什么」的记录,dig 可以把它读出来:

bash
$ dig +short yourbrand.com MX 10 mx1.zeso.net. 20 mx2.zeso.net. $ dig +short yourbrand.com TXT "v=spf1 include:_spf.zeso.net ~all" $ dig +short _dmarc.yourbrand.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@zeso.net"

TXT 记录没有输出,说明 SPF 还没写进去;SPF 在,但里面不包含本平台的主机,那这条记录会让你发出的每一封邮件都失败。

在你的独立域名上体验边缘极速

全球 330+ 边缘节点、中位数低于 50ms 的 TTFB、Anycast 任播路由与全自动免费 SSL 证书。

60 秒极速部署

相关指南与关联页面