主题
在 Cloudflare 配 DNS 解析
一句话
把 Resend 给的那几条记录加到 Cloudflare,让全世界的邮箱相信"这封信真的是你发的"。 5 分钟操作,等生效可能要几分钟到几小时。
先搞清楚这三条记录是干什么的
| 记录 | 全称 | 作用 | 不配会怎样 |
|---|---|---|---|
| SPF | Sender Policy Framework | 声明"这些服务器可以用我的域名发信" | 收件方无法确认发信方,直接进垃圾箱 |
| DKIM | DomainKeys Identified Mail | 给每封信盖一个数字签名 | 同上,而且信在传输中被改了也发现不了 |
| DMARC | 域名消息认证 | 告诉收件方"SPF/DKIM 没过时怎么办" | Gmail / Outlook 对没有 DMARC 的域名越来越严格 |
三条都要配
只配 SPF 不配 DKIM,Gmail 大概率照样进垃圾箱。2024 年起 Gmail 和 Yahoo 对批量发信方强制要求 SPF + DKIM + DMARC 全部通过。
第 1 步:进 Cloudflare 的 DNS 页面
- 登录 https://dash.cloudflare.com
- 点你的域名(比如
jdz.io) - 左侧菜单 → DNS → Records
第 2 步:逐条添加
对着 Resend 后台给你的那张表,一条一条点 Add record。
记录 1:SPF(TXT)
| Cloudflare 里的字段 | 填什么 |
|---|---|
| Type | TXT |
| Name | send |
| Content | 从 Resend 复制,形如 v=spf1 include:amazonses.com ~all |
| TTL | Auto |
记录 2:DKIM(TXT)
| 字段 | 填什么 |
|---|---|
| Type | TXT |
| Name | resend._domainkey |
| Content | 从 Resend 复制,p=MIGfMA0GCSqGSIb3DQEB...(很长) |
| TTL | Auto |
DKIM 那一串最容易复制错
它有好几百个字符。用 Resend 页面上的复制按钮,不要手动框选 —— 框选很容易漏掉开头或结尾,而漏一个字符就整条失效,且报错只说"未验证"。
记录 3:MX
| 字段 | 填什么 |
|---|---|
| Type | MX |
| Name | send |
| Mail server | 从 Resend 复制,形如 feedback-smtp.us-east-1.amazonses.com |
| Priority | 10 |
| TTL | Auto |
这条 MX 不会影响你收邮件
它的名称是 send(也就是 send.你的域名),只用来接收退信通知。 不会影响你 @你的域名 的正常收信。
记录 4:DMARC(TXT)
| 字段 | 填什么 |
|---|---|
| Type | TXT |
| Name | _dmarc |
| Content | v=DMARC1; p=none; |
| TTL | Auto |
先用 p=none
p 是"SPF/DKIM 没过时怎么处理":
| 值 | 含义 |
|---|---|
none | 什么都不做,只观察(新域名从这里开始) |
quarantine | 丢进垃圾箱 |
reject | 直接拒收 |
一上来就写 reject,万一你哪条记录配错了,所有邮件会被直接拒收, 而你要等买家投诉才知道。跑顺一两周再收紧。
想收退信报告的话可以写成:
v=DMARC1; p=none; rua=mailto:dmarc@你的域名;第 3 步:⚠️ 关掉小云朵
这一步最多人栽
Cloudflare 的记录后面有个橙色小云朵(Proxy status)。
TXT和MX记录本来就不能代理,Cloudflare 会自动显示成灰色,没问题- 但如果你为了发信另外加了
A或CNAME记录,一定要点成灰色(DNS only)
橙色 = 流量经过 Cloudflare 代理,邮件相关的记录被代理之后验证必然失败, 而且报错只会说"未验证",完全看不出是这个原因。
第 4 步:回 Resend 点验证
回到 Resend 的 Domains 页面,点你的域名,点 Verify DNS Records。
- 顺利的话几秒到几分钟就全绿 Verified
- 没绿的话等 10 分钟再点一次(Cloudflare 通常很快,但 DNS 缓存有时要更久)
自己查一下 DNS 有没有生效
不想干等的话,用在线工具查:https://mxtoolbox.com/SuperTool.aspx
- 查 SPF:输入
send.你的域名,类型选 TXT - 查 DKIM:输入
resend._domainkey.你的域名,类型选 TXT - 查 DMARC:输入
_dmarc.你的域名,类型选 TXT
查得到就说明 DNS 那头没问题了。
第 5 步:回后台发测试邮件
后台 → 站点设置 → 联系与法务 → 发信服务 → 测试,填自己的邮箱,发一封。
一定要用 Gmail 收一次
Gmail 是最严格的。它收到了、而且不在垃圾箱,才算真的配好了。
收到之后点开邮件 → 右上角三个点 → 显示原始邮件,看这三行:
SPF: PASS
DKIM: PASS
DMARC: PASS三个都 PASS 才是真的通了。
常见问题
Resend 一直显示 Pending / Failed
- 记录名称写全了? Cloudflare 里 Name 填
send就行,不要填send.jdz.io—— 它会自动补上域名,填全了会变成send.jdz.io.jdz.io - 小云朵是灰的吗?
- DKIM 那串完整吗? 复制到记事本数一下长度,和 Resend 页面上的对比
- 域名的 NS 真的指向 Cloudflare 吗? 如果域名还在别家解析, 你在 Cloudflare 加的记录根本不生效
测试邮件收到了,但进了垃圾箱
新域名的头几十封信进垃圾箱是正常的,收件方在观察你。
怎么改善:
- 三条记录确认全部 PASS
- 别一上来就群发 —— 新域名突然发几百封是最典型的垃圾邮件特征
- 先让真实订单邮件跑一段时间,把信誉养起来
- 把自己的地址加到收件人的通讯录里(对自己测试有用)
千万别在信誉没养起来时群发
一次群发被大量标记为垃圾邮件,会毁掉这个域名的发信信誉 —— 之后连订单确认和验证码都进垃圾箱。那是很难恢复的。
系统里的群发有三道闸挡着(必须先发测试邮件、收件人一人一行去重、 发出那一刻复查订阅状态),但发太早这件事只有你自己能控制。