2025 终极教程:Cloudflare 免费搭建专属域名邮箱(发信+收信+TG推送)

🎬 2025 终极教程:Cloudflare 免费搭建专属域名邮箱(发信+收信+TG推送)

📋 0. 准备工作 (Preparation)

  • 账号:Cloudflare 账号、Telegram 账号、Resend.com 账号。
  • 域名:一个已经托管在 Cloudflare 上的域名(例如 900900.xyz)。
  • 工具:电脑文本编辑器(推荐 VS Code,或电脑自带的记事本)。

🏗️ 第一部分:数据库与存储 (D1 & KV)

1. 创建 D1 数据库

  1. 登录 Cloudflare 仪表盘,点击左侧菜单 Storage & Databases (存储和数据库) -> D1 SQL Database (D1 SQL 数据库)
  2. 点击 Create (创建)
  3. 数据库名称自己随便填写一个,如填 vmail-db,点击 Create (创建)

2. 初始化数据库 (官方源码引用)

我们需要给数据库建立表结构。

  1. 获取代码
  • 打开官方数据库文件链接:schema.sql (点击打开)
  • 在 GitHub 页面右上角点击 Copy raw file (复制原始内容) 图标(两个小方块),复制所有代码。
  1. 执行初始化
  • 回到 Cloudflare,点击刚才创建的 vmail-db 进入详情。
  • 点击 Console (控制台) 标签。
  • 在输入框中 粘贴 刚才复制的代码。
  • 点击 Execute (执行)
  • 提示:看到 “Success” 即表示成功。

🔄 以后如何更新数据库?
如果未来作者更新了功能,只需再次访问上面的 GitHub 链接,查看 db 文件夹下有没有新的 .sql 补丁文件。如果有,复制内容并在 Console (控制台) 里执行即可。

3. 创建 KV 存储

  1. 点击左侧菜单 Storage & Databases (存储和数据库) -> KV
  2. 点击 Create (创建)
  3. 随便自定义,如命名为 vmail-kv,点击 Add (添加)

⚙️ 第二部分:后端 Worker 部署 (核心大脑)

1. 创建 Worker 应用

  1. 点击左侧菜单 Compute & AI (计算和 AI) -> Workers & Pages
  2. 点击 Create application (创建应用)
  3. 在模版选择页面,请直接点击 Start with Hello World (从 Hello World 开始)。
  4. 随便取个名称,也可以用默认的
  5. 直接点击 Deploy (部署)

2. 上传代码 (官方发布版)

  1. 下载代码
  • 点击下载官方最新构建版:worker.js
  • 注意:请直接下载这个文件,这是编译好的单文件。
  1. 替换代码
  • 用记事本打开下载好的 worker.js全选并复制所有内容。
  • 回到 刚刚创建的 Worker 页面,点击右上角 Edit code (编辑代码)
  • 在左侧文件列表点击 worker.js
  • 删除 编辑器里原本的所有代码。
  • 粘贴 你刚才复制的新代码。
  • 点击右上角 Deploy (部署)

🔄 以后如何更新后端?
不需要删除 Worker 重建。只需去上面的链接下载最新的 worker.js,重复“编辑代码 -> 全选覆盖 -> 部署”的步骤即可无缝升级。

3. 设置运行环境 (Runtime)

  1. 进入你刚刚创建的worker页面,点击打开顶部右侧的 Settings (设置) 标签。
  2. 列表找到 Runtime (运行时)
  3. 选择 Compatibility flags (兼容性标志),点击右侧的编辑笔图标,弹出Add compatibility flag (添加兼容性标志)
  4. 输入 nodejs_compat,点击 Save (保存)

4. 绑定数据库 (Bindings)和kv存储

绑定 KV Namespace

  1. 在 Worker 编辑页面顶部,点击 Bindings (绑定) 标签。
  2. 点击Add binding(添加绑定)
  3. 绑定 KV namespace
  • 点击 Add binding (添加绑定) -> KV Namespace (KV 命名空间)
  • Variable name (变量名) 填 KV (必须大写)。
  • Namespace (命名空间) 选之前创建的空间 vmail-kv
  • 填写好点Add Binding

