小白也能看懂的自建 Cloudflare 临时邮箱教程

本教程将带你一步步搭建自己的Cloudflare临时邮箱,实现无限注册、收发邮件功能,即使是技术小白也能轻松上手。

临时邮箱有什么好处?

我们知道,很多平台注册都会使用到邮箱,我们见过的常用邮箱有 gmailqq163 等,一般会给一个固定的前缀,例如 xiaohuang@qq.com,这时,你会发现注册 cursoropenaiclaude 你只能用一个邮箱来注册,无法多次注册!

说人话就是方便你可以无限注册薅羊毛(当然我也知道 gmail 可以有特殊的办法使它前缀不一致发送给同一个邮箱,我没试过就不说啦)

什么是临时邮箱?

标题上已经写了,它其实就是域名邮箱,只是我们用到的这个项目取名叫做临时邮箱,它是通过你自己购买的域名来在 Cloudflare 上搭建一个邮箱服务来实现的,所以你也可以叫它自建域名邮箱。

准备工作

关于域名

  • 你可以寻找便宜的服务商去注册,我一般会在阿里云、腾讯云买域名,比如我为了写教程就买了一个 linuxdo.love
  • 如果你想便宜,那就用不常见的后缀且域名前缀给长一点,不要学我,我这个域名续费 180 一年,18 首年!
  • 在买域名的时候,你可以注意一下之后续费是多少钱一年,如果看不到,你可以尝试把 1 年加到 2 年一般就可以看到之后续费的价格了

项目原作者

原文地址:https://linux.do/t/topic/316819/68

awsl awsl:

赞,文档链接到这篇教程了,快速开始 | 临时邮箱文档

搭建步骤

第一步,将域名交给 Cloudflare 托管

1. 打开 Clouflare,添加站点并获取 NS 服务器地址

登录 Cloudflare,点击 “添加站点”,输入你的域名,选择免费计划。Cloudflare 会扫描你现有的 DNS 记录,然后提供两个新的 NS (Name Server) 地址。

添加站点

输入域名

选择免费计划

获取 NS 地址

2. 打开域名服务商后台,修改 DNS 服务器

这里以腾讯云为例,其它平台(如阿里云、GoDaddy)操作逻辑完全相同

进入域名管理

找到 DNS 修改入口

修改 NS 地址

将 Cloudflare 提供的两个 NS 地址填入,保存即可。

确认修改

3. 回到 Cloudflare,完成配置

修改 NS 后需要等待一段时间(通常是几分钟到几小时)才能全球生效。回到 Cloudflare 点击 “完成,检查名称服务器”。

完成检查

接着进行一些快速设置,按图示推荐配置即可。

快速入门指南

自动 HTTPS 重写

始终使用 HTTPS

完成设置

当看到 “Cloudflare 正在保护您的站点” 的提示时,说明域名已成功托管。

托管成功

4. (可选)仅设置域名邮箱转发

如果你不需要搭建完整的临时邮箱服务,只想将 任意前缀@你的域名 的邮件转发到自己的主邮箱(如 QQ、Gmail),可以按如下设置:

  1. 进入 Email -> 电子邮件路由
  2. 创建自定义地址,将所有发往 *@你的域名 的邮件,操作设置为 “发送到电子邮件”,并填入你的主邮箱地址。

设置邮件转发

如果你需要继续搭建功能更全的临时邮箱,请往下看!


第二步、搭建临时邮箱服务

1. 创建 D1 数据库

在 Cloudflare 左侧菜单中找到 Workers 和 Pages -> D1,创建一个新的数据库。

进入 D1 数据库

创建数据库

进入数据库控制台,我们需要执行 SQL 来创建数据表。

进入控制台

打开项目代码中的 db/schema.sql 文件,复制其全部内容。
SQL 文件直达链接

找到 schema.sql

将复制的 SQL 粘贴到 D1 控制台并执行。

