在「上一篇文章」中,我们已经成功攻克了“基建”门槛:不仅白嫖到了免费域名,还将其顺利托管至 Cloudflare 的免费计划中。万事俱备,只欠东风。今天我们将进入最核心的“实战部署”阶段。无需购置昂贵的服务器,我们将直接利用 Cloudflare 强大的边缘计算能力——Cloudflare Workers,搭配其内置的 Email Routing(电子邮件路由) 功能,通过 Cloudflare 网页界面下的逐步配置,亲手搭建起一个响应迅速、私密性极高的临时域名邮箱平台。本篇核心要点包括:
- 开启路由: 配置 Cloudflare Email Routing 接收规则。
- 部署脚本: 编写并部署处理邮件的 Workers 代码。
- 进阶玩法: 结合开源前端界面,实现可视化收发邮件。
- 安全加固: 设置过期机制,确保临时邮箱“随用随弃”。
完成这一步后,你将彻底告别第三方临时邮箱平台广告多、稳定性差的困扰,真正实现“域名在手,邮箱自由”。让我们正式开始!详细操作过程参考「本期视频」。
开源项目
以下基于 Cloudflare worker 的临时邮箱开源项目均可使用,本文采用「Cloudflare Temp Mail」。
- 「Cloudflare Temp Mail」:一个功能完整的临时邮箱服务!
- 「Freemail」:一个基于 Cloudflare Workers + D1 + R2 构建的开源临时邮箱服务,支持邮件接收、发送、转发、用户管理等完整功能。
- 「Moemail」:一个基于 NextJS + Cloudflare 技术栈构建的可爱临时邮箱服务。
与本文使用的 Cloudflare Temp Mail 不同,其他两个项目建议 fork 至自己 github 账号下,在创建仓库变量和机密后,通过 github action 部署更为简洁、高效。

准备工作
首先,我们在 Cloudflare 上完成两项准备工作:创建 D1 SQL 数据库和 KV 缓存空间。
创建 D1 数据库
Cloudflare 中,展开左侧导航栏中『存储与数据库』,点击『D1 SQL 数据库』,然后再 D1 数据库选项卡页面点击右上角的『+创建数据库』。

为 D1 数据库命名后,点击『创建』。

初始化 D1 数据库
这样,我们就完成了 D1 数据库的创建,但其中并没有任何表结构(schema)。这里,点击上方的『控制台』选项卡,在控制台输入 SQL 查询并执行,以创建表结构和表格。

控制台选项卡中,底部输入框需要输入 SQL 查询代码,然后执行以创建表格。Cloudflare Temp Email 项目已经预备了供初始化的 SQL 代码文件。

我们打开「Cloudflare Temp Mail」,找到 db 目录并进入,打开该目录下的 schema.sql 文件,全选、复制文件内容(不要复制 path)。

回到 Cloudflare D1 数据库的『控制台』选项卡,将复制的 schema.sql 文件内容粘贴进底部输入框,然后点击右侧『执行』。执行完成后,会提示相关信息,包括花费的时间等。这样我们就完成了对新创建的 D1 SQL 数据库的初始化。

创建 KV
接上一步骤,回到『概述』页,刷新一下页面,我们可以看到表格数量为 10,说明初始化成功,表结构/schema 已经成功写入了 D1 数据库。在左侧导航栏的『存储和数据库』下,点击『Workers KV』,我们将为后续要部署的后端 worker 创建相应的 KV 命名空间。

点击右上角的『+ 创建实例/Create Instance』,然后命名实例名称即可。

这里将 KV 实例命名为 mail_kv。我们预先需要注意的是,mail_d1 的内部默认变量名称是 DB,mail_kv 的内部默认变量名称是 KV,应避免在后续绑定时使用错误的变量名(如 D1 、DIC 等)。点击『创建』后,Workers KV 就创建完成,不需要额外配置。

部署后端 Worker
从 Hello World 部署
点开左侧导航览的『计算』,选择第一项『Workers 和 Pages』,然后点击『创建应用程序』。

应用程序创建方式步骤,选择『从 Hello World 开始』。

