Proton Mail 自定义域名:SPF、DKIM 与 DMARC 配置

Proton Mail 绑定自有域名:mail.protonmail.ch 的 MX 双记录、_spf.protonmail.ch、三条 DKIM CNAME,以及决定一切的所有权验证 TXT。
5 分钟阅读
更新于 2026-11-04
平台专区
protonspfdkimdmarc

Proton Mail 是这份清单里配置方式最不一样的一家:DKIM 用三条 CNAME 指到 Proton 自己的签名设施,公钥根本不落你的 zone。它还有一个很多教程含糊带过的硬前提——自定义域名必须付费套餐,免费版完全不支持。

第二个前提最好先知道:Proton 是邮箱,不是发信平台。它没有批量 API,除了开启 SMTP 提交的 Business 套餐之外也没有给应用用的中继。要做事务邮件,就在子域上另配 ESP。

Proton Mail:两条 MX、三条 DKIM CNAME
三个 selector 都要有,签名才不会中断。

开始之前

  • 付费套餐(Mail Plus 及以上,或 Business)。所有付费套餐都支持自定义域名。
  • 在 Settings > Domain names > Add domain 里添加域名。
  • DNS 写权限。Proton 为 Cloudflare、Namecheap、GoDaddy、OVH、Gandi、AWS、Squarespace、Wix、Porkbun、Bluehost、Hostpoint 都写了单独教程,你的域名在这几家的话,字段名以那份为准。
  • 切 MX 之前把所有目标地址建好。MX 一切,Proton 里不存在的地址就开始退信。

第一步:验证所有权

@   TXT   protonmail-verification=xxxxxxxxxxxxxxxx

发布后等几分钟再点验证。有些面板不接受 @ 作为主机值,那就留空;有些要求直接填完整域名,按它的要求来。填错的典型结果是记录落在 @.yourdomain.com,永远没人查,后台只告诉你验证失败。

验证通过后这条记录可以留着,占不了什么地方,将来重新验证还用得上。

第二步:MX 记录

@   MX   10   mail.protonmail.ch
@   MX   20   mailsec.protonmail.ch

其它 MX 全部删掉,或者确保 Proton 这两条的优先级数字最小。数字越小优先级越高——这和很多人的直觉相反。域名上留着一条优先级 10 的旧记录、Proton 是 20,邮件就会继续投给旧服务商,而 Proton 后台只会显示 MX 未通过。

所有地址建好之前不要切 MX。这是 Proton 迁移里丢信最常见的方式,没有之一。

第三步:SPF

v=spf1 include:_spf.protonmail.ch ~all

Proton 一些旧的注册商教程里还带 mx 机制(v=spf1 include:_spf.protonmail.ch mx ~all)。它的意思是"授权 MX 记录指向的服务器",MX 在 Proton 时是冗余的,将来 MX 指向别处时就是错的。除非你的后台明确要求,用纯 include 的写法。

已有 SPF 就改那一条,域名只能有一条:

v=spf1 include:_spf.protonmail.ch include:_spf.google.com ~all

第四步:DKIM 是三条 CNAME

protonmail._domainkey    CNAME   <Proton 给的值>
protonmail2._domainkey   CNAME   <Proton 给的值>
protonmail3._domainkey   CNAME   <Proton 给的值>

三个 selector 是为了密钥轮换时不留空档。三条目标各不相同,全部照抄 Settings > Domain names > 域名 > DKIM。只发第一条是最常见的"配了一半":Proton 可能用你没发布的那个 selector 签名,于是验证时好时坏。

三个实操提醒:

  • 结尾的点。面板自动加就保留;面板拒绝带点的值就去掉。存对了两种写法解析结果一样。
  • 同一主机名不能再有 TXT。CNAME 不能和任何记录共存。上一家服务商在 protonmail._domainkey 留过 TXT 的,先删。
  • 不能开代理。Cloudflare 上三条都必须是仅 DNS,代理后的 CNAME 返回边缘地址,签名验证必然失败。

Proton 后台每条记录解析成功会给绿勾。那是 Proton 自己的解析器,不是全球的——自己再查一遍:

dig CNAME protonmail._domainkey.yourdomain.com +short
dig CNAME protonmail2._domainkey.yourdomain.com +short
dig CNAME protonmail3._domainkey.yourdomain.com +short

第五步:DMARC

Proton 建议多数域名直接用 p=quarantine。在它这里这个建议算合理——Proton 自己的发信是完全对齐的,对不齐的基本都可疑。但如果域名上还有别的发信源,先监控:

v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; fo=1

之后再收紧,报告用 DMARC 报告分析器读。想直接上 quarantine 的话,至少先跑一周 p=none,确认没有正常来源在对齐上失败。

第六步:验证

spf=pass (_spf.protonmail.ch designates <IP> as permitted)
dkim=pass header.d=yourdomain.com header.s=protonmail
dmarc=pass (p=QUARANTINE) header.from=yourdomain.com

如果 DKIM 显示 d=protonmail.ch,说明是用 Proton 自己的域名签的——CNAME 没配或没解析出来。三个 selector 分别用 DKIM 检测查一遍,SPF 用 SPF 检测。

常见错误

  • 三条 DKIM CNAME 只发了一条。
  • 地址没建齐就切 MX,中间那段时间的来信全丢。
  • 以为免费版能绑自定义域名。不能。
  • 留着一条优先级数字比 Proton 更小的旧 MX。
  • 拿 Proton 当应用发信通道。除 Business 的 SMTP 提交外没有中继,事务邮件放子域交给 ESP。

常见问题

三条 DKIM 都必须配吗?

必须。Proton 在这三个 selector 之间轮换。少一条,轮到那把密钥时就有一部分出站邮件 DKIM 失败,表现为间歇性、毫无规律的退信或进垃圾箱。

能绑多个自定义域名吗?

能,付费套餐支持,每个域名一套独立地址和独立的三条 DKIM 记录。不能把 A 域名的 selector 值复用到 B 域名上。

支持全收地址(catch-all)吗?

支持,按域名在设置里开。迁移期间建议打开,免得发给你忘了建的地址的邮件直接退信。

这篇指南有帮助吗?