在Cloudflare上部署邮件服务

在 Cloudflare 上部署邮件服务

本文介绍如何使用 Cloudflare Worker 及相关服务搭建自己的邮件服务。

前提条件

  1. 使用 Cloudflare Worker 部署
  2. Cloudflare 账户上需要有域名
  3. 本教程使用图形化部署,若需要使用 Github Action 部署,请查看官方文档:https://doc.skymail.ink/

1. 创建项目

1.1 获取源代码

前往 Github,给项目作者点个 Star 并 fork:
https://github.com/maillab/cloud-mail

1.2 创建 Worker 项目

在 Cloudflare Workers 页面,创建新项目,选择“从 Github 导入”方式。
1.2配图

1.3 配置路径

在部署前的配置页面,向下滚动到“路径”设置,将其修改为:
/mail-worker
1.3配图

1.4 设置环境变量(必须变量示例)

变量名 用途说明
domain 邮箱要使用的域名,多域名请用 JSON 数组格式,例如 ["example.com","example2.com"]
admin 后台面板的管理员邮箱地址,例如 admin@example.com
jwt_secret JWT 密钥,可以输入一串随机字符串或 UUID,避免使用特殊字符

2. 绑定数据库

2.1 创建数据库

在 Cloudflare 控制台中分别创建一个 KV 命名空间 和一个 D1 数据库
2.1配图

2.2 添加绑定

在 Worker 的“设置” -> “变量”中,添加以下绑定:

  • 变量名:kv,绑定到你创建的 KV 命名空间
  • 变量名:db,绑定到你创建的 D1 数据库

注意:变量名必须为 kvdb


3. 设置邮件转发

  1. 进入你要使用的域名管理页面。
  2. 选择 电子邮件电子邮件路由路由规则
  3. 修改并启用 Catch-All 规则,目标选择你刚部署的 Worker 项目。

4. 登录网站

4.1 初始化数据库

在浏览器中访问以下 URL(请替换实际参数):

1
https://你的worker自定义域/api/init/你的jwt_secret

4.2 注册管理员账号

  1. 访问你的 Worker 自定义域名。
  2. 注册管理员账号并登录。

5. 更新部署

5.1 代码同步

当你从 Github 同步代码后,Worker 会自动更新。

5.2 重新绑定数据库

更新后,原先绑定的数据库可能会丢失,需要重新绑定 dbkv

5.3 更新数据库

访问以下 URL 更新数据库(不会覆盖已有数据):

1
https://你的worker自定义域/api/init/你的jwt_secret