在部署之前可以编辑、修改 workers url 前缀。示例编辑为 xapi,则 xapi.{asccoung-name}.workers.dev 将是后端 workers.dev 域名。最后,点击『部署』。

绑定存储与数据库
在完成部署后,在概述页点击『+绑定』,或者切换到『绑定』选项卡,将之前创建的 D1 SQL 数据库和 Wokers KV 绑定到当前的后端 worker。

绑定对话框中默认就是 D1 数据库,因此如果绑定 mail_d1(示例之前创建的 D1 数据库),直接点击『添加绑定』即可。如果是绑定 mail_kv( 示例之前创建的 Wokers KV),只需要将左侧选中标签切换到『KV 命名空间』,然后再点击『添加绑定』。

在『添加 D1 数据库绑定』对话框中,变量名称务必填写 DB,D1 数据库则在列表中选择,一般仅有之前创建的一项,这里是 mail_d1。Workers KV 绑定方法相同,注意变量名称务必填写 KV。

上述『添加 D1 数据库绑定』对话框中点击『添加绑定』就完成了 D1 数据库的绑定。KV 命名空间绑定方法相同,本文不再重复。
配置变量和机密
在『Workers 和 Pages』中,点击『设置』选项卡,右侧导航菜单选择第二项『变量和机密』,点击『+ 添加』,我们将添加一批变量和机密再触发部署。

添加的变量包括名称、类型、值、说明,列表如下:
- DOMAINS:JSON,[ "domail.us.ci" ] (注册并托管在 Cloudflare 的域名列表,支持多域名)
- DEFAULT_DOMAINS:JSON,[ "domail.us.ci" ] (未登录用户可使用的域名列表,可为空或多域名)
- DISABLE_ANONYMOUS_USER_CREATE_EMAIL:文本,false (是否屏蔽匿名用户创建邮箱,如设为 true 则匿名用户不能创建邮箱,必须登录)
- JWT_SECRET:文本 (或机密),JWT密钥 (可通过 Devtoys 生成,也可以搜索公开在线站点生成)
- ADMIN_PASSWORDS:JSON,[ "your_admin_password" ] (管理员密码列表,可通过 devtoys 生成,或手动指定一个复杂密码,支持多密码)
- ENABLE_ADDRESS_PASSWORD:文本,false (邮箱地址密码功能,设为 true 启用后创建新地址时会自动生成密码)
- ENABLE_AUTO_REPLY:文本,false (是否允许自动回复邮件)
- ENABLE_USER_CREATE_EMAIL:文本,true (是否允许用户创建邮箱地址)
- ENABLE_USER_DELETE_EMAIL:文本,true (是否允许用户删除邮箱地址)
- USER_ROLES:JSON,[{"domains": ["domail.us.ci"],"prefix": "","role": "vip"},{"domains": ["domail.us.ci"],"prefix": "","role": "admin"}] (用户角色指定,以及角色可使用的域名列表)
- ADMIN_USER_ROLE:文本,admin (admin 用户角色)
所有变量添加完毕后,点击底部的『部署』,一次性批量添加、部署。之后,所有添加的变量都会在『变量和机密』块列出,可以随时编辑、修改。

在设置选项卡下,我们还需要下拉到运行时部分,在兼容性标志项,点击右侧的铅笔图标将兼容性标志设置为 nodejs_compat。

替换 workers.js 代码/文件
至此,我们的后端 Worker 还仅仅是个 “Hello world” 程序,因此,需要用 Cloudflare Temp Email 项目的 worker.js 文件替换掉仅有 “Hello world” 功能的初始化脚本。兼容性标志设置、部署完成后,我们切换到『部署』 选项卡,点击顶部的『编辑代码』。

在 Cloudflare Temp Email 项目仓库的发布页,下载 worker.js 文件。

在 Cloudflare 代码编辑界面下,将下载的 worker.js 文件拖拽进 cloudflare web 编辑器中,替换已有的 “hello world” worker.js,然后,点击右上方的『部署』。

自定义域名(可选)
随后,我们可以在设置中为之前部署的后端绑定一个自定义域名。因为后端并不会被用户直接访问,所以该步骤是可选的。本文示例在『设置』选项卡下,在『域和路由』板块下,点击『+ 添加』,然后输入自定义域名。这里采用了 xapi.domail.us.ci,之后点击底部的『部署』即可。Cloudflare 会自动在 domail.us.ci 域中帮我们添加 DNS worker 记录。

