外贸邮件总进垃圾箱?SPF、DKIM、DMARC设置教程

蜗牛大人企业邮箱教程

外贸邮箱最常遇到的问题之一:邮件发出去了,客户却说没收到,一查在垃圾箱里;或者直接收到一封退信,里面写着 SPF check failed、DMARC policy 之类看不懂的英文。

绝大多数情况,原因都一样:域名的SPF、DKIM、DMARC没有配好。

这三条记录跟邮箱是哪家的无关,跟你的域名有关。不管你用Hostinger、Zoho、Google Workspace还是腾讯企业邮箱,都要在域名的DNS里把它们加上。

本文先用大白话讲清楚三者是什么,再给出常用邮箱的记录值和添加步骤,最后讲怎么检查。

为什么现在必须配

以前没配SPF、DKIM,邮件多半也能收到。这几年情况变了:

  • Gmail从2024年2月起要求:所有发给Gmail的邮件,发信域名都要通过SPF或DKIM验证;每天发5000封以上的,SPF、DKIM、DMARC三项都要有;
  • Outlook.com、Hotmail从2025年5月起对大量发信的域名提出了同样的要求;
  • 企业客户用的邮件网关(Microsoft 365、Proofpoint、Mimecast等)也会参考这几项来判断邮件是不是伪造的。

外贸企业邮箱一天发不了5000封,但没有SPF和DKIM的邮件,在Gmail和企业邮箱网关那里本来就是被重点怀疑的对象。配齐三项,是让业务邮件进收件箱的基本条件。

三条记录分别是什么

可以把发邮件想成寄快递:

记录打个比方作用
SPF公司公布的「授权快递员名单」列出哪些服务器有权用你的域名发信。收件方对照名单,不在名单上的就可疑
DKIM包裹上的防伪封条邮箱服务商给每封邮件加一个数字签名,收件方用你DNS里的公钥核对,证明邮件确实是你发的、途中没被篡改
DMARC公司给快递站的处理说明告诉收件方:SPF和DKIM都没通过的邮件怎么处理(照收、进垃圾箱、拒收),还可以让对方把统计报告发给你

三者都是域名DNS里的记录,在你管理域名解析的地方添加:域名用Hostinger的DNS,就在hPanel里加;用Cloudflare,就在Cloudflare里加。

先确认域名的DNS在哪里:用 whois 或者域名注册商后台查看域名的NS(Nameserver)。不清楚NS是什么,见《什么是Nameserver?》。

常用邮箱的记录值

下表是各家常见的值,以你自己邮箱后台显示的为准,尤其是DKIM,每个域名都不一样。

邮箱SPF里要包含的DKIM在哪里拿
Hostinger邮箱include:_spf.mail.hostinger.comhPanel邮箱管理里的DNS设置,三条CNAME(hostingermail-a/b/c._domainkey)
SiteGround邮箱域名用SiteGround的DNS时自动配置Site Tools →「Email」→「Authentication」
Zoho Mailinclude:zohomail.com(国际版,以后台为准)管理控制台 → 域名 → 「Email Configuration」→「DKIM」
Google Workspaceinclude:_spf.google.com管理控制台 → 应用 → Gmail →「验证电子邮件」
Microsoft 365include:spf.protection.outlook.comMicrosoft Defender门户 → 电子邮件身份验证设置 → DKIM,两条CNAME
腾讯企业邮箱include:spf.mail.qq.com管理后台的域名设置里查看
网易企业邮箱include:spf.qiye.163.com管理后台的域名设置里查看
阿里企业邮箱include:spf.qiye.aliyun.com管理后台的域名管理里开启DKIM

SPF的完整写法是 v=spf1 include:xxx ~all。比如只用腾讯企业邮箱:

v=spf1 include:spf.mail.qq.com ~all

第一步:设置SPF

SPF是根域名上的一条TXT记录:

类型主机记录(Name)记录值
TXT@v=spf1 include:邮箱服务商的地址 ~all

一个域名只能有一条SPF

