纯域名邮箱转发实现收发地址一致:零成本方案

痛点:收发地址不一致

你有一个自己的域名,比如 yourdomain.com,想用 hello@yourdomain.com 收发邮件。

最直觉的做法是买企业邮箱(Google Workspace $6/月、腾讯企业邮箱、阿里企业邮箱等),但如果你只是个人博客、独立开发者或小项目,每月为几封邮件付费实在不划算。

于是你设置了邮件转发——别人发到 hello@yourdomain.com 的邮件会转到你的 Gmail。收没问题了,但回复时发件人变成了你的 Gmail 地址,对方看到的是 yourname@gmail.com 而不是 hello@yourdomain.com

本文介绍一套完全免费的方案,让你用自己的域名邮箱地址同时收发邮件,且对方看到的始终是你的域名地址。文章包含两个方案:

方案概览

收件路径:
  发件人 → hello@yourdomain.com → Cloudflare Email Routing → yourname@gmail.com

发件路径:
  Gmail(Send Mail As: hello@yourdomain.com)→ smtp.gmail.com → 收件人

核心思路:

  1. 收件:Cloudflare Email Routing 免费接收域名邮件并转发到 Gmail
  2. 发件:Gmail 的 "Send Mail As" 功能,通过 Gmail 自己的 SMTP 服务器以域名地址身份发送邮件

整个过程不需要自建邮件服务器,不需要付费,只需要一个 Cloudflare 账号和一个 Gmail 账号。

前置条件

第一步:配置 Cloudflare Email Routing(收件)

1.1 开启 Email Routing

  1. 登录 Cloudflare Dashboard,选择你的域名
  2. 左侧菜单点击 EmailEmail Routing
  3. 点击 Get Started

Cloudflare 会自动提示你添加所需的 DNS 记录,通常包括:

类型 名称 优先级
MX @ route1.mx.cloudflare.net 10
MX @ route2.mx.cloudflare.net 84
MX @ route3.mx.cloudflare.net 12
TXT @ v=spf1 include:_spf.mx.cloudflare.net ~all -

点击 Add records and enable 让 Cloudflare 自动写入。

⚠️ 如果你的域名之前配置过其他邮箱服务的 MX 记录,需要先删除旧的 MX 记录,否则会冲突。

1.2 创建转发规则

  1. 进入 Routes 标签页
  2. 点击 Create address
  3. Custom address:填写你想要的前缀,比如 hello
  4. Destination address:填写你的 Gmail 地址

Cloudflare 会向你的 Gmail 发送一封验证邮件,点击邮件中的链接完成验证。

验证完成后,试着从另一个邮箱发一封邮件到 hello@yourdomain.com,确认能在 Gmail 收到。

💡 你可以创建多个转发规则,比如 contact@support@ 都转发到同一个 Gmail。也可以设置 Catch-all 规则,让所有未匹配的地址都转发过来。

第二步:生成 Google 应用专用密码

Gmail 的 "Send Mail As" 需要通过 SMTP 认证。Google 已经不再支持直接使用账号密码登录 SMTP,必须使用应用专用密码(App Password)

2.1 前提条件(缺一不可)

2026 年很多账号在安全页面中已经不显示"应用专用密码"入口了,但实际上功能还在。先确认你满足以下 3 个条件:

  1. 个人 Gmail 账号——不是公司或学校的 Google Workspace 账号(Workspace 账号由管理员控制,可能被禁用)
  2. 两步验证已开启,且不是只绑定了「安全密钥」(仅使用安全密钥会导致入口被隐藏)
  3. 没有开启「高级保护计划(Advanced Protection Program)」——开启后会禁用应用专用密码

2.2 直接打开应用专用密码页面(最有效)

不要在安全设置里一层层找了,直接访问:

👉 https://myaccount.google.com/apppasswords

登录你的 Google 账号后,页面会直接显示应用专用密码的创建界面。

2.3 创建密码

  1. 输入一个名称(比如 Custom Domain SMTP),点击 创建
  2. Google 会显示一个 16 位密码,立即复制保存,这个密码只显示一次

⚠️ 如果直接访问链接仍然提示不可用,逐一排查上面的 3 个前提条件。最常见的原因是两步验证只绑定了安全密钥,需要额外添加一个手机验证或 Authenticator App 作为验证方式。

第三步:配置 Gmail "Send Mail As"(发件)

这是关键步骤——让 Gmail 能以你的域名地址发送邮件。

3.1 添加发送地址

  1. 打开 Gmail,点击右上角 齿轮图标查看所有设置(See all settings)
  2. 切换到 账号和导入(Accounts and Import) 标签
  3. 找到 用这个地址发送邮件(Send mail as),点击 添加其他电子邮件地址(Add another email address)

3.2 填写信息

弹出窗口中填写:

点击 下一步

3.3 配置 SMTP

这里是最容易出错的地方。不要填你自己域名的 SMTP 服务器(你根本没有),要填 Gmail 的:

