Cloud Mail:把邮箱服务整个塞进 Cloudflare Workers 的尝试与代价
Cloud Mail 是一项基于 Cloudflare 的电子邮件服务,结合了 Workers、路由、存储和 Web 邮箱。
秒懂
- 它是什么?
- Cloud Mail 用 Workers、D1、R2 和 KV 拼出一套带 Web 界面的邮箱服务。它把成本压得很低,但把复杂性和供应商绑定也一并打包了。
- 适合谁用?
- Cloud Mail 适合已经深度使用 Cloudflare 生态、愿意接受 D1 和 KV 在邮件场景下的性能边界、并且需要快速搭建一个带 Web 界面的邮箱系统的个人或小团队。它不适合对邮件投递率有严格 SLA 要求的业务,因为发送依赖 Resend,接收依赖 Cloudflare 的邮件路由能力,这两者都不是你能完全控制的。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 10 天前。
- 用什么语言写的?
- 主要是 JavaScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的问题:没有服务器的邮箱系统
自建邮箱通常意味着要养一台 VPS,装 Postfix 或 Dovecot,处理 SPF、DKIM、DMARC,还要盯着黑名单。Cloud Mail 换了一条路:把所有组件都放到 Cloudflare Workers 上。你只需要一个域名,就能创建多个邮箱账号,收发邮件,甚至带 Web 界面。它的目标用户很明确:不想为邮箱单独付服务器费用的个人或小团队。成本结构从固定月租变成了按请求计费,邮件量小的时候可能接近零成本。这个思路在云函数时代并不新鲜,但把完整的邮箱协议处理、存储和前端都塞进 Workers,确实是一个大胆的打包方式。
架构拆解:Workers 上的全栈拼图
从仓库目录和 README 能看出,这是一个前后端分离的项目。后端 mail-worker 跑在 Workers 上,用 Hono 做 Web 框架,Drizzle 作为 ORM 操作 D1 数据库。前端是 Vue3 加 Element Plus,构建后应该也是由 Workers 托管静态资源。邮件接收逻辑在 email 目录里,发送则通过 Resend 的 API 完成。附件不落本地,直接存到 R2。缓存和会话相关的数据放在 KV。整个链路里,Workers 承担了 HTTP 入口、业务逻辑和邮件处理,D1 存结构化数据,R2 存二进制文件,KV 存临时状态。这个分工是合理的,但代价是每个组件都是 Cloudflare 的专有服务,迁移几乎不可能。
部署方式:从 README 能看到的步骤
README 没有给出完整的部署命令,只提供了在线演示和部署文档的链接,文档地址是 doc.skymail.ink。仓库里有一个 mail-worker 目录,包含 src/api、src/dao、src/email 等标准分层,入口是 src/index.js。可以推测部署流程是:用 wrangler 登录 Cloudflare 账号,创建 D1 数据库、KV namespace 和 R2 bucket,然后在 wrangler.toml 里绑定这些资源,最后运行 wrangler deploy。数据库迁移应该由 Drizzle 的迁移工具生成 SQL 并应用到 D1。你需要准备一个域名,并在 Cloudflare 上配置邮件路由,把邮件转发到 Workers 处理。由于 README 没有列出具体命令,实际部署必须依赖外部文档,这是一个信息缺口,你在评估时应该先打开部署文档确认步骤是否完整。
功能清单里的亮点与疑点
Cloud Mail 的功能列表相当长:邮件发送支持群发、内嵌图片和附件,接收后可以转发到 Telegram 机器人,还有基于 Workers AI 的验证码识别,管理员可以做 RBAC 权限控制,开放 API 支持批量生成用户。这些功能单独看都很有吸引力,尤其是验证码识别和 TG 推送,属于自建邮箱的痛点功能。但注意,发送依赖 Resend,这意味着你必须有 Resend 账号,并且受它的发送限额和域名验证约束。验证码识别依赖 Workers AI,这又是一个 Cloudflare 的付费服务。功能多不等于零成本,每一项集成都在增加外部依赖。如果你只是想收信,这些功能可能有一半用不上,但代码复杂度已经在了。
真正的限制:D1 和 KV 不是为邮件设计的
邮件系统对数据库的写入模式是高频小写入,尤其是收信时每个邮件都要落库。D1 基于 SQLite,在 Workers 上是一个很好的边缘数据库,但它有写入并发限制,免费层每天有写入行数上限。KV 的读写最终一致,不适合存需要强一致性的数据,比如未读状态或邮件内容。Cloud Mail 把 KV 用于缓存,这个选择是合理的,但如果你收到的邮件量突然增大,KV 的缓存失效和 D1 的写入限流会同时成为瓶颈。另外,Workers 的 CPU 时间限制对邮件解析这种计算密集型任务不友好,一封带大附件的邮件可能消耗大量 CPU 时间。这些是平台本身的约束,不是 Cloud Mail 的 bug,但任何认真使用它的人都必须面对。
替代方案:对比 Cloudflare Email Routing 加独立前端
一个更轻的替代方案是直接用 Cloudflare Email Routing,它可以把收到的邮件转发到任意邮箱,比如 Gmail 或你的企业邮箱,不需要任何代码。Cloud Mail 本质上是在 Email Routing 之上加了一层存储和 Web 界面,让你能直接在浏览器里读信。如果你只需要收信和转发,Email Routing 是零成本、零维护的选择。如果你需要发信,可以单独用 Resend 的 API 写一个小脚本。区别在于,Cloud Mail 把这些功能整合成了一个带管理后台的产品,适合需要给多个用户开邮箱账号的场景,而 Email Routing 只是转发,没有用户体系。另一个方向是使用 Mailgun 或 SendGrid 的免费层,它们提供完整的邮件 API,但你需要自己写存储和前端。Cloud Mail 的价值在于整合,代价是绑定。
维护成本与许可证
项目采用 MIT 许可证,这意味着你可以自由使用、修改和分发,甚至商用,只要保留版权声明。但维护成本不可忽视。依赖 Cloudflare 的专有服务意味着每次 Cloudflare 调整 API 或定价,你的项目都可能需要跟着改。Workers 运行时更新频率很高,Hono 和 Drizzle 也在持续演进,你需要定期升级依赖。邮件相关的功能,比如 SPF 和 DKIM 配置,虽然 Cloudflare 简化了流程,但一旦域名被标记为垃圾邮件来源,排查起来比传统服务器更麻烦,因为你不直接控制 IP 和发送基础设施。仓库的最近更新日期是 2026 年 8 月,说明项目还在活跃开发,但活跃开发也意味着 API 可能不稳定,升级时要注意 changelog。
编辑结论
Cloud Mail 适合已经深度使用 Cloudflare 生态、愿意接受 D1 和 KV 在邮件场景下的性能边界、并且需要快速搭建一个带 Web 界面的邮箱系统的个人或小团队。它不适合对邮件投递率有严格 SLA 要求的业务,因为发送依赖 Resend,接收依赖 Cloudflare 的邮件路由能力,这两者都不是你能完全控制的。也不适合想摆脱供应商锁定的用户,整个项目从数据库到缓存到存储全部钉死在 Cloudflare 上。在决定采用之前,先确认三件事:你的域名能否在 Cloudflare 上正常配置邮件路由,Resend 的发送额度是否够用,以及 Workers 免费层或付费层的 KV 和 D1 写入限制是否扛得住你的邮件量。如果这些都没问题,Cloud Mail 能让你用极低的成本跑起一个功能完整的邮箱服务,否则你会在调试投递和配额的路上花掉比省下的服务器费用更多的时间。
社区笔记