这是最常见的错误。很多人换了邮箱,又加了一条新的SPF,结果域名上有两条以 v=spf1 开头的TXT记录。有两条SPF,等于一条都没有,收件方会直接判定SPF出错。

Hostinger、SiteGround这类主机,在域名用它们的DNS时会自动加一条SPF。换成别家邮箱后,要修改这一条,而不是再加一条。

多个发信服务怎么合并

如果你的域名有好几个地方在发信,比如:

  • 日常邮件用Zoho;
  • 网站询盘表单用Hostinger的邮箱通过SMTP发。

就把它们的 include 写进同一条记录:

v=spf1 include:zohomail.com include:_spf.mail.hostinger.com ~all

像Brevo这类邮件营销、发信服务,一般用它们自己的发信域名做SPF,你这边只需要按它们的后台添加DKIM和验证记录,不用把它们写进SPF。以各家后台的要求为准。

注意两点:

  • 最多10次DNS查询。每个 include 至少算一次,有的服务商的include里面还嵌套了别的。不要把用不到的服务也写进去,超过10次SPF会直接失败;
  • 不再用的服务要删掉。旧邮箱停用了,它的include也就没有必要留着。

结尾用 ~all 还是 -all

  • ~all(软失败):不在名单里的邮件标记为可疑,一般进垃圾箱;
  • -all(硬失败):不在名单里的邮件直接拒收。

有的服务商(比如阿里)给的值是 -all。如果你很确定所有发信渠道都写进去了,用 -all 没问题;不确定的话用 ~all 更稳妥,有了DMARC之后,两者的实际效果差别不大。

第二步:设置DKIM

DKIM的值是邮箱服务商生成的,每个域名都不同,不能照抄别人的。步骤都差不多:

  1. 进入邮箱的管理后台,找到「DKIM」「域名验证」或「邮件认证」相关的页面;
  2. 点击生成或启用,后台会给出一到三条记录,类型是TXT或CNAME;
  3. 把记录添加到域名的DNS里;
  4. 回到邮箱后台点击验证,状态变成「已启用」或「已验证」。

DKIM的主机记录一般长这样:选择器._domainkey,比如 zmail._domainkey、google._domainkey、selector1._domainkey。

有两点容易出错:

  • 有的DNS面板会自动在主机记录后面加上你的域名。后台给的是 zmail._domainkey.你的域名.com,在Hostinger、Cloudflare里只要填 zmail._domainkey 就行;
  • TXT类型的DKIM值很长,复制时不要漏掉开头的 v=DKIM1 或者末尾的字符,也不要多复制空格和换行。

很多人只做了SPF,漏了DKIM。DKIM对送达率的作用其实更大:邮件被转发之后SPF会失效,DKIM签名还在。

第三步:设置DMARC

DMARC是主机记录为 _dmarc 的TXT记录。刚开始用最宽松的策略:

类型主机记录记录值
TXT_dmarcv=DMARC1; p=none; rua=mailto:dmarc@你的域名

各部分的意思:

  • p=none:验证不通过的邮件也照常投递,只是让收件方知道你有DMARC;
  • rua=mailto:...:收件方每天把汇总报告发到这个邮箱。报告是XML格式的压缩包,不打算看的话可以去掉这一段,写成 v=DMARC1; p=none。

p=none 已经满足Gmail的要求。等运行一两个月、确认所有正常发信渠道都通过了验证,可以改成更严格的策略:

  • p=quarantine:验证不通过的进垃圾箱;
  • p=reject:验证不通过的直接拒收,防止别人冒用你的域名发钓鱼邮件。

不要一开始就设成reject。如果有哪个发信渠道没配好(比如网站表单),它发的邮件会全部被拒收,你还不知道。

一个域名只能有一条DMARC记录。

在Hostinger里添加

域名用Hostinger的DNS(NS是 ns1.dns-parking.com、ns2.dns-parking.com)时:

  1. 登录hPanel,进入「Domains」→ 对应域名的「Manage」→「DNS / Nameservers」;
  2. 先在下方的记录列表里看一下有没有已经存在的SPF(TXT,内容以 v=spf1 开头)和 _dmarc 记录,有的话点击编辑,不要重复添加;
  3. 在上方的表单里选择类型,填写Name、内容,点击「Add Record」;
  4. DKIM如果是CNAME类型,「Points to」填后台给的目标地址。

