📧 Cloud Mail:零成本搭建专属邮箱
保姆级部署教程
一个域名 + Cloudflare 免费账号 = 拥有像 Gmail 一样的私人邮箱服务
手把手教你从零开始部署 · 全程零服务器成本
想拥有 boss@yourcompany.com 这样的专业邮箱,却不想每年花几百块买企业邮箱?Cloud Mail 是一个开源项目,让你用 零服务器成本 搭建完整的邮箱服务。本教程用最通俗的语言,带你从零开始部署!
🌟 为什么选择 Cloud Mail?
✦ 真正零成本 —— 完全运行在 Cloudflare 免费额度内
✦ 一键部署 —— GitHub Actions 自动化部署,小白友好
✦ 功能完善 —— 收发邮件、附件、管理后台一应俱全
✦ 隐私安全 —— 数据存在你自己的 Cloudflare 账号里
✦ ✦ ✦
一 这个项目到底是什么?
想象一下,你有一个域名 coolcompany.com,想创建 boss@coolcompany.com、hr@coolcompany.com 这样的专业邮箱。
传统方法有两条路:
❌ 传统方案的痛点
💸 花钱买企业邮箱 —— 腾讯企业邮、阿里企业邮,每年几百到几千
🔧 自己租服务器搭建 —— 技术门槛高、维护麻烦、服务器费用不菲
Cloud Mail 提供了第三条路:把邮箱服务"寄生"在 Cloudflare 上。
"Deploy your own email service on Cloudflare with zero server cost."
「在 Cloudflare 上部署你自己的邮箱服务,服务器成本为零。」
Cloudflare 提供免费的边缘计算服务(Workers)、免费的数据库(D1)、免费的文件存储(R2),这个项目巧妙地把这些免费资源组合起来,变成一个完整的邮箱系统。
📦 核心功能一览
📧 邮件收发 —— 集成 Resend 发送邮件,支持群发、内嵌图片和附件
📎 附件处理 —— 使用 R2 对象存储保存和下载文件
👥 多用户管理 —— RBAC 权限控制,对功能及资源进行限制
🔔 邮件推送 —— 接收邮件后可转发到 Telegram 或其他邮箱
📊 数据可视化 —— ECharts 图表展示系统数据和增长趋势
📱 响应式界面 —— 手机电脑都能完美使用
✦ ✦ ✦
二 技术架构:像搭积木一样理解它
把 Cloud Mail 想象成一栋房子,每层有不同的功能:
┌─────────────────────────────────────────────┐
│ 🏠 用户界面:Vue3 网页(漂亮的收件箱) │
├─────────────────────────────────────────────┤
│ 🧠 大脑:Hono 框架(处理所有业务逻辑) │
├─────────────────────────────────────────────┤
│ 📦 仓库:D1数据库 + R2存储(存附件) │
├─────────────────────────────────────────────┤
│ 🏗️ 地基:Cloudflare Workers(免费服务器)│
└─────────────────────────────────────────────┘
🔧 技术栈对照表(给懂技术的朋友看)
运行平台 · Cloudflare Workers · 相当于免费的"无形服务器"
后端框架 · Hono · 类似 Express,但更轻量、更快
数据库 · Cloudflare D1 · 免费的 SQLite 数据库
文件存储 · Cloudflare R2 · 类似阿里云 OSS,存附件用
缓存 · Cloudflare KV · 存登录状态等临时数据
前端 · Vue3 + Element Plus · 现代化的网页界面
邮件发送 · Resend API · 第三方发信服务(每月免费 3000 封)
📁 项目结构:代码都放在哪里
cloud-mail/
│
├── 📂 mail-worker/ ← 后端代码(大脑)
│ ├── src/
│ │ ├── api/ ← 处理 /api/xxx 请求
│ │ ├── service/ ← 邮件发送等核心逻辑
│ │ ├── dao/ ← 增删改查数据库
│ │ ├── email/ ← 邮件接收处理
│ │ └── security/ ← 登录验证、权限
│ └── wrangler.toml ← ⚠️ 最重要的配置文件
│
├── 📂 mail-vue/ ← 前端代码(脸面)
│ └── src/
│ ├── views/ ← 页面组件
│ └── components/ ← 可复用组件
│
└── README.md
✦ ✦ ✦
三 部署前的准备工作清单
在开始之前,确保你有以下"原材料":
必须域名 · 阿里云/腾讯云/Namesilo 购买
必须Cloudflare 账号 · cloudflare.com 免费注册
必须GitHub 账号 · github.com 免费注册
必须Resend 账号 · resend.com 免费注册(发信功能需要)
可选本地开发环境 · Node.js 18+(用 GitHub Actions 可跳过)
⚠️ 域名小贴士:避免使用 .top、.xyz 等廉价后缀,容易被邮件服务商标记为垃圾邮件。建议用 .com、.net 等主流后缀。
✦ ✦ ✦
四 第一步:把域名托管到 Cloudflare
这一步相当于把你的域名"搬家"到 Cloudflare,让它来管理 DNS 解析。
1登录 Cloudflare Dashboard(dash.cloudflare.com)
2点击「添加站点」,输入你的域名(如 example.com)
3选择 Free 免费计划
4Cloudflare 会给你两个 NS 服务器地址
ada.ns.cloudflare.com
bob.ns.cloudflare.com
5去你的域名注册商后台,把 DNS 服务器改成这两个地址
6等待生效(通常几分钟到 24 小时)
✅ 验证成功:Cloudflare 显示域名状态为「活动」即可。
✦ ✦ ✦
五 第二步:创建 Cloudflare 资源
我们需要在 Cloudflare 创建三个"仓库":
2.1 创建 D1 数据库(存邮件数据)
1进入 Cloudflare Dashboard → 「存储和数据库」→「D1 SQL 数据库」
2点击「创建」,名称填 cloudmail_db
3创建后,复制保存 database_id
2.2 创建 KV 命名空间(存登录状态)
1「存储和数据库」→「KV」→「创建命名空间」
2名称填 mail_kv
3复制保存 ID
2.3 创建 R2 存储桶(存附件文件)
1「存储和数据库」→「R2 对象存储」→「创建存储桶」
2名称填 email(或任意名称)
3进入桶设置 →「自定义域」→ 添加域名,如 r2.example.com
4复制保存存储桶名称
2.4 获取 API Token
1点击右上角头像 →「我的个人资料」→「API 令牌」
2点击「创建令牌」→ 使用「编辑 Cloudflare Workers」模板
3添加 D1 数据库的编辑权限(这一步很容易漏!)
4创建后 复制保存 Token(只显示一次)
2.5 获取 Account ID
在任意 Cloudflare 页面的右侧边栏,找到「账户 ID」并复制保存。
✦ ✦ ✦
六 第三步:Fork 项目并配置 Secrets
🔱 3.1 Fork 项目
访问 https://github.com/maillab/cloud-mail,点击右上角「Fork」按钮,把项目复制到你的 GitHub 账号下。
🔐 3.2 配置 GitHub Secrets
进入你 Fork 的仓库 → 「Settings」→「Secrets and variables」→「Actions」→「New repository secret」
逐个添加以下密钥:
CLOUDFLARE_ACCOUNT_ID · 账户 ID
CLOUDFLARE_API_TOKEN · API 令牌
D1_DATABASE_ID · D1 数据库 ID
KV_NAMESPACE_ID · KV 命名空间 ID
R2_BUCKET_NAME · R2 存储桶名称
DOMAIN · ["example.com"] JSON 数组格式
ADMIN · 管理员邮箱(如 admin@example.com)
JWT_SECRET · 随机字符串(自己编一个复杂的)
⚠️ DOMAIN 格式注意:必须是 JSON 数组格式 ["example.com"],多域名写成 ["a.com","b.com"]
✦ ✦ ✦
七 第四步:一键部署
进入你的仓库 → 「Actions」→ 左侧找到「Deploy cloud-mail」→ 「Run workflow」→ 选择 main 分支 → 「Run workflow」
✅ 部署成功:等待几分钟,看到绿色对勾 ✅ 表示部署成功!
✦ ✦ ✦
八 第五步:绑定域名和初始化
🌐 5.1 绑定自定义域名
1Cloudflare Dashboard →「Workers 和 Pages」→ 找到 cloud-mail
2「设置」→「触发器」→「自定义域」→ 添加域名,如 mail.example.com
🔧 5.2 初始化数据库
在浏览器访问:
https://mail.example.com/api/init/你的JWT_SECRET值
✅ 成功标志:看到「初始化成功」表示数据库表已创建完毕。
✦ ✦ ✦
九 第六步:配置邮件接收(Email Routing)
这一步让发到 xxx@example.com 的邮件能被你的系统接收。
1Cloudflare Dashboard → 点击你的域名 →「电子邮件」→「电子邮件路由」
2「开始使用」,按提示添加所需的 DNS 记录
3「路由规则」→「Catch-all 地址」→ 操作选择「发送到 Worker」→ 选择 cloud-mail
💡 打个比方:这相当于告诉邮局"所有寄给 example.com 的信,都送到我的 Worker 程序处理"。
✦ ✦ ✦
十 第七步:配置邮件发送(Resend)
Cloudflare Email Routing 只能收信不能发信,发信需要借助 Resend 服务。
"Resend is a developer-focused email delivery platform with clean APIs and a generous free tier."
「Resend 是一个面向开发者的邮件发送平台,API 简洁,免费额度慷慨。」
📧 7.1 注册并验证域名
1访问 https://resend.com 注册账号
2「Domains」→「Add Domain」→ 输入你的域名
3按照 Resend 的提示,在 Cloudflare DNS 中添加 DKIM、SPF 等记录
4等待验证通过(通常几分钟)
🔑 7.2 创建 API Key
「API Keys」→「Create API Key」→ 复制保存
🔔 7.3 配置 Webhook(可选但推荐)
「Webhooks」→「Add Webhook」:
✦ URL 填:https://mail.example.com/api/webhooks
✦ 勾选事件:email.bounced、email.delivered、email.delivery_delayed
💰 Resend 免费额度(2025年最新)
✦ 每月 3,000 封事务性邮件
✦ 每天限制 100 封(免费版)
✦ 付费版 $20/月可发 50,000 封,无每日限制
✦ ✦ ✦
十一 第八步:登录并完成后台配置
2使用你配置的 ADMIN 邮箱地址 注册(自动获得管理员权限)
3登录后进入「系统设置」
⚙️ 系统设置清单
✦ 填入 Resend API Key
✦ 填入 R2 域名(如 https://r2.example.com)
✦ 按需配置其他选项
🎉 恭喜!你的私人邮箱服务已经搭建完成!
现在可以开始收发邮件了
✦ ✦ ✦
附 所有配置项速查表
📄 wrangler.toml 核心配置
name = "cloud-mail" # Worker 名称
main = "src/index.js" # 入口文件
[[d1_databases]]
binding = "db" # env.db 访问
database_id = "xxx" # 你的 D1 ID
[[kv_namespaces]]
binding = "kv" # env.kv 访问
id = "xxx" # 你的 KV ID
[[r2_buckets]]
binding = "r2" # env.r2 访问
bucket_name = "email" # 存储桶名
[vars]
domain = ["example.com"] # 邮箱域名
admin = "admin@example.com" # 管理员
jwt_secret = "your-secret" # JWT 密钥
⚙️ 系统后台可配置项
Resend API Key · 邮件发送凭证
R2 域名 · 附件下载地址
开放注册 · 是否允许新用户注册
人机验证 · Turnstile 站点密钥
TG 推送 · Telegram Bot Token 和 Chat ID
多号模式 · 一个用户可创建多个邮箱地址
💰 免费额度够用吗?
Workers · 每天 10 万请求 · 小团队足够
D1 · 5GB 存储 · 约 10 万封邮件
R2 · 每月 10GB · 中等附件量
Resend · 每月 3,000 封 · 个人/小团队
✦ ✦ ✦
常见问题和踩坑指南
❓ 部署失败:提示 Token 权限不足
原因:创建 API Token 时没有添加 D1 编辑权限。
解决:重新创建 Token,在「账户资源」中添加「Cloudflare D1」的编辑权限。
❓ 收不到邮件
排查步骤:
✦ 检查 Email Routing 是否已启用
✦ Catch-all 是否设置为「发送到 Worker」
✦ DNS 的 MX 记录是否正确
常见原因:域名之前配置过其他邮箱服务的 MX 记录,需要删除旧记录。
❓ 发送的邮件进垃圾箱
优化建议:
✦ 确保在 Resend 添加了完整的 DKIM、SPF、DMARC 记录
✦ 避免使用 .top、.xyz 等廉价域名
✦ 新域名需要"养号",不要一开始就大量群发
❓ 邮件显示"由 Resend 代发"
说明:这是 Resend 服务的固有特性,收件人的邮箱客户端会显示「via resend.com」。目前无解决方案,不影响正常使用。
❓ 更新代码后数据丢失?
不会丢失!D1 数据库的数据是持久化的,重新部署只会更新代码,不会清空数据。但要注意重新部署后可能需要重新绑定 D1/KV/R2。
✦ ✦ ✦
总结
Cloud Mail 是一个非常优秀的开源项目,它巧妙地利用 Cloudflare 的免费资源,让普通人也能拥有专业的域名邮箱服务。
👥 适合人群
✦ 想要专业域名邮箱但不想花钱的个人开发者
✦ 初创团队需要轻量级邮箱解决方案
✦ 学习 Cloudflare Workers 全栈开发的技术爱好者
✨ 项目亮点
✦ 真正零成本 —— 完全运行在免费额度内
✦ 部署简单 —— GitHub Actions 一键部署
✦ 功能完善 —— 收发、附件、管理、统计一应俱全
✦ 代码规范 —— 清晰的三层架构,易于学习和二次开发
🎯 相关资源
📦 项目仓库:github.com/maillab/cloud-mail
🌐 在线演示:skymail.ink
📖 官方文档:doc.skymail.ink
📚 参考来源:
-
Cloud Mail 项目官方文档
-
Cloudflare Workers 官方文档
-
Cloudflare Email Routing 产品介绍
-
Resend 官方定价和文档
-
Cloudflare Email Service 私测公告(2025年9月)
参考原文信息列表:
评论 (0)
还没有评论,快来抢沙发吧!