绑定 D1 database

  1. 在 Worker 编辑页面顶部,点击 Bindings (绑定) 标签。
  2. 点击Add binding(添加绑定)
  3. 绑定 D1 Database
  • 点击 Add binding (添加绑定) -> D1 Database (D1 数据库)
  • Variable name (变量名) 填 DB (必须大写)。
  • D1 database (D1 数据库) 选之前创建的数据库 vmail-db
  • 填写好点Add Binding

5. 配置环境变量 (Variables)

点击 Settings (设置) -> Variables & Secrets (变量和机密) -> Add variable (添加变量)
全部添加好点击保存部署就行了。

⚠️ 请严格按照下表选择类型 (Type) 并填写:

变量名 (Name) 值 (Value) 示例 类型 (Type) 说明
DOMAINS ["900900.xyz"] JSON 你的域名,可以多个域名,英文逗号分隔
ADMIN_PASSWORDS ["123456"] JSON 后台密码,要有引号和方括号
JWT_SECRET 随便填一串乱码 Text (文本) 登录加密密钥
ENABLE_AUTO_REPLY true Text (文本) 开启自动回复
ENABLE_USER_CREATE_EMAIL true Text (文本) 允许用户创建邮箱
ENABLE_USER_DELETE_EMAIL true Text (文本) 允许删除邮件
NO_LIMIT_SEND_ROLE admin Text (文本) 无限制发信角色

*注意:发信变量RESEND_TOKEN 和 tg机器人变量TELEGRAM_BOT_TOKEN 我们留到后面章节专门填。
这个域名变量DOMAINS的值必须是根域名或者你托管到cloudflare的二级免费域名,填错无法收信。配置收信与发信看第四部分。

6. 绑定后端域名

  1. 点击 Settings (设置) -> Routes and domains (路由和域名)
  2. 点击右侧 Add (添加) -> Custom Domain (自定义域名)
  3. 输入一个二级域名,例如 mail.9009000.xyz
  4. 点击 Add Custom Domain (添加)
  • ⚠️ 重要:请拿小本本记下这个域名,下一步前端配置要用!

🎨 第三部分:前端 Pages 部署 (界面)

这里提供两种方法,小白推荐方法一,进阶推荐方法二

