华为云企业邮箱:MX、SPF 与 DKIM 配置

华为云企业邮箱域名解析:sparkspace 的 MX 双记录、spf.sparkspace.huaweicloud.com 的 SPF,以及被多数教程写错的 CNAME 式 DKIM。
4 分钟阅读
更新于 2026-11-04
平台专区
华为云spfdkimdmarc

华为云企业邮箱(内部代号 KooMail)在已经跑在华为云上的单位里很常见。它的解析项少且干净:两条 MX、一条 SPF TXT,加上一条 DKIM 的 CNAME——密钥由华为托管和轮换,你不需要粘贴公钥。

恰恰是这个 CNAME 细节,绝大多数第三方教程都写错了:它们让你在 dkim._domainkey 下发一条 TXT,那不是华为要的,也验证不过。

华为云企业邮箱:DKIM 用 CNAME 发布
你的 zone 里没有密钥,这条委派本身就是记录。

开始之前

  • 已开通企业邮箱的华为云账号,以及邮箱控制台的管理员权限。
  • 域名已在域名管理里添加。华为提供两种开通方式:完整收发解析,或"仅验证域名归属"——后者在补齐 MX 之前只支持组织内部互发,不少人误以为配完了,其实外网来信全不通。
  • 权威 DNS 后台的写权限。域名在华为云注册的,DNS 控制台就在同一个账号里。
  • 其它发信源清单,准备合并进同一条 SPF。

第一步:MX 记录

@   MX   5    mx1.sparkspace.huaweicloud.com
@   MX   10   mx2.sparkspace.huaweicloud.com

两条,优先级 5 和 10。先把冲突的旧 MX 删掉——控制台检测到已有 MX 会提示冲突,两条并存时邮件会在新旧服务商之间随机投递,症状是"有时候收得到有时候收不到"。

有些 DNS 面板保存的 MX 目标带结尾的点(mx1.sparkspace.huaweicloud.com.),两种写法都是合法 DNS;真正会坏的是那种会自动把域名拼到值后面的面板,结果是 mx1.sparkspace.huaweicloud.com.yourdomain.com。保存后用 dig MX 验一遍,别只看面板显示。

第二步:SPF

v=spf1 include:spf.sparkspace.huaweicloud.com -all

华为文档写的是 -all(硬失败)。如果这个域名只有企业邮箱在发信,这样写是对的;但上线初期它很不宽容:一个被忘掉的官网表单、一台老扫描仪,邮件会在收件方被直接拒掉,而你这边连退信都收不到。

清单没摸清前先用软失败,等 DMARC 报告干净了再收紧:

v=spf1 include:spf.sparkspace.huaweicloud.com ~all

新增发信源要合并,不要另起一条。同域名两条 v=spf1 是 permerror:

v=spf1 include:spf.sparkspace.huaweicloud.com include:_spf.google.com ~all

第三步:DKIM 是 CNAME,不是 TXT 公钥

dkim._domainkey   CNAME   dkim.mail.sparkspace.huaweicloud.com

就这一条。没有密钥、没有 400 字符的长串、不用担心分段。华为用自己管理的私钥签名,公钥放在目标主机名下。

两个实际影响:

  • 同一主机名不能再有 TXT。CNAME 不能和任何其它记录共存。上一家服务商在 dkim._domainkey 留过 TXT 的,先删掉再建 CNAME,否则面板要么拒绝保存,要么返回一条残缺的解析结果。
  • 不能开代理。在 Cloudflare 上必须是"仅 DNS"(灰云)。代理后的 CNAME 会解析到 Cloudflare 边缘地址,DKIM 验证必然失败。

验证这条委派确实指到了华为的区域:

dig CNAME dkim._domainkey.yourdomain.com +short
dig TXT dkim._domainkey.yourdomain.com +short

第二条命令会返回 v=DKIM1; k=rsa; p=...——你并没有发过 TXT,这是 CNAME 被跟随的结果。如果查不到,说明目标主机名不是你这个区域的值,或者记录类型其实没建成 CNAME。

第四步:DMARC

控制台可能建议 p=quarantine。别直接照做,未经审计的域名上隔离策略会吃掉正常邮件:

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

跑两周,用 DMARC 报告分析器读聚合报告,再逐步到 quarantine、reject。如果同时开了华为自带的反伪造功能,务必确认 _dmarc 只有一条 TXT——重复的 DMARC 记录会被整条忽略,比策略宽松更危险。

第五步:端到端验证

从华为邮箱发一封到 Gmail,看原始邮件头:

spf=pass (spf.sparkspace.huaweicloud.com designates <IP> as permitted)
dkim=pass header.d=yourdomain.com
dmarc=pass (p=NONE) header.from=yourdomain.com

如果 DKIM 是 pass 但 d=sparkspace.huaweicloud.com,说明签的是华为的域名——CNAME 没配或没解析出来。先修这个再动 DMARC,因为对齐要求 d= 和 From 域一致。

发布侧用 MX 查询、SPF 检测、DKIM 检测核对。

常见错误

  • 在 dkim._domainkey 发了 TXT,因为某篇教程这么写。华为用的是 CNAME。
  • Cloudflare 上把 DKIM 的 CNAME 开了代理。必须仅 DNS。
  • 选了"仅验证域名归属"就当配置完成——那个状态下只能内部互发。
  • 留着一条旧 MX,一半入站邮件还进旧邮箱。
  • 第一天就上硬失败,官网表单的询盘信全丢。

常见问题

华为会不通知就轮换 DKIM 密钥吗?

CNAME 指向华为的区域,密钥轮换在对方侧完成,你不需要改任何 DNS。这正是 CNAME 式 DKIM 相对裸 TXT 公钥的主要运维优势。

邮箱在华为云,事务邮件能用别的 ESP 发吗?

可以,而且建议分开:邮箱留在主域,ESP 的发信域放 mail.yourdomain.com 这类子域,单独配 SPF 和 DKIM。这样营销邮件的信誉问题伤不到员工日常通信的域名。

SPF 报查询错误是怎么回事?

要么有两条记录,要么总查询次数超过 10 次上限。用 SPF 检测两个都能看出来,通常的解法是把价值低的 include 扁平化。

这篇指南有帮助吗?