粘贴并执行 SQL

2. 部署 Worker 后端服务

① 创建 Worker

回到 Workers 和 Pages,创建一个新的应用程序(Worker)。

创建 Worker

给你的 Worker 起个名字,然后点击 “部署”。

命名并部署

部署后,点击 “编辑代码”。

编辑代码

② 粘贴 Worker 代码

我们需要从项目 Release 页面下载最新的 worker.js 代码。
worker.js 代码直达地址

下载后,用文本编辑器打开 worker.js 文件,全选并复制所有代码

下载 worker.js

将复制的代码粘贴到 Cloudflare 的代码编辑器中,完全覆盖原有代码。

粘贴代码

③ 绑定 D1 数据库

点击 设置 -> 变量,在 “D1 数据库绑定” 部分,点击 “添加绑定”。
变量名称填写 DB,选择我们刚刚创建的 D1 数据库。

进入设置
添加 D1 绑定
完成绑定

④ 添加兼容性标志

设置 -> 变量 -> 兼容性标志 中,添加 nodejs_compat

添加兼容性标志

⑤ 配置环境变量

这是最关键的一步,请仔细阅读说明并配置。在 设置 -> 变量 -> 环境变量 中添加以下变量。

注意: 请不要直接从下方的表格里复制配置值,表格中的引号可能是中文引号导致格式错误。请从表格下方的独立代码块中复制!😅

变量名 类型 值示例 说明
ADMIN_PASSWORDS JSON ["your_password","your_password_two"] 管理员后台密码,可以设置多个。
ADMIN_USER_ROLE 纯文本 admin 用于标识管理员角色的名称,拥有此角色的用户可以访问后台。
DEFAULT_DOMAINS JSON [""]["yourdomain.com"] 未登录用户可用的域名。设置为空数组 [""] 表示未登录用户不能创建邮箱。
DOMAINS JSON ["linuxdo.love", "goai.love"] 你拥有的、并已托管到 Cloudflare 的所有可用域名。
ENABLE_AUTO_REPLY 纯文本 false 是否允许自动回复邮件。
ENABLE_USER_CREATE_EMAIL 纯文本 true 是否允许用户随机创建邮箱地址。
ENABLE_USER_DELETE_EMAIL 纯文本 true 是否允许用户删除邮件。
JWT_SECRET 纯文本 (需要生成一个) 生成一个 JWT 密钥。可使用此工具生成。
NO_LIMIT_SEND_ROLE 纯文本 admin 可以无限发送邮件的角色。
USER_ROLES JSON [{"domains":["linuxdo.love"],"prefix":"","role":"vip"},{"domains":["linuxdo.love"],"prefix":"","role":"admin"}] 设置用户角色,可以定义不同角色可用的域名和前缀。

配置值复制区:

ADMIN_PASSWORDS

1
["your_password_1", "your_password_2"]

DEFAULT_DOMAINS (未登录用户不可用)

1
[""]

DOMAINS (替换成你的域名)

1
["linuxdo.love"]

USER_ROLES (替换成你的域名)

1
[{"domains":["linuxdo.love"],"prefix":"","role":"vip"},{"domains":["linuxdo.love"],"prefix":"","role":"admin"}]

配置截图示例:

添加环境变量

批量编辑模式

完成所有变量配置后,**务必点击 “保存并部署”**。

保存并部署

⑥ 配置 KV 缓存

在 Cloudflare 左侧菜单 Workers 和 Pages -> KV,创建一个新的命名空间(例如 KV)。

进入 KV
创建 KV 命名空间

回到 Worker 的 设置 -> 变量,在 “KV 命名空间绑定” 部分添加绑定。变量名填写 KV,选择刚刚创建的 KV 命名空间。

添加 KV 绑定
完成 KV 绑定

**再次点击 “保存并部署”**。

⑦ 配置邮件转发【非常重要,必须配置】

