域名邮箱:用自家域名收发邮件

user@example.com 而不是 xxx@gmail.com,专业感完全不同。实现起来也比想象中简单,而且大多免费。

一、三条路

方案成本能收能发适合
邮件转发(Email Routing)免费只转发到现有邮箱个人、小站
企业邮箱(腾讯/阿里/飞书)免费或低价完整团队、正式用途
专业服务(Google Workspace 等)按人收费完整商业

个人站点用转发就够:别人发到 user@example.com,你用自己的 Gmail/QQ 邮箱收到;回复时还能用它作为发件人。

二、Cloudflare Email Routing(免费推荐)

前提:域名的 DNS 托管在 Cloudflare(且是橙色云或灰色云都行)。

配置步骤

bash
1. Cloudflare 控制台 → 域名 → Email → Email Routing
2. 点 "Get started",它会自动添加必要的 MX 和 TXT 记录
3. 创建自定义地址:user@example.com → 转发到 you@example.com
4. 去目标邮箱确认验证邮件

它自动加的记录:

bash
MX   www.bzii.cn          → route1.mx.cloudflare.net (优先级 10)
MX   www.bzii.cn          → route2.mx.cloudflare.net (优先级 20)
MX   www.bzii.cn          → route3.mx.cloudflare.net (优先级 30)
TXT  www.bzii.cn          → v=spf1 include:_spf.mx.cloudflare.net ~all
TXT  _dmarc.www.bzii.cn   → v=DMARC1; p=none
bash
# 验证
dig +short MX www.bzii.cn
dig +short TXT www.bzii.cn | grep spf

子地址(Catch-all)

可以开「捕获所有」:*@www.bzii.cn 全部转发到同一个邮箱。

好处:注册各种服务时用 service-name@example.com,能看出是谁泄露了你的邮箱。 坏处:会收到大量垃圾邮件(因为任何人可以编一个地址)。

我的做法:不开 catch-all,只建几个明确的地址(hi@、admin@、noreply@)。

用域名地址发信

转发只解决「收」。要用 user@example.com 发信,需要:

  1. 在邮箱服务里添加「其他发件地址」并验证(Gmail、QQ 邮箱都支持);
  2. 配好 SPF/DKIM/DMARC(Cloudflare 已经帮你加了 SPF 和 DMARC);
  3. DKIM 需要在 Email Routing 的 "Settings" 里生成并添加。
bash
# Gmail:设置 → 账号 → 用其他地址发送 → 添加
# 会发验证邮件到你配的转发地址,验证通过即可

# 验证 DKIM
dig +short TXT cf2024-1._domainkey.www.bzii.cn

三、企业邮箱方案(国内)

服务免费版特点
腾讯企业邮有(有限账号数)国内可达性好,微信提醒
阿里邮箱有免费版与阿里云产品衔接
飞书邮箱需付费版协作整合
Zoho Mail有免费版(5 用户)国际服务,功能全

配置方式都一样:在 DNS 里加服务商给的 MX 记录 + 验证 TXT。

bash
# 腾讯企业邮的 MX(示例,以控制台给的为准)
MX  @  → mxbiz1.qq.com  优先级 5
MX  @  → mxbiz2.qq.com  优先级 10
TXT @  → v=spf1 include:spf.mail.qq.com ~all

# 验证记录
TXT @  → 一串验证字符串

四、MX 记录要点

bash
# 优先级数字越小越优先
MX  @  10  mail1.example.com
MX  @  20  mail2.example.com

# 常见错误:
1. 主机记录写成完整域名(www.bzii.cn.bzii.cn)
2. 值和 CNAME 冲突(MX 不能指向 CNAME)
3. 开了 CDN 橙色云导致 MX 不生效(MX 记录必须灰色云!)

重点提醒:如果你用 Cloudflare 的橙色云,MX / SPF / DKIM / DMARC 这些记录必须是灰色云(DNS only),否则会被当成 Web 请求处理,邮件就收不到了。

bash
# 检查记录是否生效
dig +short MX www.bzii.cn
dig +short TXT www.bzii.cn | grep spf
dig +short TXT _dmarc.www.bzii.cn

# 在线体检
# mxtoolbox.com → MX Lookup / Email Health

五、只发不收的方案

很多站点只需要「用域名发出通知邮件」,不需要收。这种情况不用配 MX:

bash
1. 用一家邮件 API(Resend / Brevo / 阿里云)
2. 在 DNS 加它的 SPF、DKIM、DMARC
3. 完事

好处:收不到垃圾邮件(因为根本没有收件服务),配置也简单。

noreply@example.com 这种地址就适合这样处理。

六、安全相关

域名邮箱是钓鱼的高价值目标,务必配好认证三件套:

记录作用
SPF声明哪些服务器可以代表你的域名发信
DKIM给邮件加签名,防篡改
DMARC告诉收件方如何处理认证失败的邮件

详见「DNSSEC、CAA 与邮件记录」那篇。

bash
# 没有 DMARC 的话,任何人都能伪造 user@example.com 发信
# 加一条最基础的:
TXT  _dmarc  v=DMARC1; p=none; rua=mailto:dmarc@example.com

七、排错

现象排查
收不到邮件MX 是否生效 / 是否被 CDN 代理
发出去进垃圾箱SPF/DKIM 没配
验证邮件一直不来检查垃圾箱,或换一个转发目标
提示「域名已配置其他邮箱」有残留 MX 记录
bash
# 手动测试收信(从另一台服务器发)
echo "test" | mail -s "test" user@example.com

# 看邮件服务器返回什么(模拟 SMTP 对话)
telnet mx.bzii.cn 25

八、我的配置

bash
1. Cloudflare Email Routing 建 3 个地址
   user@example.com     → 个人日常邮箱
   user@example.com  → 同上(用于站长平台注册)
   dmarc@example.com  → DMARC 报告接收

2. SPF + DKIM + DMARC 配齐

3. 不开 catch-all

4. 服务器告警邮件走 msmtp 中继(不依赖 MX)

域名邮箱的成本几乎为零,收益是「看起来像个正经站点」。值得花半小时配一下。