人人都可以搭建自己的临时邮箱-ZMAIL
发布于: 2025-3-10
最后更新: 2025-4-27
type
status
date
slug
summary
tags
category
icon
ZMAIL 是一个安全、简单、即用即走的临时邮箱服务,邮箱有效期默认24小时,24小时以后邮箱包括邮箱中的所有邮件自动销毁
Video preview

必要条件

要部署自己的临时匿名邮箱,需要满足几个前提条件:
  • 一个可用的Github账号
  • 通过信用卡验证以后的cloudflare账号(未使用信用卡验证无法使用workers和pages
  • 有一个自己的域名,并且托管到cloudflare

功能特色

  • 匿名-无需注册,访问即可获得一个随机邮箱
  • 自定义邮箱-支持自定义邮箱地址
  • 全球可用-基于cloudflare构建,全球边缘网络加速
  • 响应式设计-完美适配从桌面端到移动端的设备

部署

ZMAIl系统一共分为两个部分,一是用于展示的前端工程项目,二是负责接收邮件并临时存储的 worker项目。
部署ZMAIL需要分别部署两个组件,由于worker临时存储邮件内容使用到cloudflare D1 数据库,我们需要先创建一个cloudflare D1数据库。

创建D1数据库

访问cloudflare dashboard → 存储和数据库 → D1 SQL 数据库;点击创建根据提示创建一个数据库。创建完成以后如下图所示,我们需要记住两个数据:
数据库名:tempmail只能自定义
数据库ID: 987e6b1a-946a-4cba-84fc-23c4c31d72d6 (不允许自定义)
notion image

部署 ZMAIL 电子邮件 worker

配置数据库

fork 一份 https://github.com/zaunist/zmail 到你自己的仓库。然后修改 worker 目录下的 wrangler.toml 文件中的 database_namedatabase_idhttps://github.com/zaunist/zmail/blob/main/worker/wrangler.toml
如下图所示,我这个仓库中的数据库名和数据库ID正好对应前面创建的D1数据库的名字和ID:
notion image
这里不用担心数据库名字和数据库ID泄漏会有什么影响。没有 API token,别人没有办法操作操作你的数据库,而将ID写入wrangler.toml是为了更好的利用cloudflare的CI/CD能力。

部署cloudflare worker

访问 cloudflare dashboard → Workers和Pages。
点击创建,选择右边导入存储库,如果是第一次使用,需要先连接自己的 Github 仓库。
notion image
接着填入worker的设置,其中项目名称、分支都会自动识别,不用修改,构建命令不用填,留空就行,我们只需要填写部署命令和高级设置中的路径
部署命令:yarn deploy
路径: /worker
notion image
填写完成以后点击保存并部署,等待一会就可以部署成功。注意:在部署worker之前,一定要先创建D1数据库,并且按照前面所讲的,修改仓库中的 wrangler.toml 文件中的 database_name 和 database_id,如果没有正确填写同一个账号下的数据库的 database_name 和 database_id,那么在这里部署 worker 将会失败!!!
部署成功以后,可以在 workers 页面查看。部署成功以后,在zmail-backend的设置页面的绑定菜单中会新增一个数据库资源,也就是最开始创建的 tempmail 数据库。
notion image
默认的访问地址是 zmail-backend.xxx.workers.dev 这样的,在测试通过以后,记住这个地址,就叫它addr1吧,我们后面还需要用到。当然你不想用分配的默认域名,也可以绑定自己的域名。

在这之后我们可以去访问部署好的 worker 地址,确认API服务是否正常,数据库连接是否正常,在我自己的项目中,这个地址是:https://api.mail.mdzz.uk/api/debug/db ,如果数据库连接正常,那么将会输出,输出任何其他信息都表示部署有问题
notion image

搭建前端服务

搭建前端服务,我们需要使用到 cloudflare pages,同样的,来到 workers 和 pages 菜单,点击创建。不同的是这次我们需要选择创建 pages,而不是 worker。
notion image
选择通过导入现有Git存储库创建 ,选择 zmail 仓库,然后点击开始设置
 
notion image
预设框架:React(Vite)
构建命令:yarn build
构建输出目录:dist
根目录(高级)→ 路径:frontend
环境变量(高级):
变量名称:VITE_API_BASE_URL 值:自己的worker地址,也就是addr1,在我这里就是https://api.mail.mdzz.uk
变量名称:VITE_EMAIL_DOMAIN 值:你自己的邮箱域名,在我这里就是 mdzz.uk
 
notion image
设置填写完成以后,点击保存并部署,等待部署完成。

部署完成

当数据库、worker以及前端pages都创建完成,zmail的部署就已经完成90%,只差最后一步设置就可以实现接收邮件了。

配置

访问账户主页,选择一个你想用于接收邮件的域名,我选择的是 mdzz.uk。单击域名,进入域名的管理页面。
notion image
选择 电子邮件→电子邮件路由→路由规则,将Catch-All状态设置为活动,点击编辑,选择发送到worker,然后在 worker 列表选择 zmail-backend
notion image
notion image
点击保存,等待生效即可

接收邮件测试

当上述一切操作都完成,那么你就可以访问自己的前端网页,你可以给 pages 绑定任意一个你喜欢的域名地址,不一定非得是 mail.xxxx。同时,你也可以在网页上创建你的自定义域名邮箱。
以我的项目为例,访问 https://mail.mdzz.uk/,网页上就会自动生成一个随机邮箱,向邮箱发送任意一封邮件,等待大约十几秒钟,刷新一下网页就可以在收件箱中看到邮件。

在线体验

在线体验地址:https://mail.mdzz.uk/
利用CloudFlare Worker搭建XUGOU监控服务已经有Access Token,为什么还需要Refresh Token?
Loading...