回到你域名的 Email -> 电子邮件路由,添加一条新的路由规则。

进入邮件路由

将操作设置为 “发送给 Worker”,并选择我们刚刚部署的 Worker。

设置路由规则

至此,恭喜你!临时邮箱的后端服务已经全部搭建完成!


第三步、搭建前端操作界面

我们需要部署一个静态网站作为邮箱的前端界面。

1. 生成前端代码

项目提供了一个在线生成器,可以方便地将你的 Worker API 地址打包进前端代码。
前端生成器直达地址

在生成器页面,填入你的 Worker 域名(例如 your-worker-name.your-account.workers.dev),然后点击生成并下载 frontend.zip

注意: 下图中的 “兹定于域” 是笔误,应为 “自定义域”,指的就是你的 Worker 域名。

前端生成器

2. 部署 Pages 前端

在 Cloudflare 左侧菜单 Workers 和 Pages,切换到 Pages 标签,选择 “上传资产” 来创建一个新应用。

进入 Pages

给你的前端项目起个名字(例如 temp-mail-ui),然后将刚刚下载的 frontend.zip 文件拖拽上去。

上传 ZIP 文件

点击 “部署站点”。

部署站点

3. 绑定自定义域名

部署成功后,进入 Pages 项目的 自定义域 设置,将你的主域名(例如 linuxdo.love)或一个子域名(例如 mail.linuxdo.love)绑定到这个 Pages 项目。

设置自定义域

激活域名

等待几分钟,DNS 记录生效后,你就可以通过你的域名访问临时邮箱界面了!

访问成功


第四步、测试与使用

1. 登录管理员后台

小技巧: 连续点击页面左上角的 Logo 五次,可以快速呼出管理员登录框。😛

呼出登录框

输入你在环境变量 ADMIN_PASSWORDS 中设置的密码。

输入密码

登录后即可看到管理面板。

管理后台

2. 测试接收邮件

在主界面,你可以随机生成或自定义一个邮箱地址。

生成邮箱地址

用你的其他邮箱(如 QQ 邮箱)给这个地址发送一封测试邮件。

发送测试邮件

稍等片刻,回到临时邮箱页面,刷新收件箱,应该就能看到收到的邮件了。

接收成功


第五步、配置发送邮件功能

默认情况下,临时邮箱只能收件。我们可以借助第三方邮件服务(如 Resend)来实现发件功能。

1. 注册 Resend 并获取 API Key

访问 https://resend.com/ 注册一个账号。

Resend 官网

登录后,在 API Keys 页面创建一个新的 API Key,并立即复制并保存好这个 Key,因为它只会出现一次。

创建 API Key

2. 在 Resend 中添加并验证域名

Domains 页面添加你的域名,并根据提示在 Cloudflare DNS 中添加指定的记录来完成域名所有权验证。

3. 配置 Worker 环境变量

回到我们之前部署的 Worker 设置 -> 变量 -> 环境变量,添加一个新的环境变量:

  • Key: RESEND_TOKEN
  • Value: 粘贴你刚刚从 Resend 获取的 API Key

添加 RESEND_TOKEN

**点击 “保存并部署”**。

4. 测试发送邮件

现在,回到你的临时邮箱界面,点击邮件详情页的 “回复” 或新建邮件按钮,就可以发送邮件了。

测试发件

发送成功!👍


踩坑记录

在配置环境变量,特别是 USER_ROLES 这种复杂的 JSON 字符串时,一定要确保使用的是英文标点符号。从网页或文档中直接复制可能会把英文双引号 " 变成中文双引号 ,导致 Worker 运行时解析 JSON 出错。

中英文引号对比

建议在文本编辑器或代码编辑器中编辑好再粘贴,或者使用 Cloudflare Worker 的 “批量编辑” 模式,更容易发现格式问题。

至此,整个教程结束,祝你使用愉快!


本文参考了原始教程,感谢原作者的分享。