字段
SMTP 服务器 smtp.gmail.com
端口 587
用户名 yourname@gmail.com(你的 Gmail 地址)
密码 第二步生成的 16 位应用专用密码
安全连接 TLS

⚠️ 用户名必须填你的 Gmail 地址,不是域名邮箱地址。你是用 Google 的身份认证,通过 Google 的服务器发送邮件。

点击 添加账号(Add Account)

3.4 验证确认

Gmail 会向 hello@yourdomain.com 发送一封确认邮件。因为第一步已经配好了 Cloudflare 转发,这封邮件会自动转到你的 Gmail 收件箱。

打开邮件,复制确认码,粘贴到弹窗中完成验证。

3.5 设为默认发送地址(可选)

回到 账号和导入 页面,在 "Send mail as" 区域,将 hello@yourdomain.com 设为默认(make default)

同时建议勾选:回复邮件时,始终使用收到邮件的地址回复(Reply from the same address the message was sent to)。这样当别人发邮件到你的域名地址时,回复会自动使用域名地址。

第四步:优化 SPF 记录(提高送达率)

当你通过 smtp.gmail.com 以域名地址发送邮件时,收件方的邮件服务器会检查你的域名是否授权 Google 代发。如果 SPF 记录不完整,邮件可能进垃圾箱。

Cloudflare 默认添加的 SPF 记录只包含了 Cloudflare 自己的授权。你需要把 Google 也加进去。

在 Cloudflare DNS 中,编辑你的 TXT 记录:

# 修改前(Cloudflare 默认)
v=spf1 include:_spf.mx.cloudflare.net ~all

# 修改后(加入 Google 授权)
v=spf1 include:_spf.mx.cloudflare.net include:_spf.google.com ~all

这告诉全世界:Cloudflare(负责收件转发)和 Google(负责发件)都是你域名的合法邮件发送者。

第五步:验证测试

配置完成后,做以下测试确保一切正常:

收件测试

用另一个邮箱(比如 Outlook、QQ 邮箱)发一封邮件到 hello@yourdomain.com,确认能在 Gmail 收到。

发件测试

在 Gmail 中新建邮件,发件人选择 hello@yourdomain.com,发送到一个外部邮箱。确认:

SPF 检查

可以用 Mail Tester 发一封测试邮件,检查你的 SPF、DKIM 等配置是否正确。理想分数是 8/10 以上。

💡 基础方案使用 Gmail SMTP,DKIM 签名是 Google 的而非你的域名,部分客户端会显示 "via gmail.com"。如果你在意这一点,请继续阅读下面的「进阶方案」,使用第三方 SMTP + 自定义 DKIM 彻底解决。

完整架构图

                    ┌─────────────────────────┐
                    │     Cloudflare DNS       │
                    │  MX → Cloudflare Mail    │
                    │  TXT → SPF (CF + Google) │
                    └────────────┬────────────┘
                                 │
        ┌────────────────────────┼────────────────────────┐
        │                        │                        │
   收件路径                  DNS 解析                  发件路径
        │                        │                        │
        ▼                        │                        ▼
  外部发件人                     │                  Gmail 界面
  → hello@yourdomain.com         │                  选择 hello@yourdomain.com
  → Cloudflare Email Routing     │                  → smtp.gmail.com:587
  → yourname@gmail.com           │                  → 收件人
        │                        │                        │
        ▼                        │                        ▼
  Gmail 收件箱 ◄─────────────────┘──────────────── 对方收件箱
  (显示发到域名地址)                          (显示来自域名地址)

方案对比

方案 收件 发件 "via" 标签 费用 复杂度
基础方案(Cloudflare + Gmail SMTP) ⚠️ 有 免费
进阶方案(Cloudflare + Brevo SMTP) ✅ 无 免费(300封/天)
Google Workspace ✅ 无 $6/月起
腾讯/阿里企业邮箱 ✅ 无 免费/付费
ImprovMX + Gmail ⚠️ 有 免费(有限制)
自建邮件服务器(Postfix) ✅ 无 服务器费用
Forward Email(开源) ✅ 无 免费/付费

问题根源

使用上面的基础方案(Gmail SMTP 发件),收件人在某些邮件客户端中会看到:

From: hello@yourdomain.com via gmail.com

或者在邮件头中暴露你的 Gmail 地址。这是因为:

  1. DKIM 签名不匹配:Gmail SMTP 用 google.com 的 DKIM 签名,而不是你的域名
  2. Return-Path 暴露:邮件头中的 Return-Pathyourname@gmail.com,和 From 域名不一致
  3. Gmail 检测到 DKIM 签名域 ≠ From 域时,就会显示 "via" 标签

要彻底去掉 "via" 标签,需要用你自己域名的 DKIM 签名发送邮件。 这意味着不能用 smtp.gmail.com,而要用一个支持自定义域名 DKIM 的第三方 SMTP 服务。