用Hostinger自己的邮箱、域名也在Hostinger时,SPF和DKIM一般已经自动配好,只需要补一条DMARC。

更详细的DNS编辑页面操作见《如何在Hostinger上设置其他企业邮箱?》。

在Cloudflare里添加

域名的NS在Cloudflare时:

  1. 登录Cloudflare,选择域名,进入「DNS」→「Records」;
  2. 点击「Add record」,选择类型,「Name」填 @、_dmarc 或者DKIM的选择器,「Content」填记录值;
  3. DKIM如果是CNAME类型,「Proxy status」要关掉,设成灰色云朵的「DNS only」。开着代理的话,收件方查不到真实的记录,DKIM会验证失败;
  4. 保存。

Cloudflare的DNS生效很快,一般几分钟。

第四步:检查是否生效

DNS记录一般几分钟到几小时内生效。可以用这几种方法检查:

方法一:看Gmail里的原始邮件

用企业邮箱给自己的Gmail发一封邮件,在Gmail里打开它,点右上角的三个点 →「显示原始邮件」。页面顶部会显示:

  • SPF:PASS
  • DKIM:PASS
  • DMARC:PASS

三项都是PASS就说明配置正确。显示FAIL或者NONE的,对照下面的常见问题排查。

方法二:用在线工具查

  • MXToolbox:可以分别查询SPF、DKIM、DMARC记录,会提示语法错误、查询次数超限等问题;
  • mail-tester:给它提供的临时地址发一封邮件,会给出一个10分制的评分和具体扣分项。

方法三:看邮箱后台

Zoho、Google Workspace、腾讯等邮箱的管理后台,在域名设置页面会显示每条记录的验证状态。

常见问题

SPF显示PASS,邮件还是进垃圾箱?

SPF只是其中一项。检查DKIM和DMARC是否也是PASS。都通过了还进垃圾箱,问题一般在内容上:邮件里链接和图片太多、用了短链接、标题像营销邮件、新域名一下子发了很多封。新域名开始的几周,发信量要慢慢加。

改了邮箱服务商,要动这三条记录吗?

要。SPF里的include换成新服务商的(旧的不用了就删掉),DKIM按新服务商的后台重新添加,DMARC不用改。

网站询盘表单发的邮件进垃圾箱,也跟这个有关吗?

有关。网站表单如果直接用主机的PHP发信,发信的服务器不在你的SPF里,也没有DKIM签名,基本都会进垃圾箱。解决方法是装SMTP插件,让表单通过你的企业邮箱发信,见《WordPress网站收不到询盘邮件?SMTP设置教程》。

收到一堆看不懂的DMARC报告邮件,怎么办?

这是 rua 设置的汇总报告,说明DMARC在工作。不想收的话,把记录里的 rua=mailto:... 删掉即可。想看懂报告,可以用免费的DMARC报告分析服务,把 rua 指向它们提供的地址。

这三条记录会影响网站吗?

不会。SPF、DMARC是TXT记录,DKIM是TXT或CNAME记录,都跟网站的A记录无关。

总结

让外贸邮件进收件箱,要在域名的DNS里加三样东西:

  1. SPF:根域名上的一条TXT,v=spf1 include:邮箱服务商 ~all。一个域名只能有一条,多个发信服务合并写;
  2. DKIM:从邮箱后台复制,每个域名不同,CNAME类型在Cloudflare里要关掉代理;
  3. DMARC:_dmarc 上的一条TXT,先用 v=DMARC1; p=none,稳定后再收紧。

配好之后用Gmail的「显示原始邮件」检查,三项都是PASS就可以了。还没选好企业邮箱的,可以先看《外贸企业邮箱哪家好?》。

文章版权归作者所有,转载请注明出处:https://woniune.com/posts/spf-dkim-dmarc-setup/
上一篇Microsoft 365企业邮箱教程:套餐价格、注册和绑定域名(Outlook企业邮箱)

相关推荐