配置电子邮件路由
最后,我们需要完成后端部署很重要的一步:配置电子邮件路由。不配置电子邮件路由(添加 MX 记录),后端是收不到邮件的。点开左侧导航栏的『电子邮件』,点击『电子邮件路由』,我们首先需要启用电子邮件路由。

启用电子邮件路由的本质就是添加若干 MX 记录以及相关的 DKIM、spf 记录,在这里,我们直接点击『添加记录并启用』。

电子邮件路由启用后,还需要配置路由规则。点击顶部的『路由规则』选项卡,首先启用 Catch-All,然后点击『编辑』,配置 Catch-All 操作和目标。

在编辑页面,操作应选择『发送到 Worker』,目标则为我们编辑确定的 worker 前缀名称『xapi』,然后点『保存』。Cloudflare 账户下创建了多个 worker 时,不要选错了。

至此,后端就部署完成。所有发往 domail.us.ci 域的电子邮件都将按规则处理,转发至名为 xapi 的 worker 进行处理,这也正是我们所期望的行为。

部署前端 Worker
后端部署成功的前提下,前端采用 Cloudflare Temp Email 自带的前端或者你自己通过 vibe coding 开发一个前端都是可以的。作为示例,我们将直接部署 Cloudflare Temp Email 自带的前端。因此,我们打开「官方文档页面」,滚动到如图位置,输入你的后端域名并点击『生成』,系统将使用你的后端域名替换脚本中的域名/url,并生成 frontend.zip 压缩文件供下载。需要注意的是,尽管可以使用 workers.dev 域名,但请尽量使用自定义域名,避免前端部署于国内 VPS 或平台,导致无法访问后端。

下载 frontend.zip 后(无需解压),在 Workers 和 Pages 页面,点击右上角的『创建应用程序』。这里我们选择第四种方式『Upload your static files』。

接下来,通过拖拽 frontend.zip 进页面的方式上传前端静态文件,系统架构自动解压、部署。同时,我们还可以为前端 worker 定义一个名称,本例使用 webui。

展开高级设置,将『未找到处理』设置为单页应用(single-page-application),然后点击『部署』。

和后端不同,前端务必绑定自定义域名,否则国内无法访问。添加自定义域名并部署后,整个基于 cloudflare workers 的临时邮箱项目完毕了,我们可以使用前端来登录、配置临时邮箱,以及创建、删除、管理临时邮箱地址和邮件。

基础配置与使用
浏览器中打开前端 url,本文示例为 https://webui.domail.us.ci。连续点击 5 次 logo,或者在 url 后添加路径 admin,就可以弹出 admin 密码输入对话框。输入正确的 admin 密码(ADMIN_PASSWORDS 的值),就可以进入管理后台页面。

可以看到管理后台中的配置内容非常丰富,包括快速设置、账号、用户、邮件、电报机器人、统计、维护等等。需要注意的是,依照本文部署的临时邮件系统无法发送邮件,邮件发送、电报机器人、AI 邮件解析等功能都需要额外配置,但满足日常账户注册接码、邮箱验证需求,也允许通过 JWT_SECRET 调用 API 远程创建、删除临时邮箱,或者设置最长邮箱存活时间 。
结语
到这里,你已经亲手在 Cloudflare 的边缘网络上构建起了一套完全属于自己的临时域名邮箱系统。我们不仅利用 D1 数据库实现了邮件的持久化存储,还通过 Workers 逻辑赋予了它灵活的 API 调度能力。相比于市面上鱼龙混杂的公共临时邮箱,这套方案的优势不言而喻:域名独享、数据自主、永久免费且无广告。它不仅是你注册各类服务时的隐私屏障,更是深入理解 Cloudflare Serverless 生态的最佳实践案例。当然,这只是起点。基于这套架构,你还可以继续探索 AI 邮件摘要、Telegram 机器人实时提醒,甚至是自动化的资产管理脚本。
更多精彩,敬请关注「老E的博客」!





文章评论