老E的博客

  • 首页
  • 关于
  • 技术应用
    • VPS相关
    • AI相关
    • 盒子相关
    • 其他
  • 订阅Youtube频道
  • 有用的资源
    • 工具下载
    • Docker加速
    • AI应用导航
    • 红杏出墙
    • 乌龟加速
  • 网络加速
    • expressvpnNo.1 ExpressVPN
    • 最佳免费VPN-PrivadoVPN
    • NordVPN
    • 廉价王者-Surfshark
    • PrivateInternetAccess
    • 解锁一切-PrivateVPN
老E的博客
专注记录并分享跨境技术应用及随想
  1. 首页
  2. 技术应用
  3. AI相关
  4. 正文

如何从零开始在Cloudflare上自建临时域名邮箱平台(二)

2026年4月10日 29次阅读 0条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

在「上一篇文章」中,我们已经成功攻克了“基建”门槛:不仅白嫖到了免费域名,还将其顺利托管至 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 部署更为简洁、高效。

1-temmail-repo

准备工作

首先,我们在 Cloudflare 上完成两项准备工作:创建 D1 SQL 数据库和 KV 缓存空间。

创建 D1 数据库

Cloudflare 中,展开左侧导航栏中『存储与数据库』,点击『D1 SQL 数据库』,然后再 D1 数据库选项卡页面点击右上角的『+创建数据库』。

2-create-d1

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

3-named-d1

初始化 D1 数据库

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

4-init

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

5-sql

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

6-cp-schemasql

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

7-execute

创建 KV

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

8-create-kv

 

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

9-new-kv

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

10-named-kv

部署后端 Worker

从 Hello World 部署

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

11-create-backend

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

12-create-worker

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

13-deploy-worker

绑定存储与数据库

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

14-bind

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

15-bind-d1

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

16-bing-d1

 

上述『添加 D1 数据库绑定』对话框中点击『添加绑定』就完成了 D1 数据库的绑定。KV 命名空间绑定方法相同,本文不再重复。

配置变量和机密

在『Workers 和 Pages』中,点击『设置』选项卡,右侧导航菜单选择第二项『变量和机密』,点击『+ 添加』,我们将添加一批变量和机密再触发部署。

17-var-secret

添加的变量包括名称、类型、值、说明,列表如下:

  • 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 用户角色)

所有变量添加完毕后,点击底部的『部署』,一次性批量添加、部署。之后,所有添加的变量都会在『变量和机密』块列出,可以随时编辑、修改。

18-var-secret-deploy

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

19-runtime-flag

替换 workers.js 代码/文件

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

20-editcode

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

21-workers-js

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

22-deploy-workersjs

自定义域名(可选)

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

23-add-domainname

配置电子邮件路由

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

24-email-route

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

25-add-dnsrecord

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

26-catch-all

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

27-catchall-2

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

27-catchall-3

部署前端 Worker

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

28-pages-frontend

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

29-upload-staticfiles

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

30-named-fe

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

31-spa-deploy

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

32-add-domainname-fe

 

基础配置与使用

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

33-adminlogin

可以看到管理后台中的配置内容非常丰富,包括快速设置、账号、用户、邮件、电报机器人、统计、维护等等。需要注意的是,依照本文部署的临时邮件系统无法发送邮件,邮件发送、电报机器人、AI 邮件解析等功能都需要额外配置,但满足日常账户注册接码、邮箱验证需求,也允许通过 JWT_SECRET 调用 API 远程创建、删除临时邮箱,或者设置最长邮箱存活时间 。33-admin-page

结语

到这里,你已经亲手在 Cloudflare 的边缘网络上构建起了一套完全属于自己的临时域名邮箱系统。我们不仅利用 D1 数据库实现了邮件的持久化存储,还通过 Workers 逻辑赋予了它灵活的 API 调度能力。相比于市面上鱼龙混杂的公共临时邮箱,这套方案的优势不言而喻:域名独享、数据自主、永久免费且无广告。它不仅是你注册各类服务时的隐私屏障,更是深入理解 Cloudflare Serverless 生态的最佳实践案例。当然,这只是起点。基于这套架构,你还可以继续探索 AI 邮件摘要、Telegram 机器人实时提醒,甚至是自动化的资产管理脚本。

更多精彩,敬请关注「老E的博客」!

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: Cloudflare Cloudflare Workers serverless Workers KV 临时邮箱 开源工具 开源项目 邮件路由 隐私保护
最后更新:2026年4月10日

老E

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
站内搜索
归档
  • 2026 年 4 月
  • 2026 年 3 月
  • 2026 年 2 月
  • 2026 年 1 月
  • 2025 年 12 月
  • 2025 年 9 月
  • 2025 年 7 月
  • 2025 年 6 月
  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 6 月

Copyright ©2023-2025 Appscross. All Rights Reserved.