在 Cloudflare Workers 上零成本搭建私有邮箱服务
Cloud Mail:在 Cloudflare Workers 上零成本搭建私有邮箱服务
项目介绍
在当今互联网时代,拥有一个属于自己的域名邮箱,无论是用于个人通信、业务往来还是注册各类服务,都显得越来越重要。但传统的自建邮箱方案不仅需要一台服务器,还需要配置复杂的邮件系统(如 Postfix、Dovecot 等),维护成本极高。而 Cloud Mail 的出现让这一切变得简单——它是一个运行在 Cloudflare Workers 上的现代邮箱服务,让你可以在零服务器成本的情况下,拥有一个功能完整、界面优雅的私有邮箱系统。
项目地址:https://github.com/luochen-zhang/cloud-mail
开源协议:MIT
核心优势
- 费用:0 元(利用 Cloudflare Workers 免费额度)
- 性能:极速(部署在 Cloudflare 全球边缘节点)
- 灵活:只需要一个域名,就可以创建多个不同的邮箱账号
- 运维成本:零——无需管理服务器
核心功能
Cloud Mail 是一套完整的邮箱服务解决方案,功能覆盖了日常使用的方方面面:
| 功能 | 说明 |
|---|---|
| 邮件发送 | 集成 Resend 发送邮件,支持群发、内嵌图片和附件发送,实时查看发送状态 |
| 附件收发 | 支持收发附件,使用 Cloudflare R2 对象存储保存和下载文件 |
| 邮件推送 | 接收邮件后可以转发到 Telegram 机器人或其他服务商邮箱 |
| 验证码识别 | 使用 Cloudflare Workers AI,自动识别邮件中的验证码 |
| 管理员功能 | 可以对用户和邮件进行管理,RBAC 权限控制对功能及使用资源进行限制 |
| 多号模式 | 开启后一个用户可以添加多个邮箱地址 |
| 开放 API | 支持使用 API 批量生成用户,多条件查询邮件 |
| 数据可视化 | 使用 ECharts 对系统数据详情、用户邮件增长进行可视化展示 |
| 个性化设置 | 可自定义网站标题、登录背景、透明度 |
| 人机验证 | 集成 Turnstile 人机验证,防止批量注册 |
| 响应式设计 | 响应式布局自动适配 PC 和大部分手机端浏览器 |
技术栈
Cloud Mail 采用了现代化的全栈技术方案:
- 平台:Cloudflare Workers
- Web 框架:Hono
- ORM:Drizzle
- 前端框架:Vue3
- UI 框架:Element Plus
- 邮件推送:Resend
- 缓存:Cloudflare KV
- 数据库:Cloudflare D1
- 文件存储:Cloudflare R2
部署教程
准备工作
开始部署前,你需要准备:
- 一个 Cloudflare 账号
- 一个 GitHub 账号
- 一个已托管在 Cloudflare 的域名(用于配置邮箱服务)
- (可选)一个 Resend 账号(用于邮件发送功能)
方式一:可视化快速部署(推荐)
这是最简单的部署方式,全程在浏览器中完成。
第 1 步:Fork 仓库
登录 GitHub,打开 Cloud Mail 项目仓库,点击右上角的 Fork 按钮,将仓库复制到你的 GitHub 账号下。
第 2 步:进入 Cloudflare Workers & Pages
登录 Cloudflare 控制台,进入 Workers & Pages 创建页面:
https://dash.cloudflare.com/?to=/:account/workers-and-pages/create
第 3 步:连接 GitHub 并选择仓库
点击 Continue with GitHub,按提示授权 Cloudflare 访问你的 GitHub 账号,然后选择你刚刚 Fork 的 cloud-mail 仓库。
第 4 步:设置构建和部署命令
Cloud Mail 包含两个子项目:
mail-worker:后端 Worker 项目mail-vue:Vue 前端项目
在部署时,需要分别进行配置:
构建命令:npm run build(在项目根目录执行)
部署命令:Cloudflare Pages 会自动识别并部署前端项目,Worker 部分需要单独部署。
💡 建议参考项目的部署文档获取最新的部署配置细节。
第 5 步:配置 Cloudflare 资源
Cloud Mail 依赖以下 Cloudflare 资源,需要在部署前创建并配置:
- D1 数据库:用于存储用户、邮件等数据
- KV 命名空间:用于缓存
- R2 存储桶:用于存储附件
在 Cloudflare 控制台中依次创建这些资源,并在 wrangler.toml 中配置对应的绑定信息。
第 6 步:配置邮箱相关服务
- 配置域名邮箱:在 Cloudflare 的 Email Routing 中配置你的域名邮箱接收规则
- 配置 Resend:注册 Resend 账号,获取 API Key,用于邮件发送功能
- (可选)配置 Telegram Bot:如果希望邮件推送到 Telegram,配置 Bot Token
第 7 步:部署并初始化
完成以上配置后,在 Cloudflare Pages 中触发部署,等待构建完成。部署成功后:
- 访问你的 Pages 域名,进入 Cloud Mail 登录页面
- 首次使用需要注册管理员账号
- 登录后即可开始配置和使用邮箱服务
💡 项目提供了在线演示供体验,你可以在部署前先感受一下完整功能。
方式二:CLI 部署(适合开发者)
如果你习惯使用命令行,也可以通过 Wrangler CLI 部署:
# 克隆仓库
git clone https://github.com/luochen-zhang/cloud-mail.git
cd cloud-mail
# 安装依赖
npm install
# 登录 Cloudflare
npx wrangler login
# 部署 Worker(需先配置 wrangler.toml)
cd mail-worker
npx wrangler deploy
# 构建并部署前端(需先配置环境变量)
cd ../mail-vue
npm run build
# 将 dist 目录部署到 Cloudflare Pages