域名邮箱搭建完整指南:Cloudflare + Gmail + Resend 一套可复用方案
适用:用自己域名(如
yourdomain.com)的任意前缀邮箱收发信,零付费拼一套。
组件分工:Cloudflare 负责收信转发、Gmail 网页负责发信界面、Resend 负责 SMTP 中继。Cloudflare 本身不能发信。
🔒 隐私提示:文中
yourdomain.com/you@gmail.com/you@139.com/xxx@yourdomain.com均为占位符,请替换为你自己的域名与邮箱。
零、官方入口(小白直通车)
动手前先把这几个官网收藏好,下文所有”后台 / 设置”都从这里进:
| 平台 | 用途 | 直达链接 |
|---|---|---|
| Cloudflare | 收信转发 + DNS 托管 | 官网 | Dashboard |
| Gmail | 发信界面 + 收件箱 | 网页版 | 发信身份设置 |
| Resend | SMTP 发信中继 | 官网 | 登录/Dashboard |
| (可选)139 邮箱 | 备援 + 短信通知 | 139 邮箱 |
下文提到的 Cloudflare / Gmail / Resend 均以上表入口为准,避免搜到仿冒站。
一、架构总览
1 | 外部发信人 → 任意前缀@yourdomain.com |
核心认知:Cloudflare 只做收信转发,发信必须走 Gmail + Resend SMTP。
二、前置条件
- 域名 NS 在 Cloudflare(Email Routing 依赖其自动注入 MX / TXT)。
- 一个 Gmail 账号(免费版即可,发信身份上限 99 个)。
- 一个 Resend 账号(免费:100 封/天、3000 封/月、1 域名)作 SMTP 中继。
- (可选)一个备援邮箱如 139,用于短信到达通知。
三、步骤一:Cloudflare Email Routing(收信)
- Cloudflare Dashboard → 域名 → Email Routing → 启用,自动注入 MX 与 SPF/DKIM TXT。
- 目标地址(Destination Addresses):添加并验证主收件箱
you@gmail.com(CF 发验证信,点链接激活)。- 目标地址是”地址簿白名单”,只决定哪些邮箱允许被转发,不直接收信。
- 路由规则(Routing Rules):编辑 Catch-all(全捕获) 规则,动作”转发到”选
you@gmail.com。- 任意未单独定义的
前缀@yourdomain.com都会进 Gmail。
- 任意未单独定义的
⚠️ 最常踩的坑(务必分清)
- 目标地址 ≠ 路由规则:加进”目标地址”≠能收信;必须在”路由规则”里把地址设为转发目标才会投递。
- 单条规则原生只能填一个转发目标;且同 pattern 建多条规则时,只有列表第一条生效。所以”在一条规则里加两个地址”或”建第二条 catch-all”都不能实现双收(见第六节)。
四、步骤二:Resend(发信中继)
- Resend Dashboard 添加域名
yourdomain.com→ 按提示在 Cloudflare DNS 加:- SPF:在现有 SPF TXT 末尾补
include:amazonses.com
(完整示例v=spf1 include:_spf.mx.cloudflare.net include:amazonses.com ~all)- Resend 底层走 Amazon SES 中继发信,所以 SPF 必须包含
include:amazonses.com,否则对方判 spoofing。
- Resend 底层走 Amazon SES 中继发信,所以 SPF 必须包含
- DKIM:添加
resend._domainkey.yourdomain.com的 TXT(Resend 给的值) - DMARC:
v=DMARC1; p=none;(监控期用 none,稳定后可改 quarantine/reject)
- SPF:在现有 SPF TXT 末尾补
- 拿到 API Key(
re_开头)——这就是 Gmail 里的 SMTP 密码。
五、步骤三:Gmail 配置发信身份
Gmail 设置 → 账户和导入 → 「用这个地址发邮件」→ 添加其他电子邮件地址:
- 名称自拟,电子邮件地址填
xxx@yourdomain.com(每个前缀独立加一次) - 取消”视为别名”
- 选「通过你自己的 SMTP 服务器发送」:
- SMTP 服务器
smtp.resend.com,端口587(TLS) 或465(SSL) - 用户名
resend,密码 = Resend API Key
- SMTP 服务器
- Gmail 发验证信到该域名地址 → 经 catch-all 进 Gmail(或备援箱)取验证码 → 回填即完成
- 之后写邮件时「发件人」下拉选对应域名地址即可
- 发信身份上限 99 个(Google 官方)
为什么不用 QQ / 139 网页发信:它们强制要求 POP/IMAP,且 139 网页无外部域名发信身份、QQ 自定义 SMTP 不稳定。Gmail 只需验证信、最稳。
六、步骤四:双收(可选,保留短信 / 备援)
CF 单规则只支持一个目标,双收只有两条真实路径:
方案 A(推荐·最简·不动 Cloudflare)
Gmail 设置 → 转发和 POP/IMAP → 添加转发地址 you@139.com → 验证后选「保留 Gmail 的副本并转发」。Gmail 收到域名信后自动抄一份给 139,短信通知恢复。CF 规则保持 Gmail-only 即可。
方案 B(CF 原生双发·正统)
建 Email Worker 扇出,catch-all 规则动作改”发到 Worker”,脚本把信 message.forward 给 Gmail + 备援箱两个已验证地址(免费额度对个人足够,但需改 CF 规则动作)。
1 | export default { |
七、验证清单
- 收信:从别的邮箱发到
test@yourdomain.com,应在 Gmail 收到。 - 发信 + 鉴权:Gmail 以
test@yourdomain.com回信,对方收到且 From 为该域名。 - SPF/DKIM 显式确认:Gmail 打开该信 → 右上角 ⋮ → 显示原文 → 看
Authentication-Results: spf=pass, dkim=pass, dmarc=pass。 - 双收(如启用):发一封,确认 Gmail 与 139 都到;139 触发短信。
八、限制汇总
| 维度 | 上限 / 说明 |
|---|---|
| Cloudflare 收信 | 入站单封 ≤ 25 MiB;每域名路由规则 200 条;每账号验证目的地 200 个;地址前缀无限(catch-all);仅转发不能发 |
| Gmail 发信身份 | Send mail as ≤ 99 个;免费日发约 500 收件人 |
| Resend 免费 | 100 封/天、3000 封/月、1 域名;单封 ≤ 40 MB(Base64 后) |
| Gmail 网页撰写附件 | ≤ 25 MB(更大走 Google 网盘链接) |
| 实际可收附件 | 受 CF 25 MiB 瓶颈,建议 ≤ 17 MB 最稳 |
📌 本指南为可复用模板:替换占位符、按步骤操作即可。任何环节卡住,优先回到「目标地址 ≠ 路由规则」「单规则单目标」这两条铁律排查。





