KAIRO · 实测教程
如果你有自己的域名
怎么搭一个私人临时邮箱?
Kairo 的 AI 拾光
如果你手里有一个自己的域名,除了拿来做网站,还可以给自己搭一个私人临时邮箱。
搭好以后,你可以随手创建这样的地址:
test001@mailbox.你的域名
project-a@mailbox.你的域名
别人发来的邮件不会进入公共临时邮箱网站,而是保存在你自己的 Cloudflare 账号里。你可以在私人页面查看,也可以随时换一个新的地址。
我已经把这套东西实际跑通了。今天这篇不讲别的,只讲它是怎么搭起来的。
先说明边界:它主要用于接收网站测试邮件,不是 Gmail 的替代品,也不适合保存重要的长期邮件。

01
PART
开始前,需要准备什么
不需要单独购买服务器,但需要三样东西:
1. 一个自己的域名;
2. 域名已经托管到 Cloudflare;
3. 一个 Cloudflare 账号。
邮箱程序使用的是开源项目 dreamhunter2333/cloudflare_temp_email。项目采用 MIT License,原作者和贡献者的版权需要保留。
整套邮箱的工作方式是:
邮件发到你的域名
↓
Cloudflare 接收
↓
Worker 处理邮件
↓
D1 保存邮件
↓
你在私人页面查看

第一次看到 Worker 和 D1 不用紧张。你可以把 Worker 理解成收件员,D1 就是存放邮件的柜子。
02
PART
第一步:单独准备一个邮箱子域名
不要直接拿正在使用的主域名做实验。
建议单独分一个子域名,例如:
mailbox.example.com
这样即使临时邮箱配置出错,也不会影响主域名原来的邮件。
进入 Cloudflare 的 Email Service → Email Routing,把这个子域名加入邮件服务,并按照页面提示完成邮件 DNS 配置。
这里有一个很容易踩的坑:主域名已经能收邮件,不代表新建的子域名也会自动生效。一定要确认 Cloudflare 显示这个子域名的邮件记录已经配置完成。
03
PART
第二步:创建存邮件的 D1 数据库
进入 Cloudflare 的 Storage & Databases → D1 SQL Database,新建一个数据库。
数据库名称可以自己取,例如:
private_temp_mail

数据库创建完成后,打开开源项目中的数据库初始化文件,也就是 db/schema.sql。
复制里面的 SQL,粘贴到 D1 的 Console 中执行。

不要只看页面提示“执行成功”。刷新后确认数据库里已经出现项目需要的数据表,这一步才算完成。
04
PART
第三步:部署负责收信的 Worker
接下来创建一个 Cloudflare Worker,并按照开源项目当前文档部署对应版本的 Worker 程序。
不要从不明网盘下载别人打包的代码。建议只使用项目的 GitHub 仓库或 Releases,并记录自己部署的具体版本。
部署后,需要根据项目文档填写运行变量。最关键的几类配置是:
• 允许使用的邮箱域名;
• 管理后台密码;
• JWT 签名密钥;
• 是否允许匿名创建邮箱。
密码和密钥都应该放进 Cloudflare 的 Secret,不要写进公开代码,也不要出现在教程截图里。
项目需要什么运行环境,以当前官方文档为准。我部署的版本需要启用 nodejs_compat 兼容标志。

05
PART
第四步:把 Worker 和数据库连起来
Worker 已经部署,但它现在还不知道邮件应该存到哪个数据库。
进入 Worker 的 Bindings,添加 D1 Database Binding。
绑定名称填写:
DB
然后选择前面创建的 D1 数据库。

这里最容易出错的不是数据库选错,而是绑定名称写错。项目代码读取的是 DB,多一个字母或换成其他名字,Worker 都会认为数据库不存在。
06
PART
第五步:让所有邮件进入 Worker
回到邮箱子域名的 Email Routing → Routing Rules。
我第一次操作时,直接在 Email pattern 里输入了一个 *,以为星号代表所有地址。
结果输入框马上变红:


正确做法不是在普通地址框里填星号,而是启用单独的 Catch-all 规则。
Catch-all 的处理方式选择:
Send to a Worker
再选择刚才部署的临时邮箱 Worker。
完成这一步以后,无论邮件前缀是 test001、hello 还是临时生成的随机字符,邮件都会交给同一个 Worker 处理。
07
PART
第六步:发送第一封测试邮件
先在临时邮箱页面创建一个测试地址,例如:
hello@mailbox.example.com
然后使用另一个正常邮箱给它发送一封不含私人信息的测试信:
主题:mail routing test
正文:hello from test message
不要一上来就拿它接收重要邮件。先确认下面四件事:
1. Email Routing 出现了邮件处理记录;
2. Worker 日志出现了邮件事件;
3. D1 出现了对应的邮件数据;
4. 私人收件页面能够读出邮件。
如果测试失败,就看最早在哪一层没有记录。
Email Routing 没记录 → 检查子域名和邮件 DNS
Worker 没记录 → 检查 Catch-all 指向
D1 没记录 → 检查 DB 绑定和数据库结构
页面看不到 → 检查前端配置和访问权限

这比把所有服务全部重启一遍更容易找到问题。
08
PART
搭好以后,能拿来做什么
我现在主要把它用于三个场景:
• 测试自己网站的注册、登录和通知邮件;
• 给不同项目使用不同邮箱前缀;
• 不想把常用邮箱留在测试环境时,使用独立地址收信。
它只能解决“拥有一个可控的测试收件箱”。如果需要长期收发重要邮件、使用手机邮件客户端或多人协作,仍然应该选择正式邮箱服务。
09
PART
最后,别忘了这几件事
• 给管理页面设置强密码和访问限制;
• 不要公开数据库 ID、密码、JWT 密钥和真实邮件正文;
• 不要使用即将到期的域名绑定重要账号;
• 更新 Worker 前记录当前版本,并准备可恢复的配置;
• 保留开源项目原作者、仓库地址和许可证说明。
我把这次实际部署中用到的检查、备份和更新方法整理成了 Kairo Auth Stack。它不是重新发明一个邮箱项目,而是我给自己补的一层维护工具。
项目展示页:
https://www.airo.siphot.com/projects/kairo-auth-stack/
更详细的变量说明、截图步骤和排错清单,整理在《用自己的域名搭建临时邮箱:Cloudflare + Docker 自托管维护手册》中。
关注公众号后回复 临时邮箱 可以领取。
10
PART
参考资料
• 开源项目:https://github.com/dreamhunter2333/cloudflare_temp_email
• 项目中文文档:https://temp-mail-docs.awsl.uk/zh/
• Cloudflare Email Routing:https://developers.cloudflare.com/email-service/get-started/route-emails/
• Cloudflare D1:https://developers.cloudflare.com/d1/
觉得有用,欢迎点赞、在看和转发。
THANKS FOR READING