注册 Resend
地址链接:https://resend.com/
- Resend Free 计划限制:每天 100 封、每月 3000 封、每秒 2 封。你注册/找回的量级正常都够,但人工群发通知之前先确认一下,超出会直接被拒;如果会群发就升 Pro($20/月,5 万封)。
- Daily Sending Schedule:Resend 控制台可以看到每日额度和已用,做到心里有数。
一、Resend 侧需要做的事
1. 创建 API Key(必做)
左侧菜单 → API Keys → Create API Key:
- Name:
yourproject(随意,便于你以后吊销) - Permission:选 Sending access 即可(不要给 Full access,最小权限原则)
- Domain:限制为
example.com(不要 All domains)
创建后会显示一段 re_xxxxxxxx... 字符串,只显示一次,复制下来妥善保存。后台填的”密码”就是这个 Key。
2. 决定一个发件邮箱(必做)
Resend 不要求你真的”开通邮箱”,任何 xxx@example.com 都能直接当发件人。建议为不同业务用不同前缀,便于以后做日志和 DMARC 报告分类:
noreply@example.com—— 注册通知、密码找回(自动邮件)support@example.com—— 人工通知、客服回复billing@example.com—— 账单、对账(如有)
3. 加一条 DMARC 记录(强烈建议)
Resend 验证只检查 SPF + DKIM + Return-Path,不强制 DMARC,但没有 DMARC 时国内 QQ/163 偶尔会按”未充分验证”处理,加上之后送达率会肉眼可见地提升。
去 Cloudflare DNS 加一条 TXT:
- Type: TXT
- Name:
_dmarc - Content:
v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com; fo=1; adkim=r; aspf=rp=none 是”只观察不拦截”,跑两周看 rua 报告确认没误伤后再升级到 p=quarantine,最终 p=reject。dmarc@example.com 这个邮箱要能收信(如果还没有收件能力,先填一个能收的真实邮箱,比如你的 Gmail)。
4. (可选但推荐)在 Cloudflare 配 MX 来收 bounce/complaint
Resend 的 bounce/complaint 是通过它们的 webhook + 控制台来看的,所以你不需要为它单独配 MX。但 DMARC 的 rua 报告需要一个能真实收信的邮箱。如果你不想为这个域名搭收件能力,最省事的是:
- 把
rua=mailto:你的Gmail@gmail.com改成你已有的可收信邮箱 - 或者用 Cloudflare Email Routing 把
dmarc@example.com转发到 Gmail(免费、5 分钟搞定)
5. (可选)配 Webhook,做 bounce/complaint 自动处理
Settings → Webhooks → Add Endpoint:
- URL:例如
https://你的example域名/api/v1/webhook/resend - Events:勾选
email.bounced、email.complained、email.delivery_delayed
这样硬退信、用户标记垃圾邮件时你能拿到回调,把这些用户标为”勿发”避免影响整体信誉。example 当前没现成的 webhook 接收端,先跳过也无妨,等量大了再补。
DMARC 的跨域收件
先说一个关键概念(避坑)
DMARC 的 rua=mailto:xxx 收报告地址有个规则:如果你把它指向别的域名(比如 xxx@gmail.com),按 RFC 7489 那个域要主动”授权”接收,否则像 Google、Microsoft 这种严谨的接收方根本不会发报告给你。
具体表现是:你必须能在 gmail.com 加一条这样的 DNS 记录:
example.com._report._dmarc.gmail.com TXT "v=DMARC1"但 gmail.com 不是你的域,你加不了,于是大量报告就丢了。
两种合法绕开的办法:
- 方案 A:
rua还是写dmarc@example.com(同域,不需要授权),然后用 Cloudflare Email Routing 把这个邮箱转发到 Gmail。推荐。 - 方案 B:直接接入 DMARC 报告分析 SaaS(dmarcian / EasyDMARC / Postmark DMARC),它们会给你一个专属的
xxx@dmarc.dmarcian.com之类地址,并且对应平台已经做好授权。报告还能解析成可视化报表。
A、用 Cloudflare Email Routing 把 dmarc 邮件转发到 Gmail
Step 1:进入 Cloudflare → 选中 example.com → Email → Email Routing
在 Cloudflare Dashboard 顶部账户面包屑下拉里选 example.com,左侧菜单找到 Email → Email Routing(如果是新域名第一次用,会让你点 Get started 或 Enable Email Routing)。
Step 2:让 Cloudflare 自动加 MX / SPF 记录
点 Enable 后它会问你是否自动添加必要的 DNS 记录。这里有个细节要小心:
- Cloudflare 会给你三条 MX 记录(
route1/route2/route3.mx.cloudflare.net)。这些 MX 是给 example.com 收信用的,跟 Resend 完全不冲突,Resend 只要 SPF + DKIM 不需要 MX,所以一起用没问题。 - Cloudflare 会想自动加一条 SPF:
v=spf1 include:_spf.mx.cloudflare.net ~all。这条要小心——你已经有一条 Resend 的 SPF 了,不能重复存在两条 SPF。处理方式:
把现有 SPF 改成合并版(一条记录里 include 两个):
v=spf1 include:amazonses.com include:_spf.mx.cloudflare.net ~all如果你不确定 Resend 让你加的 SPF 写的是 include: 什么(不同区域略有差异,比如东京区域是 amazonses.com,也有 include:_spf.resend.com 的写法),就照搬你 Resend 控制台 DNS 那一页给的那个 include 内容,跟 _spf.mx.cloudflare.net 一起合到同一条 TXT 即可。SPF 必须只有一条 v=spf1 TXT,多了会直接 permerror。
Step 3:在 Email Routing 里创建转发规则
进入 Email Routing → Routes:
- 先到 Destination addresses 把你的 Gmail 加为目的地:
- 输入
your-gmail@gmail.com点 Add - Cloudflare 会发一封验证邮件到你 Gmail,点链接确认(标记成 Verified 才能用)
- 输入
- 再到 Custom addresses 创建路由:
- Custom address:
dmarc@example.com - Action:
Send to an email - Destination:选刚才验证好的 Gmail
- 保存
- Custom address:
- (可选但推荐)顺便再建一条:
noreply@example.com→ 也转到 Gmail,或 Drop(不收任何回信)。注意 Resend 发件用的noreply@example.com不需要它能收信也照样能发,只是用户万一回信你不会丢失。
- (可选)建一个”通配规则”接住所有
*@example.com:- 在 Catch-all address 设置成转发到 Gmail,或者设置 Drop
- 这样以后新加邮箱不用一个个建路由
Step 4:DMARC 记录改成同域
回到 DNS → Records,找到(或新建)一条:
- Type:TXT
- Name:
_dmarc(Cloudflare 会自动补成_dmarc.example.com) - Content:
v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com; fo=1; adkim=r; aspf=rProxy status 一定保持灰色(DNS only),TXT 记录本就不会被代理,Cloudflare 默认就是灰云,这里只是提醒一下。
Step 5:发一封测试邮件验证转发链路
最简单的方式:用任何邮箱(比如另一个 Gmail)直接给 dmarc@example.com 发一封”hello”。几秒到一分钟内你的 Gmail 收件箱应该会出现这封信,发件人会显示原始发件人,并带 Cloudflare 的 via 头。
如果没收到:
- 检查 Email Routing → Overview 顶部是否显示绿色”Enabled”
- 看 Destination address 是不是 Verified 状态
- 在 Email Routing → Activity 里能看到每封信的命中状态(accepted/forwarded/dropped)
- Gmail 垃圾箱也翻一下
Step 6:等 24~72 小时,开始收到 DMARC 报告
DMARC 聚合报告(rua)由各大 ISP 每天打包发一次,所以不要立即指望有报告。一般 24~72 小时后你的 Gmail 会陆续收到来自 Google、Yahoo、Microsoft、Mail.ru、网易、QQ 等的报告,附件是 .zip 或 .gz,里面是 XML。
Step 7:报告太难读?两个轻量解决方案
XML 直接看会想哭。三种处理方式按推荐度:
- 白嫖 SaaS 解析器(最省事):把
rua同时写两个收件人——你自己的 + 一个免费报告分析平台的。例子:
v=DMARC1; p=none; rua=mailto:dmarc@example.com,mailto:你的专属地址@dmarc.postmarkapp.com; fo=1- 这里
postmarkapp.com是 Postmark 提供的 免费 DMARC Digest,注册后给你一个专属邮箱。它每周给你发可读的中文/英文摘要邮件,不用看 XML。dmarcian 和 EasyDMARC 也有免费档。 - 本地 dmarc-report-parser 工具:开源项目,自己跑解析。适合极客。
- 暂时不看也行:
p=none不影响投递,主要是观察。如果你只想”先合规起来”可以两周后再看。
Step 8:两周后逐步收紧策略
确认 SPF/DKIM 都过、没误伤后,把 _dmarc 这条 TXT 改成:
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@doordashag.com; ruf=mailto:dmarc@doordashag.com; fo=1; adkim=r; aspf=rpct=25 表示只对 25% 的违规邮件应用 quarantine 策略,逐步加到 100,最终升到 p=reject。这一步不急,几个月内完成都行。
B:用 DMARC SaaS 不自己管转发(更省心)
如果你嫌方案 A 还要管 Email Routing,可以直接:
-
注册 Postmark DMARC(免费)或 EasyDMARC(免费档)。
-
它们会给你一个专属的
xxxx@dmarc.postmarkapp.com之类邮箱。 -
DMARC 记录写成:
v=DMARC1; p=none; rua=mailto:你的专属地址@dmarc.postmarkapp.com; fo=1
-
完事。这些平台会自动给你发可读摘要,不用配 Email Routing,也不用考虑跨域授权(它们后台已经处理好)。
缺点是:万一这个 SaaS 哪天关停或改收费,你要换平台。所以最稳的做法是 A + B 组合:rua 同时填两个,SaaS 看图表、自家邮箱当备份。
最终的”一键复制”配置
DMARC TXT 记录推荐这样写(A + B 组合,先注册一下 Postmark 拿专属邮箱再来填):
v=DMARC1; p=none; rua=mailto:dmarc@example.com,mailto:你的@dmarc.postmarkapp.com; ruf=mailto:dmarc@example.com; fo=1; adkim=r; aspf=r不想注册 SaaS 的极简版:
v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com; fo=1检查工具
部署完成后用这几个免费在线工具验证:
- https://mxtoolbox.com/dmarc.aspx → 检查 DMARC 记录语法
- https://dmarcian.com/dmarc-inspector/ → 一站式检查 SPF/DKIM/DMARC
- 直接给
check-auth@verifier.port25.com发一封测试邮件,几秒后会收到一份完整的 SPF/DKIM/DMARC 鉴权报告
操作顺序
- Cloudflare → Email → Email Routing → Enable,把 Gmail 加为 Destination 并验证
- 创建路由
dmarc@example.com→ 转发到 Gmail - 把 SPF 合并成一条(Resend include + Cloudflare include)
_dmarcTXT 改成上面的同域版本- 发一封测试邮件验证转发通了
- 24~72 小时后开始收到报告,两周后再考虑升级
p=quarantine