登录

【开源】Mail-CF:任意前缀域名邮箱收发教程

919
  • Mail-CF 上手教程

    Mail-CF 配合 Cloudflare(简称 CF)的 “全收”,可以收发自己域名下任意合法前缀的邮件,例如 [email protected]。来信转发到你已有的邮箱,发信在 Mail-CF 网页中完成。

    准备工作

    开始前请准备好以下内容:

    无需购买服务器。

    下文的 example.com 和 [email protected] 均为示例,请替换成自己的域名和邮箱。

    第 1 步 开启 CF 全收

    1. 登录 CF,进入 电子邮件服务 → 电子邮件路由,选择自己的域名。首次使用按提示添加邮件 DNS 记录。
    2. 在 目标地址 / Destination Addresses 添加 [email protected],去该邮箱点击 CF 验证邮件中的链接。
    3. 返回 路由规则 → 全收 / Catch-all,开启全收,操作选择 发送到电子邮件,目标选择刚验证的邮箱,保存。
    4. 用另一个邮箱给 [email protected] 发信,确认目标邮箱收到。

    全收无需指向 Worker。若域名已有企业邮箱,先确认原有 MX 记录用途,更换收信 MX 会影响原邮箱。CF 全收说明

    第 2 步 配置 Resend

    验证发信域名

    1. 登录 Resend,进入 Domains → Add Domain,添加同一个域名 example.com。
    2. 进入 “填写你的 DNS 记录” 页面,保持 “启用发送” 开启、“启用接收” 关闭。
    3. 打开 CF 的 域名 → DNS → 记录 → 添加记录,参考下表逐条添加。
    用途类型名称内容 / 目标
    域名验证 DKIMTXTresend._domainkey复制自己 Resend 页面中该行的完整内容
    启用发送CNAMErsend复制自己 Resend 页面中该行的完整目标地址
    启用发送CNAMEsend复制自己 Resend 页面中该行的完整目标地址
    DMARC(可选)TXT_dmarcv=DMARC1; p=none;

    所有记录的 TTL 选择 “自动”,两条 CNAME 的代理状态选择 “仅 DNS”。

    实际记录以自己的 Resend 后台为准。名称若显示为 send.example.com,在 CF 中可填 send。

    保留 CF 原有的收信 MX。 已有 _dmarc 记录时不要重复添加或直接覆盖原有策略。

    添加完成后返回 Resend,点击 “我已经添加了记录”(或 Verify DNS Records),等待域名显示 Verified / 已验证。若仍在验证中,先核对记录,再等待 DNS 生效。Resend DNS 设置说明

    创建 API 密钥

    进入 API Keys → Create API Key,名称填 Mail-CF,权限选 Sending access,域名选刚验证的域名。密钥只展示一次,创建后请复制并妥善保存。

    第 3 步 部署 Mail-CF

    1. 打开 Mail-CF 项目,点击 Fork 保存到自己的 GitHub;项目所有者可直接使用原仓库。
    2. 在 CF 进入 Workers 和 Pages → 创建应用程序,连接 GitHub,选择自己的 Mail-CF 仓库,创建 Worker。
    3. 按下表填写,点击 保存并部署。
    配置项填写内容
    Worker 名称mail-cf,与仓库 wrangler.toml 的 name 一致
    生产分支main
    根目录仓库根目录,通常为 / 或默认留空
    构建命令留空
    部署命令npx wrangler deploy

    保留仓库原有文件和配置。部署成功后,保存 Worker 页面提供的正式 workers.dev 访问地址。

    第 4 步 设置登录密码和发信配置

    进入该 Worker 的 设置 → 变量和机密 / Variables and Secrets,在正式生产环境添加:

    变量名类型填写内容
    PASSWDSecret / 机密自己设置的网页登录密码
    API_KEYSecret / 机密第 2 步复制的 Resend API 密钥
    DOMAIN文本 / 普通变量已验证的域名,如 example.com

    变量名使用大写,DOMAIN 只填域名,不带 https://、@ 或空格。完成后点击 保存并部署。

    请填在运行时 “变量和机密”,不要填到 “构建环境变量”。 首次使用配置这三项即可,不要把密码和密钥写入 GitHub。

    第 5 步 登录并测试收发

    打开 Worker 的正式访问地址,输入 PASSWD 登录。确认页面顶部发件域名正确,填写:

    • 收件人:另一个可收信的邮箱。
    • 发件前缀:hello,不要填完整邮箱。
    • 主题和纯文本正文:填写测试内容。
    • 其他可选项:先留空,暂不添加附件。

    点击发送,对方看到的发件地址就是 [email protected]。去收件邮箱确认收到,再回复这封邮件,检查 CF 全收目标邮箱是否收到回复。

    以后将前缀换成 support,即可使用 [email protected] 收发,无需重新部署。前缀建议先用英文字母和数字。

    在 QQ 等目标邮箱直接回复来信时,通常会使用该邮箱自己的地址。要继续用域名身份,请回到 Mail-CF 写信,填写对应的发件前缀。首次测试时 Reply-To 留空。

    常见问题

    • 登录失败或域名未配置: 检查运行时变量是否填写正确并已保存部署。
    • 发信失败: 检查 Resend 域名是否 Verified、密钥权限是否正确、账户是否还有额度。
    • 收不到邮件: 检查目标邮箱验证、全收开关和 CF 收信 MX,再查看垃圾邮件。
    • 部署失败: 核对第 3 步设置,确认使用完整仓库。
    • 持续提示请求频繁: 稍等再试;若仍然出现,检查 Worker 的 “绑定” 中是否有 RATE_LIMITER。
    收藏支持反对打赏

9 条回复

  • #1

    本质还是 Resend

    个性签名

    全球烧饼交流论坛

    :

    是的,主要是非盈利死号太多,用 cf 方便搞域名邮箱,发件这个就顺手搞了一下

    #2
    共 1 条回复
  • #3

    @gork 用简单的话术说明

    :

    说白了就两件事,别被教程字数吓到。

    收信:把域名丢进 Cloudflare 的电子邮件路由,开「全收」。谁往你域名下随便一个前缀发信,比如 hello@你的域名,CF 都原样转到你平时用的那个邮箱。不用买服务器,也不用每个前缀单独设。

    发信:Mail-CF 就是个套在 Cloudflare Worker 上的网页。登录后填个前缀,背后拿 Resend 的发信接口把信发出去,对方看到的发件人就是 前缀 @你的域名。换前缀不用重新部署。

    所以 @Xsb 那句没说错,发件本质就是 Resend;CF 负责收、负责把域名挂上。你原来域名上要是已经有企业邮箱,先别瞎改收信的 MX,一改原来的邮箱就废了。

    密码和 Resend 的密钥只填 Worker 的运行时「变量和机密」,别写进 GitHub。

    #4
    共 1 条回复
  • #5

    mark 一下 不过收信用 catch all 不会导致收到很多 spam mail 嘛,resend 我记得官方 a up 还是建议用于营销一类邮件的发送而非日常邮件,同类竞品可以看一下 smtp2go,提供免费的发件服务器可以配合 cf 的 email route。。。

    个性签名

    楼上楼下都是大水比,没说我不是

    :

    我单独开的个邮箱收验证码的,非盈利 team 死号方便重新注册

    #7
    共 1 条回复
  • #6

    可以,这教程不错

  • #8

    帮顶支持

  • 亮了 1#9

    bdbd

    个性签名

    无敌大水比

发表回复