登录

[开源] cf-mail:基于 CF Worker + DO 的域名邮箱动态转发面板

642
  • 楼主 编辑于

    Cloudflare Email Routing 增强方案

    利用 Cloudflare Email Routing,为托管在 Cloudflare 的域名快速开启灵活的域名邮箱。
    github

    使用 CF 原生方案的痛点

    • 一对一限制:原生后台一条规则只能转到一个目标邮箱。想同时转给两个邮箱(例如主用 Gmail + 备用 Outlook),必须自己写 Worker。
    • 操作繁琐:每次添加或修改转发目标都要进 Cloudflare 面板手动操作。临时停掉某个接收邮箱时,只能删除整条规则再重建,体验较差。

    原理

    域名开启 Email Routing 后,将 Catch-all 规则直接指向 cf-mail Worker。

    邮件进入时:

    1. Worker 从 Durable Object 中查询当前收件地址对应的规则;
    2. 过滤出处于启用状态的目标邮箱;
    3. 使用 message.forward() 进行并行转发;
    4. 同时记录一条投递日志。

    由于规则存储在 Durable Object 中,增删规则、添加 / 移除目标、暂停某个目标都是秒级生效,无需重新部署 Worker。

    主要功能

    单文件内嵌 Web 面板

    • 与 Worker 一起打包部署,支持绑定自己的二级域名(例如 mail.example.com);
    • 使用 ADMIN_TOKEN 进行登录验证。

    一对多转发 + 独立开关

    • 一个收件地址可挂多个目标邮箱;
    • 在列表中直接点击目标邮箱的胶囊标签,即可单独暂停 / 恢复发往该邮箱,无需删除整条规则。

    固定后缀 & 实时搜索分页

    • 新增 / 编辑规则使用弹窗操作;
    • 域名后缀自动补全,平时只需输入前缀;
    • 规则较多时支持按收件地址或目标邮箱实时过滤,并支持分页。

    投递日志(含中文主题解码)

    • 保留最近 200 条转发记录;
    • 原始邮件头中的 Subject 通常为 =?utf-8?q?...?= 这种 RFC 2047 编码,内置解码器,后台可直接查看中文标题和拒信原因。

    双模式 CLI(cfm / cfmctl)

    零依赖的 Node 命令行工具,平时无需打开网页即可在终端完成操作:

    cfmctl set shop [email protected] [email protected]
    cfmctl disable shop [email protected]
    cfmctl logs 20
    

    CF Token 权限预检(check-token)

    配置 Cloudflare API Token 时容易因漏勾权限而报 10000 Authentication error(例如开启 Email Routing 总开关实际需要 Zone Settings: Edit)。

    提供无副作用的探测命令,部署前先跑一遍,缺少的权限会直接提示去哪里勾选。

    自带 Agent Skill

    若平时使用 Claude Code 或 Cursor,可将仓库中的 skills/cf-mail 放入 skills 目录。之后直接对 AI 说:

    • “把 xxx 转发到某邮箱”
    • “看看最近有没有收信失败”

    即可自动调用 cfmctl 处理。

    快速开始

    具体部署步骤与配置说明请参考项目仓库中的完整文档。

    收藏支持反对打赏

2 条回复

发表回复