使用 Cloudflare 部署临时邮箱服务


一、引言

在当今数字化时代,临时邮箱服务已成为保护个人隐私、避免垃圾邮件的重要工具。dreamhunter2333 开发的 cloudflare_temp_email 项目利用 Cloudflare Workers 平台,提供了一个轻量级、高性能的临时邮箱解决方案。本文将详细介绍如何部署和使用这一开源项目。

cloudflare_temp_email 是一个基于 Cloudflare Workers 的临时电子邮件服务系统,具有以下特点:

  • 完全开源且免费(MIT 许可证)
  • 使用 Cloudflare Workers 和 D1 数据库
  • 支持自定义域名
  • 无需维护服务器
  • 自动过期机制

二、准备工作

在开始部署前,请确保您已准备好以下内容:

Cloudflare 账户:注册并验证的 Cloudflare 账户
自定义域名:您拥有管理权限的域名(已在 Cloudflare 上托管)
Git:用于克隆项目仓库

三、详细安装步骤

本教程是通过 Github Actions 的方式部署的项目,优点是可以自动更新部署项目,可直接访问官方仓库

1、D1 数据库

打开 cloudflare 控制台,选择 Workers & Pages -> D1 -> Create Database,点击创建数据库

创建数据库

创建完成后,我们在 cloudflare 的控制台可以看到 D1 数据库

打开 Console 标签页,输入 db/schema.sql 的内容,点击 Execute 执行

创建数据库

更新数据库 schema

找到需要执行的 patch 文件(晚于D1建库日期的sql), 执行, 例如: db/2024-01-13-patch.sql

2、配置和部署

  1. 在 GitHub fork 仓库

GitHub fork

  1. 打开仓库的 Actions 页面,找到 Deploy Backend Production 和 Deploy Frontend,点击 enable workflow 启用 workflow

  2. 然后在仓库页面 Settings -> Secrets and variables -> Actions -> Repository secrets, 添加以下 secrets:

  • CLOUDFLARE_ACCOUNT_ID: Cloudflare 账户 ID, 参考文档
  • CLOUDFLARE_API_TOKEN: Cloudflare API Token, 参考文档
  • BACKEND_TOML: 后端配置文件,参考此处
  • FRONTEND_ENV: 前端配置文件,请复制 frontend/.env.example 的内容,并参考此处修改
  • FRONTEND_NAME: 你在 Cloudflare Pages 创建的项目名称,需要在cloud flare的pages中创建对应名称的pages
  • FRONTEND_BRANCH: (可选) pages 部署的分支,可不配置,默认 production
  • TG_FRONTEND_NAME: (可选) 你在 Cloudflare Pages 创建的项目名称,同 FRONTEND_NAME,如果需要 Telegram Mini App 功能,请填写
  • DEBUG_MODE: (可选) 是否开启调试模式,配置为 true 开启, 默认 worker 部署日志不会输出到 Github Actions 页面,开启后会输出
  • BACKEND_USE_MAIL_WASM_PARSER: (可选) 是否使用 wasm 解析邮件,配置为 true 开启, 功能参考 配置 worker 使用 wasm 解析邮件
  1. 打开仓库的 Actions 页面,找到 Deploy Backend Production 和 Deploy Frontend,点击 Run workflow 选择分支手动部署

3、如何配置自动更新

打开仓库的 Actions 页面,找到 Upstream Sync,点击 enable workflow 启用 workflow

如果Upstream Sync 运行失败,到仓库主页点击 Sync 手动同步即可

4、配置邮件转发

  1. 在 CF 控制台网页的对应域名的 Email Routing 下,配置 电子邮件 DNS 记录, 如果是多个域名,需要配置多个域名的 电子邮件 DNS 记录

  2. 在将电子邮件地址绑定到您的 Worker 之前,您需要启用电子邮件路由并拥有至少一个经过验证的电子邮件地址(目标地址)。

  3. 配置每个域名的 Email Routing 的路由规则中的 Catch-all 地址 发送到 worker

Email Routing


  目录