Cloud Mail – 基于 Cloudflare 的免费邮箱服务搭建教程

Cloud Mail – 基于 Cloudflare 的免费邮箱服务搭建教程

本文整理自 GitHub 开源项目,原文链接:maillab/cloud-mail

原作者:maillab 整理日期:2026-06-30

只需一个域名,即可搭建属于自己的全功能邮箱系统!Cloud Mail 是一个基于 Cloudflare 生态的开源邮箱服务,支持邮件收发、附件管理、验证码识别等功能,最重要的是 —— 完全免费部署,无需服务器成本。


项目简介

Cloud Mail 利用 Cloudflare 的免费额度(Workers、D1 数据库、R2 存储、KV 缓存),为个人用户提供了一套完整的邮箱解决方案。相比传统邮箱服务器动辄每月几十美元的成本,Cloud Mail 在 Cloudflare 免费计划内即可满足个人使用需求。

在线体验https://skymail.ink

项目界面预览:

邮件列表界面
发送邮件界面

核心功能

📧 完整的邮件功能

  • 邮件收发:接收外部邮件,通过 Resend 发送邮件
  • 附件支持:基于 R2 对象存储的附件上传下载
  • 群发功能:支持批量发送邮件
  • 内嵌图片:邮件中可插入图片和富文本内容

🛡️ 权限管理

  • 多用户系统:一个域名创建多个邮箱账户
  • RBAC 权限控制:细粒度的功能和资源权限管理
  • 管理员后台:用户管理、邮件查看、系统监控

🤖 智能功能

  • 验证码识别:利用 Workers AI 自动识别邮件中的验证码
  • 邮件推送:收到邮件后自动转发到 Telegram 或其他邮箱
  • Turnstile 验证:防止恶意注册和滥用

📊 数据与 API

  • 可视化面板:ECharts 图表展示系统数据和邮件统计
  • 开放 API:支持批量创建用户、查询邮件等操作
  • 响应式设计:完美适配 PC 和移动端

技术架构

后端技术栈

  • 运行平台:Cloudflare Workers(Serverless)
  • Web 框架:Hono(轻量级 Web 框架)
  • ORM:Drizzle(类型安全的 ORM)
  • 数据库:Cloudflare D1(SQLite)
  • 缓存:Cloudflare KV
  • 文件存储:Cloudflare R2(兼容 S3 的对象存储)

前端技术栈

  • 框架:Vue 3 + Composition API
  • UI 组件:Element Plus
  • 图表:ECharts
  • 状态管理:Pinia

第三方服务

  • 邮件发送:Resend(免费额度:100 封/天)
  • 人机验证:Cloudflare Turnstile(免费)
  • AI 能力:Workers AI(免费额度)

完整部署教程

前置准备

1. 注册 Cloudflare 账号

访问 Cloudflare 官网 注册账号(免费)

2. 准备域名

  • 拥有一个域名(可在 Cloudflare、阿里云、腾讯云等购买)
  • 将域名的 DNS 解析服务器修改为 Cloudflare 的 NS 服务器
  • 在 Cloudflare 控制台添加该域名

3. 注册 GitHub 账号

用于 Fork 项目和 Cloudflare Pages 部署

4. 注册 Resend 账号(可选)

  • 访问 Resend 注册账号
  • 免费计划提供 100 封邮件/天的额度
  • 如果只接收邮件不发送,可跳过此步骤

第一步:Fork 项目到 GitHub

访问 Cloud Mail GitHub 仓库,点击右上角 Fork 按钮,将项目复制到你的 GitHub 账号下。

Fork GitHub 项目

第二步:创建 Cloudflare 数据库

创建 D1 数据库

  1. 登录 Cloudflare 控制台
  2. 进入 Workers & PagesD1 SQL Database
  3. 点击 Create Database
  4. 数据库名称填写:db(必须是这个名称)
  5. 点击创建

创建 KV 命名空间

  1. 在 Cloudflare 控制台,进入 Workers & PagesKV
  2. 点击 Create a namespace
  3. 命名空间名称填写:kv(必须是这个名称)
  4. 点击创建

创建 R2 存储桶(可选)

