# Cloud Mail：零成本搭建专属邮箱保姆级部署教程

- 状态 / Status: 已发布 / Published
- 时间 / Time: 2026-01-27T00:16:04+08:00
- 作者 / Author: -
- 主题 / Topics: 工具 / Tools
- 原文 / Source: https://mp.weixin.qq.com/s/cYMDUOgG1gJqndHiFZIf3A

---

📧 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 免费计划

4 Cloudflare 会给你两个 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 绑定自定义域名

1 Cloudflare Dashboard →「Workers 和 Pages」→ 找到 cloud-mail

2 「设置」→「触发器」→「自定义域」→ 添加域名，如 mail.example.com

🔧 5.2 初始化数据库

在浏览器访问：

https://mail.example.com/api/init/ 你的JWT_SECRET值

✅ 成功标志： 看到「 初始化成功 」表示数据库表已创建完毕。

✦ ✦ ✦

九 第六步：配置邮件接收（Email Routing）

这一步让发到 xxx@example.com 的邮件能被你的系统接收。

1 Cloudflare 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 封，无每日限制

✦ ✦ ✦

十一 第八步：登录并完成后台配置

1 访问 https://mail.example.com

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

💬 Telegram 群：t.me/cloud_mail_tg

📚 参考来源：

1. Cloud Mail 项目官方文档

2. Cloudflare Workers 官方文档

3. Cloudflare Email Routing 产品介绍

4. Resend 官方定价和文档

5. Cloudflare Email Service 私测公告（2025年9月）

参考原文信息列表：

1. https://github.com/maillab/cloud-mail

2. https://doc.skymail.ink

3. https://developers.cloudflare.com/email-routing/

4. https://www.cloudflare.com/developer-platform/products/email-routing/

5. https://blog.cloudflare.com/email-service/

6. https://resend.com/pricing

7. https://resend.com/docs/knowledge-base/account-quotas-and-limits

8. https://fylsen.com/posts/2025/07/cloudflare-workers-resend-custom-domain-email-service/

9. https://www.infoq.com/news/2025/10/cloudflare-email-service/

⚠️ 免责声明：本文仅供技术学习参考，部署过程中请遵守相关服务条款和法律法规。邮件服务涉及用户隐私，请妥善保管数据安全。

✨

— END —