方法一:在线生成 (小白推荐 🌟)

  1. 打开官方提供的 在线生成器页面
  2. 在输入框中填入你上一步绑定的 后端域名 (例如 https://mail.900900.xyz)。
  3. 点击 生成 按钮。
  4. 点击下载生成的 frontend.zip 文件。

方法二:手动修改 (进阶用户)

  1. 下载官方前端包:frontend.zip
  2. 解压后进入 assets 文件夹,找到 index-xxxx.js
  3. 用记事本打开,搜索 https://temp-email-api.xxx.xxx,替换为你的后端域名。
  4. 保存并重新打包为 ZIP 文件。

上传部署 (Pages)

  1. 回到 Cloudflare -> Compute & AI -> Workers & Pages
  2. 点击 Create application (创建应用)
  3. 关键点:不要点 Connect to Git,看页面最底部。
  4. 点击链接:“Want to deploy Pages? Start now” (想要部署 Pages?立即开始)
  5. 选择 Upload assets (上传资产)
  6. 项目名自定义填 vmail-web -> Create Project (创建项目)
  7. 上传你准备好的 ZIP 文件 -> Deploy site (部署站点)
  8. 绑定域名:点击 Custom domains (自定义域名) -> 绑定你喜欢的网址 (例如 bb.900900.xyz)。

🔄 以后如何更新前端?
重复“方法一”或“方法二”获取新的 ZIP 包,然后在 Cloudflare Pages 页面点击 Create new deployment (创建新部署) 上传即可。


📩 第四部分:配置收信与发信

1. 配置收信 (Email Routing)

  • 启用:点击域名 -> Email (电子邮件) -> Email Routing (路由) -> Enable (启用)
  • 如果提示添加 DNS 记录,点击 Add records (添加记录) 自动添加。
  • 规则:点击 Routes (路由) -> Create rule (创建规则)
  • Action (操作): Send to a Worker (发送到 Worker)
  • Destination (目标): vmail-worker
  • Match (匹配): Catch-all (全部捕获)
  • 点击 Save (保存)

2. 配置发信 (Resend)

  • 注册:去 Resend.com 注册并添加域名 900660.xyz
  • DNS 配置 (避坑点)
  • 去 Cloudflare DNS 添加 Resend 给出的 MX 和 TXT 记录。
  • ⚠️ Proxy status (代理状态) 必须是 DNS Only (灰色云朵)
  • ⚠️ 绝对不要添加 Resend 页面里 “Enable Receiving” 下方的 MX 记录!我们只用它发信。
  • 获取密钥:Resend 左侧 API Keys -> Create -> Full Access -> 复制 re_ 开头的密钥。
  • 填入 Cloudflare
  1. 回到 vmail-worker -> Settings (设置) -> Variables & Secrets (变量和机密)
  2. 点击 Add variable (添加变量)
  3. Variable name (变量名): 输入 RESEND_TOKEN
  4. Value (值): 粘贴你的 Resend 密钥。
  5. Type (类型): 选择 Secret (机密)
  6. 点击 Deploy (部署)Save (保存)

🤖 第五部分:Telegram 机器人 (手机收信)

⚠️ 重要说明:关于邮件解析
Telegram 的聊天气泡不支持复杂的 HTML 邮件(如验证码、推广邮件)。
如果你收到邮件时提示:“解析失败,请打开 mini app 查看”,这是正常现象
请点击聊天框底部的 “打开邮箱” 按钮,在小程序里可以完美查看邮件原文。

1. 申请机器人 (保姆级对话)

打开 Telegram,搜索 @BotFather
⚠️ 注意:请认准名字后面带蓝色对勾 ✅ 的才是官方机器人,其他的都是假的!

(请严格照着下面的剧本操作)

  1. 点击 Start,发送指令:
    ```text
    /newbot


2. **BotFather 回复**:
"Alright, a new bot. How are we going to call it?..."
*(好,取个名字吧。)*
3. **你发送** (机器人的显示名称,可用中文):
```text
我的专属邮箱
  1. BotFather 回复
    “Good. Now let’s choose a username… It must end in bot…”
    (好,现在取个唯一 ID,必须以 bot 结尾。)
  2. 你发送 (唯一 ID,必须英文+数字,不能重复):
    ```text
    vmail_900900_bot


*(如果提示 Username is already taken,就换个复杂的,比如 `my_vip_mail_999_bot`)*
6. **BotFather 回复**:
"Done! Congratulations..."
*(恭喜!...)*
**👉 复制那串红色的 Token** (例如 `7123...:AAF...`)。

### 2. 配置后端变量 (双语指引)

1. 回到 Cloudflare `vmail-worker` -> **Settings (设置)** -> **Variables & Secrets (变量和机密)**。
2. 点击 **Add variable (添加变量)**。
3. **Variable name (变量名)**: 输入 `TELEGRAM_BOT_TOKEN`。
4. **Value (值)**: 粘贴刚才复制的 Token。
5. **Type (类型)**: 选择 **Secret (机密)**。
6. 点击 **Encrypt (加密)**。
7. 点击 **Deploy (部署)** 或 **Save (保存)**。

### 3. 激活机器人 (Webhook)

Worker 无法主动连接 TG,必须手动激活一次。
请在浏览器地址栏输入以下网址并回车(**替换成你的 Token 和 后端域名**):

```text
https://api.telegram.org/bot<你的Token>/setWebhook?url=https://<你的后端域名>/telegram/webhook

示例:`https://api.telegram.org/bot7123:AAF.../setWebhook?url=https://mail.900900.xyz/telegram/webhook`

看到网页显示 {"ok":true, ... "description":"Webhook was set"} 即代表激活成功。

4. 配置小程序按钮 (强烈推荐)

为了解决 HTML 邮件看不了的问题,我们必须配置这个按钮。

  1. 对 BotFather 发送:/mybots
  2. 点击你的机器人 -> Bot Settings -> Menu Button -> Configure Menu Button
  3. Send me the URL: 发送你的前端网址 (例如 https://bb.900900.xyz)。
  4. Enter a title: 发送按钮名称 (例如 打开邮箱)。

✅ 结尾:验收成果

  1. 网页测试:访问 bb.9009000.xyz,复制右上角的邮箱地址。
  2. 发信测试:用 QQ 邮箱给它发一封信。
  3. TG 推送测试
  • 在 Telegram 对机器人发送 /new,生成一个新地址。
  • 给这个新地址发信。
  • 手机应该会震动并推送消息。
  • 如果提示“解析失败”,点击左下角 “打开邮箱” 按钮查看详情。

🎉 恭喜!你现在拥有了一个永久免费、无限续杯的专属域名邮箱系统!