域名邮箱:用自家域名收发邮件
用 user@example.com 而不是 xxx@gmail.com,专业感完全不同。实现起来也比想象中简单,而且大多免费。
一、三条路
| 方案 | 成本 | 能收能发 | 适合 |
|---|---|---|---|
| 邮件转发(Email Routing) | 免费 | 只转发到现有邮箱 | 个人、小站 |
| 企业邮箱(腾讯/阿里/飞书) | 免费或低价 | 完整 | 团队、正式用途 |
| 专业服务(Google Workspace 等) | 按人收费 | 完整 | 商业 |
个人站点用转发就够:别人发到 user@example.com,你用自己的 Gmail/QQ 邮箱收到;回复时还能用它作为发件人。
二、Cloudflare Email Routing(免费推荐)
前提:域名的 DNS 托管在 Cloudflare(且是橙色云或灰色云都行)。
配置步骤
1. Cloudflare 控制台 → 域名 → Email → Email Routing
2. 点 "Get started",它会自动添加必要的 MX 和 TXT 记录
3. 创建自定义地址:user@example.com → 转发到 you@example.com
4. 去目标邮箱确认验证邮件它自动加的记录:
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# 验证
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 发信,需要:
- 在邮箱服务里添加「其他发件地址」并验证(Gmail、QQ 邮箱都支持);
- 配好 SPF/DKIM/DMARC(Cloudflare 已经帮你加了 SPF 和 DMARC);
- DKIM 需要在 Email Routing 的 "Settings" 里生成并添加。
# Gmail:设置 → 账号 → 用其他地址发送 → 添加
# 会发验证邮件到你配的转发地址,验证通过即可
# 验证 DKIM
dig +short TXT cf2024-1._domainkey.www.bzii.cn三、企业邮箱方案(国内)
| 服务 | 免费版 | 特点 |
|---|---|---|
| 腾讯企业邮 | 有(有限账号数) | 国内可达性好,微信提醒 |
| 阿里邮箱 | 有免费版 | 与阿里云产品衔接 |
| 飞书邮箱 | 需付费版 | 协作整合 |
| Zoho Mail | 有免费版(5 用户) | 国际服务,功能全 |
配置方式都一样:在 DNS 里加服务商给的 MX 记录 + 验证 TXT。
# 腾讯企业邮的 MX(示例,以控制台给的为准)
MX @ → mxbiz1.qq.com 优先级 5
MX @ → mxbiz2.qq.com 优先级 10
TXT @ → v=spf1 include:spf.mail.qq.com ~all
# 验证记录
TXT @ → 一串验证字符串四、MX 记录要点
# 优先级数字越小越优先
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 请求处理,邮件就收不到了。
# 检查记录是否生效
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:
1. 用一家邮件 API(Resend / Brevo / 阿里云)
2. 在 DNS 加它的 SPF、DKIM、DMARC
3. 完事好处:收不到垃圾邮件(因为根本没有收件服务),配置也简单。
noreply@example.com 这种地址就适合这样处理。
六、安全相关
域名邮箱是钓鱼的高价值目标,务必配好认证三件套:
| 记录 | 作用 |
|---|---|
| SPF | 声明哪些服务器可以代表你的域名发信 |
| DKIM | 给邮件加签名,防篡改 |
| DMARC | 告诉收件方如何处理认证失败的邮件 |
详见「DNSSEC、CAA 与邮件记录」那篇。
# 没有 DMARC 的话,任何人都能伪造 user@example.com 发信
# 加一条最基础的:
TXT _dmarc v=DMARC1; p=none; rua=mailto:dmarc@example.com七、排错
| 现象 | 排查 |
|---|---|
| 收不到邮件 | MX 是否生效 / 是否被 CDN 代理 |
| 发出去进垃圾箱 | SPF/DKIM 没配 |
| 验证邮件一直不来 | 检查垃圾箱,或换一个转发目标 |
| 提示「域名已配置其他邮箱」 | 有残留 MX 记录 |
# 手动测试收信(从另一台服务器发)
echo "test" | mail -s "test" user@example.com
# 看邮件服务器返回什么(模拟 SMTP 对话)
telnet mx.bzii.cn 25八、我的配置
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)域名邮箱的成本几乎为零,收益是「看起来像个正经站点」。值得花半小时配一下。
