263 企业邮箱域名解析:MX、SPF、DKIM、DMARC 配置
263 企业邮箱自有域名配置:mxw.263.net 优先级 5、mx.263.net 优先级 10、spf.263.net 的 SPF、后台开启的 DKIM,以及 DMARC 报告记录。
阿里云邮箱与邮件推送:DKIM、SPF 与 DMARC 配置
按阿里云官方流程配置邮件推送发信域名:六条 DNS 记录、当前 SPF include 值、按地域生成的 DKIM selector,以及 DMARC 的发布与收紧。
阿里企业邮箱(阿里邮箱)SPF、DKIM、DMARC 配置指南
在自有域名上配置阿里企业邮箱:mx1–mx3.qiye.aliyun.com 三条 MX、spf.qiye.aliyun.com 的 SPF、default._domainkey 的 DKIM,以及与钉钉企业邮箱、邮件推送的区别。
SparkPost(Bird)发信域配置:DKIM、Return-Path 与 DMARC
SparkPost(现属 Bird)改过域名验证模型,而网上大量教程还在讲旧的那套。现在的要求是三条记录,而且主域的 SPF 不在其中。这一个事实就能解释绝大多数"SPF 一直未验证"的工单——照着过期教程做,当然验不过。
模型搞对了,配置十五分钟。搞错了,就会花一整天去找一条后台根本没在要的记录。
开始之前
- SparkPost / Bird 账号,发信域已在 Domains 里添加。
- 发信域的 DNS 写权限。
- 一条 DMARC 记录——SparkPost 现在拿它当发信门槛,没有 DMARC 的域名直接不能发。
- 确认区域:美国(
sparkpostmail.com)和欧洲(eu.sparkpostmail.com)是独立账号、独立记录。
决定能否发信的三条记录
在应用里打开域名详情页,会列出完整记录,主机和值都能一键复制。结构是:
DKIM(TXT) <selector>._domainkey.example.com v=DKIM1; k=rsa; p=...
Return-path(CNAME)send.example.com <区域目标>.bounce...
DMARC(TXT) _dmarc.example.com v=DMARC1; p=none; rua=...
可选:
Tracking(CNAME) links.example.com <区域>.links...
DKIM selector 按组织唯一,通常是 scph 加四位数字。因为密钥对由 Bird 生成、公钥发布在你自己的子域下,别人的签名不会被误认为你的。
第一步:DKIM
类型:TXT
主机:scph0421._domainkey
值:v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...
主机和值都从后台复制。Bird 会识别你的 DNS 服务商,按它期望的格式输出值——包括在服务商要求时分段成多个带引号的字符串。照贴,不要自己重组。
如果面板一个字段放不下,正确做法是同一条记录里拆成多个引号片段,绝不能拆成两条记录。同一主机两条 TXT 会让查询直接失败。
第二步:return-path CNAME 就是你的 SPF
这是 2024 年之前接触 SparkPost 的人最容易困惑的地方。return-path 记录设置的是信封发件人(退信)域,把它指向 SparkPost 就构成了 SPF 对齐——收件方是对信封域求值 SPF 的,而这个域现在解析到 SparkPost 的退信设施。
类型:CNAME
主机:send.example.com
目标:<后台给的,按区域不同>
主机默认是发信域下的 send.,每个 workspace 可以改。目标取决于区域,所以必须复制。
由此得到的结论:主域 SPF 里不再需要 include:sparkpostmail.com。老配置留下的那条不会有害,但白白占一次查询。删不删可选,再加一条 SPF 则是绝对不行。
return-path CNAME 真正的好处在于范围:主域 SPF 是给整个域名授权的,共享中继出问题会波及你所有发信源;委派一个退信子域把影响面收窄了,也让 SparkPost 换基础设施时不需要你改 DNS。
第三步:DMARC
SparkPost 要求域名存在有效 DMARC 记录才允许发信,并且会直接解析验证。配在域名本身或从父域继承都算。
_dmarc.example.com TXT v=DMARC1; p=none; rua=mailto:dmarc@example.com; fo=1
后台可能建议把 rua 指向 SparkPost 的地址,让它帮你汇总。方便,但你会失去"哪个 IP 失败"的细节。两边都要就写逗号分隔:
v=DMARC1; p=none; rua=mailto:dmarc@example.com,mailto:aggregate@example.net; fo=1
报告干净后再 quarantine、reject。用 DMARC 报告分析器读。
第四步:Tracking CNAME(可选)
这条不决定能不能发信——DKIM、return-path、DMARC 三条齐了就能发。它决定的是品牌化的点击和打开追踪:配上之后,邮件里的链接会改写成 links.yourdomain.com,而不是服务商的通用域名,链接信誉留在你自己名下。
Cloudflare 上所有 CNAME 都必须是仅 DNS。追踪用的 CNAME 一旦开代理,追踪端点就不可用,点击统计直接坏掉。
第五步:验证
SparkPost 会持续自动复检直到解析通过,通常在传播后几分钟内完成,也可以手动触发一次验证。
dig TXT scph0421._domainkey.example.com +short
dig CNAME send.example.com +short
dig TXT _dmarc.example.com +short
然后发一封真实邮件看头:
spf=pass smtp.mailfrom=send.example.com
dkim=pass header.d=example.com header.s=scph0421
dmarc=pass header.from=example.com
注意 smtp.mailfrom 指向你的 send. 子域——这就是 return-path CNAME 在起作用。如果那里显示的是 SparkPost 的域名,说明退信域没配好,SPF 对齐也就没发生。
常见错误
- 到处找要加的 SPF 记录。当前模型下主域没有。
- 没有 DMARC 就发信。域名根本发不出去。
- 把美国区的 return-path 目标抄进欧洲账号。区域独立,目标独立。
- Cloudflare 上给 CNAME 开了代理。
- DKIM 值发成两条记录,而不是一条记录里两个引号片段。
常见问题
还需要 include:sparkpostmail.com 吗?
新配置不需要。return-path CNAME 在委派子域上完成了 SPF 对齐,这是更好的模式。老记录可以留着,但别再新增一条 v=spf1。
能直接用主域发信吗?
能,但要另配一个退信域——return-path CNAME 需要一个主机名,放主域会和邮箱 MX 与 SPF 冲突。子域发信在各方面都更干净。
DKIM 过了,DMARC 还是失败?
对齐问题。确认 DKIM 签名里的 d= 和你的 From 域完全一致,return-path 主机在你域名下。d= 是某个共享服务商域名的,DKIM 通过、DMARC 失败。
