给自己的域名配一个只收信邮箱
2026-11-02 · 域名 / 邮件
需求很具体:一个能收验证码、又不把主邮箱暴露给每个注册过的网站的地址。不需要发信,不需要日历和通讯录,也不想为此付月费。
结论:域名 + Cloudflare Email Routing。域名年费是唯一成本,转发本身免费。
为什么不选另外两条路
| 方案 | 问题 |
|---|---|
| 买企业邮箱 | 按账号按月计费,一个收信地址用不上这些功能 |
| 自建 SMTP | 25 端口普遍被封、IP 信誉要从零养、发出去容易被判垃圾邮件;而且我只需要收 |
| 临时邮箱服务 | 域名在公开黑名单里,注册正经账号会被直接拒 |
前提
域名的 NS 必须指向 Cloudflare。这一步和「转移注册商」是两件事——域名继续留在原注册商,只把解析托管换过去,不产生费用。
# 确认 NS 已经生效
nslookup -type=ns example.com 1.1.1.1
配置过程
1. 添加目标地址。Cloudflare 后台 → Email → Email Routing → Destination addresses,填入现有邮箱。Cloudflare 会往该邮箱发一封验证信,点里面的链接完成验证。
2. 启用 Email Routing。点 Enable 后,Cloudflare 会自动写入 MX 记录和 SPF 记录。如果域名已有旧 MX,会提示冲突,选择替换。
3. 建规则。两种方式:
- Custom address:指定
contact@、signup@这类固定地址; - Catch-all:任意前缀全部接收,适合「每个平台用一个前缀」的用法。
最终的 DNS 记录
| 类型 | 名称 | 值 | 来源 |
|---|---|---|---|
| MX | @ | route1.mx.cloudflare.net (10) route2.mx.cloudflare.net (20) route3.mx.cloudflare.net (30) | 自动 |
| TXT | @ | v=spf1 include:_spf.mx.cloudflare.net ~all | 自动 |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:[email protected]; fo=1 | 手动 |
| CAA | @ | 0 issue "letsencrypt.org" | 手动 |
_dmarc 不是收信必需,但它是一条「这个域名有人在维护」的明确信号,而且 rua 能收到各家的汇总报告。新域名先用 p=none,只观察不拦截。
验证
nslookup -type=mx example.com 1.1.1.1
nslookup -type=txt example.com 1.1.1.1
nslookup -type=txt _dmarc.example.com 1.1.1.1
nslookup -type=caa example.com 1.1.1.1
然后从另一个邮箱发一封测试信,确认能在目标邮箱里看到。Cloudflare 的 Email Routing → Activity log 会记录每一封的投递结果,排查时先看这里。
三个坑
1. DNSSEC 不要开
如果域名是通过某些促销渠道注册的,首年可能不支持 DNSSEC(注册商侧没有 DS 记录)。这种情况下在 Cloudflare 打开 DNSSEC,会让整个域名解析失败——邮件和网站一起挂。确认注册商支持后再开。
2. 只收不发
Email Routing 是单向的。在 Gmail 里点「回复」,发件人是你的 Gmail 地址,不是域名地址。收验证码、点验证链接完全够用;需要「回信确认」的场景不行。
3. 转发信容易进垃圾箱
转发会改变信封发件人,部分邮件系统会因此加分。在目标邮箱里给这个地址建一条过滤器(永不判为垃圾邮件),比事后翻垃圾箱省事。
成本
域名年费 + 0。没有按量计费,没有账号数限制,转发量对个人使用来说远达不到任何阈值。
相关:NS 改了但站点不生效