方案:Brevo(原 Sendinblue)免费 SMTP

Brevo 提供免费 SMTP 服务,支持自定义域名 DKIM 签名,免费计划 300 封/天,无需信用卡,永久有效。

步骤 1:注册 Brevo 并获取 SMTP Key

  1. 注册 Brevo 账号
  2. 点击右上角账号名 → SMTP & API
  3. SMTP 标签下,点击 Generate a new SMTP Key
  4. 复制生成的 SMTP Key(一长串字母数字)

步骤 2:验证发件人地址

  1. 进入 Senders & IPSenders
  2. 添加 hello@yourdomain.com 作为发件人地址
  3. Brevo 会发送验证邮件(通过 Cloudflare 转发到你的 Gmail),点击链接确认

步骤 3:配置域名 DKIM(关键步骤)

这是去掉 "via" 标签的核心——让 Brevo 用你的域名签名邮件:

  1. 进入 Senders & IPDomains
  2. 点击 Add a domain,输入 yourdomain.com
  3. Brevo 会给你几条 DNS 记录,回到 Cloudflare DNS 添加:
类型 名称
TXT mail._domainkey Brevo 提供的 DKIM 公钥
TXT @ Brevo 验证码(用于验证域名所有权)
  1. 回到 Brevo 点击 Verify,等待 DNS 生效(通常几分钟)

步骤 4:更新 SPF 记录

在 Cloudflare DNS 中,把 Brevo 也加入 SPF 授权:

v=spf1 include:_spf.mx.cloudflare.net include:spf.brevo.com ~all

注意:这里不再需要 include:_spf.google.com,因为发件不再走 Gmail SMTP。

步骤 5:在 Gmail "Send Mail As" 中使用 Brevo SMTP

回到 Gmail 设置 → 账号和导入Send mail as,编辑或重新添加你的域名地址,SMTP 配置改为:

字段
SMTP 服务器 smtp-relay.brevo.com
端口 587
用户名 你的 Brevo 账号邮箱(注册时用的邮箱)
密码 步骤 1 生成的 SMTP Key
安全连接 TLS

完成后 Gmail 会发送确认码到你的域名邮箱(同样通过 Cloudflare 转发到 Gmail),输入确认码即可。

效果对比

基础方案(Gmail SMTP) 进阶方案(Brevo SMTP)
"via gmail.com" 标签 ⚠️ 部分客户端显示 ✅ 不显示
DKIM 签名域 google.com yourdomain.com
Return-Path yourname@gmail.com Brevo 域名
Gmail 地址暴露 ⚠️ 邮件头中可见 ✅ 不暴露
费用 免费 免费(300 封/天)
配置复杂度 中(多了 DKIM 配置)

其他可选的免费第三方 SMTP

服务 免费额度 DKIM 支持 备注
Brevo 300 封/天,永久 推荐,免费额度最大
Resend 100 封/天,3000 封/月 开发者友好,API 优先
SendGrid 100 封/天 老牌服务
Mailgun 1000 封/月(仅前 3 个月) 之后需付费
Zoho Mail 免费计划 5GB 完整邮箱服务,有隐藏的免费计划

💡 如果你每天发件量很少(个人博客、独立开发者),Brevo 的 300 封/天完全够用,且是目前免费额度最慷慨的选择。

常见问题

Q:收件人看到的发件人会不会显示 "由 Gmail 代发"?

使用基础方案(Gmail SMTP)时,部分邮件客户端可能会显示 "via gmail.com"。这是因为 DKIM 签名域和发件人域不一致。使用进阶方案(Brevo 等第三方 SMTP + 自定义 DKIM)可以彻底消除这个标签。

Q:可以配置多个域名地址吗?

可以。在 Cloudflare 中为每个地址创建转发规则,在 Gmail 中为每个地址添加 "Send Mail As" 配置即可。

Q:Cloudflare Email Routing 有数量限制吗?

免费计划没有明确的邮件数量限制,但不适合大量邮件场景(如营销邮件)。个人使用完全够用。

Q:为什么我发出的邮件进了对方垃圾箱?

最常见的原因是 SPF 记录没有包含 include:_spf.google.com。按第四步修改 SPF 记录后等待几分钟 DNS 生效再测试。

Q:能用 Outlook、QQ 邮箱代替 Gmail 吗?

原理相同,但具体配置步骤不同。Outlook.com 也支持 "Send Mail As" 功能,但配置方式略有差异。QQ 邮箱也支持类似功能,需要在设置中开启 SMTP 服务并获取授权码。

总结

通过 Cloudflare Email Routing + Gmail "Send Mail As",你可以零成本实现域名邮箱收发一致:

基础方案(Cloudflare + Gmail SMTP)——5 分钟搞定:

进阶方案(Cloudflare + Brevo SMTP + DKIM)——多花 10 分钟:

根据你的需求选择方案。对大多数独立开发者和个人博客来说,进阶方案的额外 10 分钟配置非常值得。