准备
- 域名: 你需要一个已经拥有的域名。
- Cloudflare 账号: 如果没有,请前往 Cloudflare 官网 注册一个。
- 官方文档: https://temp-mail-docs.awsl.uk/
- 域名接入 Cloudflare: 如果你还不清楚如何将域名接入 Cloudflare,请参考这篇教程: 点击这里 (请注意,此链接可能需要替换为实际可用的教程链接)
Cloudflare 电子邮件设置
- 开始使用电子邮件路由: 在 Cloudflare 控制台中,找到你的域名,点击 电子邮件,然后选择 电子邮件路由 开始使用。
- 自定义域名前缀和验证邮箱:
- 为你的域名设置一个前缀。
- 在下方输入你的真实邮箱地址(QQ 邮箱或 163 邮箱等,确保能接收到邮件)。
- 点击 验证邮箱。
- 验证邮箱: 前往你填写的邮箱,找到 Cloudflare 发来的邮件,点击邮件中的链接完成验证。
- 启用电子邮件路由: 返回 Cloudflare,点击 继续,在电子邮件路由入门指南页面,点击 添加记录并启用。
- 编辑路由规则: 点击 编辑,打开 状态,然后点击 路由规则。
创建 D1 数据库
- 进入 D1 数据库: 在 Cloudflare 主页,点击 存储和数据库,然后选择 D1 SQL 数据库。
- 创建数据库: 点击 创建,输入一个你喜欢的名字,然后点击 创建。
- 执行 SQL 脚本:
- 复制以下 SQL 代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105CREATE TABLE IF NOT EXISTS raw_mails (
id INTEGER PRIMARY KEY,
message_id TEXT,
source TEXT,
address TEXT,
raw TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_raw_mails_address ON raw_mails(address);
CREATE TABLE IF NOT EXISTS address (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_address_name ON address(name);
CREATE TABLE IF NOT EXISTS auto_reply_mails (
id INTEGER PRIMARY KEY,
source_prefix TEXT,
name TEXT,
address TEXT UNIQUE,
subject TEXT,
message TEXT,
enabled INTEGER DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_auto_reply_mails_address ON auto_reply_mails(address);
CREATE TABLE IF NOT EXISTS address_sender (
id INTEGER PRIMARY KEY,
address TEXT UNIQUE,
balance INTEGER DEFAULT 0,
enabled INTEGER DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_address_sender_address ON address_sender(address);
CREATE TABLE IF NOT EXISTS sendbox (
id INTEGER PRIMARY KEY,
address TEXT,
raw TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_sendbox_address ON sendbox(address);
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
user_email TEXT UNIQUE NOT NULL,
password TEXT NOT NULL,
user_info TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_users_user_email ON users(user_email);
CREATE TABLE IF NOT EXISTS users_address (
id INTEGER PRIMARY KEY,
user_id INTEGER,
address_id INTEGER UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_users_address_user_id ON users_address(user_id);
CREATE INDEX IF NOT EXISTS idx_users_address_address_id ON users_address(address_id);
CREATE TABLE IF NOT EXISTS user_roles (
id INTEGER PRIMARY KEY,
user_id INTEGER UNIQUE NOT NULL,
role_text TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_user_roles_user_id ON user_roles(user_id);
CREATE TABLE IF NOT EXISTS user_passkeys (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
passkey_name TEXT NOT NULL,
passkey_id TEXT NOT NULL,
passkey TEXT NOT NULL,
counter INTEGER DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_user_passkeys_user_id ON user_passkeys(user_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_user_passkeys_user_id_passkey_id ON user_passkeys(user_id, passkey_id); - 在 D1 数据库的 控制台 中,将代码粘贴到输入框中。
- 点击 执行。
- 复制以下 SQL 代码:
部署 Worker
创建 Worker: 在 Cloudflare 主页,点击 Workers 和 Pages,然后选择 创建 Worker。
命名 Worker: 随意给你的 Worker 起一个名字,然后点击 部署。
设置兼容性标志:
- 找到你刚才部署的 Worker,点击进入。
- 点击 设置,找到 兼容性标志。
- 点击编辑标志,输入 nodejs_compat。
编辑代码:
点击 编辑代码。
下载
worker.js
代码:worker.js将下载的代码复制粘贴到代码编辑器中,然后点击 部署。
绑定 D1 数据库:
- 返回 Worker 设置页面。
- 点击 D1 数据库,然后选择 绑定。
- 在 变量名称 中输入 DB。
- 在 D1 数据库 中选择你创建的数据库。
设置自定义域:
- 在 域和路由 中选择 自定义域。
- 输入你想要的 API 域名 (例如
api.你的域名.com
)。
配置环境变量:
- 在 Worker 设置页面,找到 环境变量。
- 根据下表配置环境变量:
值 类型 值 说明 ADMIN_PASSWORDS JSON ["your_password", "your_password_two"]
admin 控制台密码,不配置则不允许访问控制台。可以配置多个密码,也可以只配置一个。 ADMIN_USER_ROLE 纯文本 admin
admin 角色配置,只有用户角色等于 ADMIN_USER_ROLE
的用户才能访问 admin 控制台。DEFAULT_DOMAINS JSON [""]
未登录用户可用的域名列表,默认为空。如果你想让未登录用户也可以使用域名,可以添加你的域名,例如 ["你的域名.com"]
,可以添加多个域名。DOMAINS JSON ["你的域名.com"]
用于配置你的域名,例如 ["你的域名.com"]
,请确保配置的域名已经接入 Cloudflare。ENABLE_AUTO_REPLY 纯文本 false
是否允许自动回复邮件,默认 false
。ENABLE_USER_CREATE_EMAIL 纯文本 true
是否允许用户随机创建邮箱账户,默认 true
。ENABLE_USER_DELETE_EMAIL 纯文本 true
是否允许用户删除邮件,默认 true
。设置为false
则不允许用户删除邮件。JWT_SECRET 纯文本 自己生成一个 用于生成 JWT 的密钥,前往 https://www.librechat.ai/toolkit/creds_generator 生成并复制 JWT_SECRET 的值。 NO_LIMIT_SEND_ROLE 纯文本 admin
可以无限发送邮件的角色,设置为 admin
则只有admin
角色的用户可以无限发送邮件。USER_ROLES JSON [{"domains":["xx.com"],"prefix":"","role":"vip"},{"domains":["xx.com"],"prefix":"","role":"admin"}]
设置系统角色,示例中创建了 vip
和admin
两个角色。请从这里复制,避免格式错误。RESEND_TOKEN 纯文本 re_xxxx
去 https://resend.com
注册并添加域名获取 api 秘钥填写,用来发送邮件,可自己选择。
部署 KV 缓存
- 创建 KV 命名空间: 在 Cloudflare 主页,点击 存储和数据库,然后选择 KV。
- 创建命名空间: 点击 创建,随意输入一个名字,然后点击 添加。
- 绑定 KV 命名空间:
- 返回 Workers 和 Pages,找到你创建的 Worker。
- 点击 设置,然后选择 绑定。
- 点击 KV 命名空间,在 变量名称 中输入 KV(注意大写)。
- 在 命名空间 中选择你创建的 KV 命名空间。
部署路由转发
- 进入电子邮件路由: 在 Cloudflare 主页,点击你的域名,然后选择 电子邮件,再选择 电子邮件路由。
- 编辑路由规则:
- 找到 路由规则 部分,点击 catch-all 规则。
- 在 操作 中选择 发送到 Workers。
- 在 编辑位置 中选择你创建的 Worker。
- 点击 保存。
创建页面前端
下载前端代码: 前端代码
解压前端代码: 解压下载的
frontend.zip
文件。编辑 index 文件:
- 打开解压后的文件夹,进入
assets
文件夹。 - 找到
index-xxxx
文件 (xxxx 是随机数,每个人不一样),使用文本编辑器打开。 - 按下
Ctrl + F
(或Cmd + F
),搜索https://temp-email-aps-
。 - 将找到的链接替换成你刚刚创建的 API 域名 (例如
https://api.你的域名.com
),保存文件。
- 打开解压后的文件夹,进入
创建 Pages 项目:
- 在 Cloudflare 主页,点击 Workers 和 Pages,然后选择 Pages。
- 点击 创建项目,然后选择 上传资产。
- 随便起一个项目名,然后点击 从计算机选择。
上传前端代码: 选择你解压的文件夹,将所有文件上传。
设置自定义域:
- 点击 自定义域,将你的邮箱前端域名指向 Pages 项目 (例如
mail.你的域名.com
)。
- 点击 自定义域,将你的邮箱前端域名指向 Pages 项目 (例如
访问前端: 等待几分钟,然后在浏览器中输入
mail.你的域名.com
,查看是否成功部署。
完成
恭喜!你已经成功搭建了一个基于 Cloudflare 的无限邮箱服务。
注意:
- 请将示例中的 “你的域名.com”、”api.你的域名.com” 和 “mail.你的域名.com” 替换成你自己的实际域名。
- 请确保你的域名已经正确接入 Cloudflare。
希望这个教程对你有帮助!