导航菜单

用户中心

登录 / 注册

关注我

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

敷衍怎么演 2026-02-28 34 浏览 我的作品
37
文章
16,187
阅读

📧 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 封,无每日限制

✦ ✦ ✦

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

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

📚 参考来源:

  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/


扫描二维码,在手机上阅读

评论 (0)

还没有评论,快来抢沙发吧!

首页 关于 友链 相册
当前有 0 人正在浏览本页
👋 刚刚 访客 加入了浏览
👁️ 本页已被浏览 0
×