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

痛点:收发地址不一致

你有一个自己的域名,比如 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. 左侧菜单点击 Email → Email 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-Path 是 yourname@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 & IP → Senders
  2. 添加 hello@yourdomain.com 作为发件人地址
  3. Brevo 会发送验证邮件(通过 Cloudflare 转发到你的 Gmail),点击链接确认

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

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

  1. 进入 Senders & IP → Domains
  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 分钟配置非常值得。