如果需要附件功能:

  1. 进入 R2Create bucket
  2. 存储桶名称填写:mail-attachments
  3. 地区选择:自动(Automatic)
  4. 点击创建

第三步:部署 Worker 后端

创建 Pages 项目

  1. 在 Cloudflare 控制台,进入 Workers & Pagesimg
  2. 点击 Create ApplicationPagesConnect to Gitimg
  3. 选择 GitHub,授权访问你的 GitHub 账号
  4. 选择刚才 Fork 的 cloud-mail 仓库
  5. 配置构建设置:
    • 项目名称:自定义(如 my-cloud-mail
    • 生产分支main
    • 构建目录mail-worker
    • 构建命令:留空
    • 输出目录:留空
  6. 点击 Save and Deploy

设置环境变量

部署完成后,进入项目设置:

  1. 点击 SettingsEnvironment variables
  2. 添加以下必需的环境变量:img
变量名说明示例值
domain邮箱域名,多个域名用 JSON 数组["mail.example.com"]
admin管理员邮箱地址admin@mail.example.com
jwt_secretJWT 密钥(随机字符串)your_random_secret_key_here

注意事项

  • domain 如果是单个域名,写成 ["example.com"] 格式
  • jwt_secret 建议使用 32 位以上的随机字符串
  • 不要在 jwt_secret 中使用特殊字符
  1. 点击 Save 保存

绑定数据库和存储

  1. 进入项目 SettingsFunctions
  2. 找到 Bindings 部分
  3. 添加以下绑定:

D1 数据库绑定

  • 点击 Add bindingD1 database
  • Variable name: db
  • D1 database: 选择之前创建的 db

KV 命名空间绑定

  • 点击 Add bindingKV namespace
  • Variable name: kv
  • KV namespace: 选择之前创建的 kv

R2 存储桶绑定(如果创建了 R2):

  • 点击 Add bindingR2 bucket
  • Variable name: r2
  • R2 bucket: 选择之前创建的 mail-attachments
  1. 点击 Save 保存所有绑定

添加自定义域名

  1. 进入项目 Custom domains
  2. 点击 Add custom domain
  3. 输入你的邮箱域名(如 mail.example.com
  4. Cloudflare 会自动配置 DNS 记录
  5. 等待 SSL 证书签发(通常 1-5 分钟)

第四步:配置邮件路由

配置 Cloudflare Email Routing 以接收邮件:

启用 Email Routing

  1. 在 Cloudflare 控制台,选择你的域名
  2. 进入 EmailEmail Routing
  3. 点击 Get started 启用邮件路由
  4. Cloudflare 会自动添加必要的 DNS 记录(MX、TXT 等)
  5. 等待 DNS 记录生效(通常几分钟)

配置邮件转发规则

  1. 在 Email Routing 页面,点击 Destination addresses
  2. 添加一个目标地址(用于接收验证邮件)
  3. 打开你的邮箱,确认 Cloudflare 发送的验证邮件
  4. 回到 Email RoutingRouting rules
  5. 点击 Create rule
    • Rule name: Cloud Mail Worker
    • Matcher: Catch-all address(匹配所有邮件)
    • Action: Send to Worker
    • Worker: 选择你部署的 Worker 项目
  6. 点击 Save 保存规则

第五步:初始化系统

访问管理后台

  1. 在浏览器中访问你的自定义域名(如 https://mail.example.com
  2. 首次访问会自动进入初始化流程
  3. 系统会创建数据库表结构

创建管理员账号

  1. 使用你在环境变量中设置的 admin 邮箱地址
  2. 设置管理员密码(建议使用强密码)
  3. 登录系统

第六步:配置邮件发送(可选)

如果需要发送邮件功能:

1. 配置 Resend API

  1. 登录 Resend 控制台
  2. 创建一个 API Key
  3. 将 API Key 添加到 Cloudflare 环境变量:
    • 变量名:RESEND_API_KEY
    • 值:你的 Resend API Key

2. 验证发件域名

  1. 在 Resend 控制台,进入 Domains
  2. 添加你的邮箱域名
  3. 按照提示添加 DNS 记录(SPF、DKIM、DMARC)
  4. 等待验证通过

第七步:测试邮箱功能

测试接收邮件

  1. 从其他邮箱发送一封测试邮件到 test@你的域名.com
  2. 登录 Cloud Mail 管理后台
  3. 检查是否收到邮件

测试发送邮件

  1. 在 Cloud Mail 后台创建一个用户
  2. 登录该用户账号
  3. 尝试发送一封邮件到你的其他邮箱
  4. 检查是否成功接收

进阶配置

配置 Telegram 推送

  1. 创建 Telegram Bot(通过 @BotFather)
  2. 获取 Bot Token
  3. 在环境变量中添加:
    • TELEGRAM_BOT_TOKEN:你的 Bot Token
    • TELEGRAM_CHAT_ID:你的 Chat ID

启用验证码识别

  1. 在 Cloudflare 控制台启用 Workers AI
  2. 在 Worker 绑定中添加 AI 绑定
  3. 系统会自动识别邮件中的验证码

自定义主题

  1. 登录管理后台
  2. 进入 系统设置个性化
  3. 修改网站标题、Logo、背景等

成本分析

Cloudflare 免费额度

服务免费额度说明
Workers100,000 请求/天足够个人使用
D1 Database5GB 存储,500 万行可存储大量邮件
R2 Storage10GB 存储/月足够存储附件
KV100,000 读取/天缓存使用
Email Routing无限转发完全免费

Resend 免费额度

  • 100 封邮件/天
  • 1 个自定义域名
  • 超出需升级到付费计划($20/月起)

总结

个人使用完全可以在免费额度内运行,除非需要:

  • 大量发送邮件(>100 封/天)
  • 超大附件存储(>10GB)
  • 高并发访问

常见问题

1. 无法接收邮件?

  • 检查 Email Routing 是否正确配置
  • 确认 MX 记录已生效(用 nslookup -type=mx 你的域名 检查)
  • 查看 Cloudflare Email Routing 日志

2. 无法发送邮件?

  • 确认 Resend API Key 是否正确
  • 检查域名是否通过 Resend 验证
  • 查看 SPF、DKIM、DMARC 记录是否配置

3. Worker 部署失败?

  • 检查 GitHub 仓库是否 Fork 成功
  • 确认构建目录设置为 mail-worker
  • 查看 Cloudflare Pages 构建日志

4. 数据库连接失败?

  • 确认 D1 数据库绑定变量名为 db
  • 检查 KV 命名空间绑定变量名为 kv
  • 重新部署 Worker

5. 如何备份数据?

  • D1 数据库可以通过 wrangler CLI 导出
  • R2 存储可以使用 S3 兼容工具同步

项目目录结构

 cloud-mail/
 ├── mail-worker/         # Worker 后端
 │   ├── src/
 │   │   ├── api/         # API 接口层
 │   │   ├── dao/         # 数据访问层
 │   │   ├── email/       # 邮件处理
 │   │   ├── entity/     # 数据库实体
 │   │   ├── security/   # 权限认证
 │   │   └── service/     # 业务逻辑
 │   └── wrangler.toml   # Worker 配置
 │
 └── mail-vue/           # Vue 前端
    ├── src/
    │   ├── components/ # UI 组件
    │   ├── views/       # 页面视图
    │   ├── store/       # 状态管理
    │   └── router/     # 路由配置
    └── package.json

相关链接


总结

Cloud Mail 为个人用户提供了一个零成本搭建私有邮箱的完整方案。相比传统邮件服务器(VPS + Postfix + Dovecot)动辄几十美元/月的成本和复杂的配置,Cloud Mail 利用 Cloudflare 的 Serverless 架构,实现了:

零服务器成本:完全基于 Cloudflare 免费计划 ✅ 极简部署:无需配置服务器、数据库、SSL ✅ 全球加速:Cloudflare CDN 自动优化访问速度 ✅ 高可用性:Serverless 架构天然支持横向扩展 ✅ 现代化界面:Vue 3 响应式设计,体验流畅

如果你正在寻找一个简单、免费、可靠的个人邮箱解决方案,Cloud Mail 是一个值得尝试的选择。


声明:本文内容整理自 GitHub 开源项目 maillab/cloud-mail,遵循 MIT 许可证。教程内容为个人理解和实践总结,如有问题欢迎指正。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容