不花钱、不操心、用得久:用自己的域名实现私有邮箱自由
· 14 分钟阅读
数字生活如今折腾路由,NAS,边缘计算的友友,手里没有几个私有域名都不好意思和人打招呼。有了私有域名,私有邮箱也不能错过。之前我使用过阿里云和腾讯的企业邮箱,这两者空间有限不说,在反垃圾邮件方面着实不怎么样。使用时间不长空间就被耗尽了,而且腾讯邮箱现在要求对微信企业帐号进行绑定,很麻烦。
但私有邮箱并不等于必须花钱买一个企业邮箱。折腾一圈下来,我最终选了 Cloudflare 的邮件路由(Email Routing),理由很实际:
• 域名本来就在这里。 我的 域名、博客和很多服务都托管在 Cloudflare,邮件路由的 MX、SPF、DKIM 记录可以一键自动写入,不用再对着文档手填,十分方便。
• 没有空间和账号数的烦恼。 Cloudflare的邮件路由只负责转发,信存在你自己的邮箱里,空间由你的邮箱决定;收信免费且不限量,也不按账号收费。
• 邮箱地址想建多少就建多少。 配合 Catch-all 和规则,注册用的小号、拒收和垃圾过滤都能自己来定。
• 不用绑定任何平台账号。 也不用为了一个邮箱去注册微信企业账号,验证很多信息。
部署方法
使用这个邮件路由的唯一前提是域名的 DNS 必须交给 Cloudflare 解析;邮件路由本身免费、收信不限量,所以先把地基打好。
域名托管
域名在哪里买的都无所谓,阿里云(万网)、腾讯云 DNSPod、Namecheap、GoDaddy 或 Cloudflare Registrar 均可,关键是把 NS(名称服务器)改成 Cloudflare 分配的那一组。
1. 登录 Cloudflare,在控制台选择添加域名,输入你的根域名(如 example.com),方案选 Free 即可。
2. Cloudflare 会自动扫描现有 DNS 记录。逐条核对,缺的补上,多余的删掉,尤其是A / CNAME 记录,避免切换后解析中断。
3. 页面会给出两条分配好的 NS(形如 xxx.ns.cloudflare.com)。回到域名注册商后台,把原有的 NS 全部替换成这两条,不要和旧 NS 混用。
4. 回到 Cloudflare 点击检查,等域名状态从 待定 变成 活动 。通常几分钟,个别注册商汇长一些,通常不超过 24 小时。
几个容易踩的坑:
• 先关 DNSSEC。 如果注册商那边开了 DNSSEC(存在 DS 记录),切换 NS 之前要先关掉并等待生效,否则会解析失败、域名会一直“待定”。切换完成后可以在 Cloudflare 里重新开启。
• 不要提前填 NS。 必须先在 Cloudflare 添加域名,再按它分配的 NS 去注册商修改,提前预设的 NS 会被新分配的覆盖。
• 如果你原来用过阿里云、腾讯企业邮箱,旧的 MX 记录可以先别删,等开通邮件路由前再处理。
邮件路由开通
域名变成 活动 后,在控制台进入 计算 → 电子邮件服务 → 电子邮件路由 ,选择你的域名开始启用。如果菜单位置与你看到的不同,在控制台搜索 “电子邮件路由” 即可。
启用时 Cloudflare 会自动帮你在 DNS 里添加三类记录,不需要手工录入:
| 记录类型 | 作用 | 说明 |
|---|---|---|
| MX | 让全球发给你域名的邮件先到 Cloudflare | 指向 Cloudflare 的邮件服务器,一般有多条 |
| TXT (SPF) | 声明哪些服务器可以代表你的域名 | 已有 SPF 记录时不会覆盖,需要手动追加 Cloudflare 的 include: |
| TXT (DKIM) | 用于签名验证 | 主机名形如 cf2024-1._domainkey |
如果域名上还留着阿里云、腾讯的旧 MX 记录,开通会报错 2008(存在非 Cloudflare 的 MX 记录)。切换顺序很重要:
1. 先完成收件邮箱验证(目标地址属于账户,可以提前添加)。
2. 到 DNS → 记录 删除旧服务商的 MX。
3. 立刻启用 电子邮件路由 ,让 Cloudflare 写入新的 MX。两步之间有短暂空窗,大多数发信方会重试,基本不会丢信。
4. 马上创建路由规则。 MX 一旦指向 Cloudflare,没有匹配规则的地址会被直接退信(提示地址不存在),发信方不再重试。
还在用旧邮箱发信的话,保留它的 SPF include: 与 DKIM 记录;不再使用就可以一并清理。迁移期间旧邮箱账号先别注销,以防某些缓存了旧 MX 的发信方还在往那边投递。
验证收件邮箱
Cloudflare 不提供邮箱空间,它只负责把发到私有域名的邮件转发到你已有的真实邮箱,这个真实邮箱在它的术语里叫目标地址(Destination address)。这也是不再被空间大小限制的原因:邮件存在你自己的邮箱里(国内推荐阿里邮箱),空间由那边决定。如果目标邮箱空间不足时,可以切换为另一个目标邮箱。
1. 进入 电子邮件路由 → 目标地址 。
2. 在 目标地址 输入框填入你平时真正会看的邮箱,提交。推荐填阿里邮箱地址(个人免费的 @aliyun.com 邮箱即可)。
3. 登录那个邮箱,找到 Cloudflare 发来的验证邮件,点击 Verify email address。
4. 回到页面,地址状态变成已验证即可。
注意几点:
• 未验证的地址不能用于路由规则,指向它的规则会保持禁用状态;没收到验证邮件先查垃圾箱(阿里邮箱对境外转发的邮件可能过滤得较严,必要时把 Cloudflare 的发件地址加入白名单),再在列表里重发。
• 目标地址属于 Cloudflare 账户而不是某个域名,验证一次后可以给名下所有域名复用。
• 每个账户最多 200 个目标地址,自用及小团队足够。想给家人、员工分别收信,把他们的真实邮箱都验证一遍即可。
设置私有邮箱地址
私有邮箱地址就是一条「匹配地址 → 目标地址」的路由规则,创建的那一刻这个地址就能收信,不需要再建「账号」。
1. 进入 电子邮件路由 → 路由规则,点击创建路由规则。
2. 地址 填前缀,之后选择域名,比如 地址填hello,域名选择@example.com,完整地址就是 hello [at] example [dot] com。
3. 操作 选 发送到电子邮件,目标选上一节已验证的邮箱。
4. 保存。从另一个邮箱给 hello [at] example [dot] com 发一封测试信,几秒到几分钟内应该到达目标邮箱。
5. 给企业和个人分开命名会更清晰,地址数量上限是每个域名 200 条规则,基本用不完。
6. 为子域名(如 corp.example.com)也开邮箱,在 电子邮件路由 的 设置 → 子域名功能 里添加即可,不过子域名不支持 全收,只能逐个建规则。
Cloudflare 还支持和Gmail类似的 + 子地址:发到 hello+shop [at] example [dot] com 的信会回退到 hello@ 的规则。开启后注册账号时随手加后缀,就能在收件箱里可以查看邮件的后缀,并用后缀过滤来源。
设置邮件路由
路由的核心就是一句话:按收件地址匹配规则,然后执行一个动作。自带的动作有两种:
| 动作 | 效果 | 适用场景 |
|---|---|---|
| 发送到电子邮件 | 转发到已验证的真实邮箱 | 日常收信 |
| 发送到Worker | 转发到同账号下自定义的Worker | 自己编程的进阶高级场景 |
| 丢弃 | 静默丢弃,发信方不会收到退信 | 不想再收到的地址 |
一封信进来的流程是:发信方服务器投递到 Cloudflare → 做 SPF/DKIM/DMARC 校验(按发信域名的 DMARC 策略不通过会被拒收) → 匹配收件地址的规则 → 执行动作。转发时 Cloudflare 会改写信封发件人(SRS),保证转发后不被目标邮箱当成伪造邮件。
开启 全收(Catch-all):
1. 进入 电子邮件路由→ 路由规则。
2. 找到 全收 规则,把开关打开,状态显示 活动。
3. 动作 选 发送到电子邮件,点击 保存。
邮件路由会转发发到域名下的任意地址的邮件,包括拼写错误的前缀。匹配顺序上,你显式创建的具体地址优先,没有任何规则命中时才轮到 全收。
一点提醒:一条规则只能指向一个目标邮箱。想让不同用途的地址进不同的邮箱,分别建规则即可;想让同一封信同时进多个邮箱,自带功能做不到,但可以通过Worker实现。
规则建好后可以随时编辑目标地址、停用或删除。暂时不想收某个地址的信,把它的规则停用就行,不必删掉。
发信
邮件路由只管收信。要用 hello [at] example [dot] com 这样的私有地址发信,可以走阿里这边的两条路:方案一最省事,收信和发信都留在同一个阿里邮箱里;方案二更正规,适合需要稳定送达的场景。
两个方案的前提相同:第三节验证的目标邮箱是你的阿里邮箱。阿里的菜单名称会随版本更新,下面按功能描述,以你实际看到的设置页为准,配好后务必自己发几封测试信。
方案一:阿里邮箱的「其他邮箱」(先试这个)
1. 登录阿里邮箱(网页版或客户端),进入设置,找到「其他邮箱」(添加其他邮箱)功能。
2. 添加你的私有地址 hello [at] example [dot] com。收信这一头已经由 Cloudflare 路由转发到本邮箱,这里的重点是把它设为可选的发件身份。
3. 如果页面要求验证,验证信会发到 hello [at] example [dot] com,正好经过上面搭好的路由转发回你的阿里邮箱,点击链接或填入验证码即可。
4. 发信方式优先选用阿里邮箱自己的服务器;写新邮件时在「发件人」里选择私有地址。
5. 分别给自己的 QQ 邮箱、网易邮箱各发一封测试信,检查发件人显示是否正确、有没有进垃圾箱。
方案二:阿里云邮件推送(DirectMail)
1. 用已实名认证的阿里云账号开通邮件推送。免费额度有限,个人和小团队低频发信够用。
2. 新建发信域名,建议用子域名(如 mail.example.com),不要直接用根域名:根域名上的 MX 记录会和 Email Routing 冲突。
3. 控制台会给出需要添加的解析记录(所有权验证、SPF、DKIM 等)。到 Cloudflare 的 DNS 页面逐条添加,全部保持「仅 DNS」,然后回控制台点验证。
4. 新建发信地址(如 hello [at] mail [dot] example [dot] com)并设置 SMTP 密码。
5. 在 Foxmail、Thunderbird 等客户端或你的网站程序里,按控制台给出的 SMTP 服务器与端口配置发信。想让对方回信回到私有地址,就把 Reply-To 设为 hello [at] example [dot] com,回信会经 Cloudflare 路由进入你的阿里邮箱。
两个方案都有几点要事先知道:
• 邮件实际由阿里的服务器发出,部分客户端会显示「代表」之类的提示。SPF 要把阿里对应的 include: 合并进域名现有的那条 SPF 记录(一个域名只能有一条 SPF,不要新建第二条),具体值以阿里控制台或帮助页给出的为准。
• 如果给域名设置了严格的 DMARC 策略(如 p=reject),发信域不一致时可能被对方拒收。自用阶段建议先保持宽松(p=none),观察一段时间的送达情况再收紧。
• 国内邮箱(QQ、网易等)对新域名、首次发信往往比较严,头几封可能进垃圾箱。让对方把你的地址加入白名单,多正常往来几封,送达会逐渐稳定。
使用体验
搭好之后最大的感受是自由:地址不再是稀缺资源,空间也不用再操心。下面三个用法是我日常真正用得上的。
随机账号:注册用小号
开启 全收 之后,域名就有了无限个邮箱地址。每注册一个网站、每用一个服务,就随手写一个不重复的前缀作为注册邮箱,不用提前创建:
• 注册某云服务用 cloudvendor [at] example [dot] com
• 注册论坛用 forum-2026 [at] example [dot] com
• 一次性验证用 x7k2q [at] example [dot] com
这些邮件都会落到同一个真实收件箱,验证码、激活链接照常收得到。好处有三个:
1. 能追溯泄露源。 哪个网站泄露了数据、哪个服务卖了你的邮箱,看收件地址前缀就知道。
2. 能随时掌控。 某个前缀开始收到骚扰,单独给它建一条拒收规则就完事,不影响其他地址。
3. 不暴露主邮箱。 公开场合用小号,真正的收件邮箱地址始终不出现在对方的数据库里。
前缀建议统一成「服务名 + 随机码」的格式,最好直接用密码管理器随机产生,一个站点对应一个地址。
指定账号收取或拒收
随机地址用久了,总会有几个地址被爆破、被卖给广告商。这时候分账号路由就派上用场,把不同地址归给不同的处理方式。
1. 指定账号收取
为不同用途的地址建独立规则,指向不同的真实邮箱。比如 billing@ 转给财务邮箱,admin@ 转给自己的工作邮箱,support@ 转给合作伙伴。只要目标邮箱都已验证,就能在一个域名下实现一个小团队的收件分流。
2. 指定账号拒收
有两种办法,效果不同:
| 方法 | 发信方看到什么 | 适合 |
|---|---|---|
| 给该地址建规则,动作选 Drop | 什么都没有,邮件被静默丢弃 | 不想再看到的广告地址 |
| 关闭 全收,只保留需要的地址 | 收到「地址不存在」的退信 | 地址已经固定、不再随手编小号 |
拒收某个地址: 在 路由规则 里添加要拒收的邮箱地址,在规则中选择拒收并保存即可。具体地址的规则优先于 全收,所以即使 全收 还开着,这个前缀的信也会被丢弃。
用白名单思路收紧: 常用地址固定下来之后,可以把 全收 关掉,只保留建过规则的地址。其余地址的来信会被退回,等于「只有我批准的地址才能联系到我」。它和前面的「随机账号」是两种取向:开着 全收 最自由,关掉最干净,可以按阶段切换。
过滤垃圾邮件
垃圾邮件在到达你的收件箱之前,会先经过邮件路由自带的几道关卡。其中有的完全自动,有的需要你在后台点几下,都不用写代码。
1. 发信方校验(自动)。 每封信进来,Cloudflare 都会检查 SPF、DKIM、DMARC。发信域名的 DMARC 策略要求拒收而校验不通过的邮件,会在这一步被直接拒绝,不会进入你的规则。不少伪造发件人的垃圾信到这里就被挡下了。
2. 实时黑名单(自动)。 来自已知垃圾邮件 IP 黑名单的投递会被拒收。
3. 地址层面的控制(你来设)。 给被骚扰的地址建规则选 拒收。
4. 目标邮箱自身的垃圾过滤。 信转发到阿里邮箱后,仍然会经过它的垃圾邮件过滤。建议保持开启,并在阿里邮箱的设置里管理黑白名单。
进阶:更多玩法
邮件路由自带的规则覆盖了日常需求,但它只能按收件地址匹配。如果愿意多投入一点配置和维护,还可以解锁更细的玩法,效果大致是这样:
• 带理由的退信。 停用的地址不再静默丢弃,而是给发信方一封说明地址已停用的退信,正规发信方可以据此清理自己的名单。
• 黑名单批量管理。 把所有停用的前缀写在一个清单里,新增只需加一项,不用在后台逐条建规则。
• 白名单与 全收 兼得。 继续保留随手编小号的自由,同时只放行你批准的地址,其余的一律退回。
• 按发件地址质量过滤。 发件地址缺少 @、域名不完整或者为空的邮件直接拦下,并留下记录供事后检查,挡住校验通过但来路可疑的垃圾信。
• 一封信同时进多个邮箱, 以及自动回复、按关键词分拣归档等。
• 完全的私有地址发信。 回信和主动发信都只显示你的域名地址(如 hello [at] example [dot] com)作为发件人,看不到阿里邮箱的痕迹,也不会出现「代表」之类的提示;回信自动沿用收信时的那个地址,送达也更稳定。
这些玩法大部分是基于Worker,需要额外的配置和维护。感兴趣的话欢迎留言讨论。
小结与局限
收信靠 Cloudflare 邮件路由,信件统一落进阿里邮箱,发信借阿里的服务,收信这一头完全免费:收信不限量,地址想建多少建多少,也不再被某家邮箱的空间和绑定规则卡脖子。代价是邮件路由本质上只是「转发器」,有几个局限要提前知道:
• 只收不发。 邮件路由不提供发信功能。发信要靠阿里邮箱的「其他邮箱」或阿里云邮件推送,所以目标邮箱建议选阿里邮箱。
• 单封邮件上限 25 MiB。 超过的会在投递阶段被拒收,大附件请改用网盘或对象存储分享链接。
• 有数量上限。 每个域名 200 条路由规则,每个账户 200 个目标地址。
• 没有网页邮箱。 信实际进的是目标邮箱,阅读、归档、搜索、发信都在那边进行;以后想换目标邮箱,改规则里的目标地址即可,但发信需要重新配置。