使用Cloudflare免费服务搭建临时邮箱系统
项目原地址:https://github.com/dreamhunter2333/cloudflare_temp_email
演示地址:tm.b4.hk
[!NOTE]
事先准备内容:
一个cloudflare账户
两个域名,分别对应
前端: tm.b4.hk
后端: tmapi.b4.hk
D1数据库配置
- 打开Cloudflare主页
- 选择左边侧栏的Workers和Pages,点进去
- 选择左边侧栏的D1,点进去
创建数据库,选择仪表盘,名字填dev,然后点击创建
选择控制台
在命令行处输入以下指令,然后执行,出现一下提示说明已经完成
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
90CREATE 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,
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);指令来源:https://github.com/dreamhunter2333/cloudflare_temp_email/blob/main/db/schema.sql
至此D1数据库配置完成
后台程序部署
返回Workers和pages,选择创建
创建一个Workers,点击创建一个Workers,名字为tmapi,然后点击部署
在概述页面找到刚刚创建的Worker,点击右上角的编辑代码
点击左上角的文件夹符号,删除worker.js
下载这个文件,并且上传,再点击右上角的部署
1
https://github.com/dreamhunter2333/cloudflare_temp_email/releases/latest/download/worker.js
回到最开始的worker界面,点击设置,选择变量,添加以下四个变量,DOMAINS填写顶级域名,然后点击部署
1 | ADMIN_PASSWORDS = ["1234"] |
往下滑动,点击下方的KV 命名空间绑定,选择创建,名称填写为temp_mail,点击添加
返回Worker,绑定刚刚的KV,变量名称为KV,命名空间为刚刚创建的,然后部署
绑定D1数据库,变量名为DB
选择触发器,添加自定义后端域(tmapi.b4.hk)
安全检查,分别访问tmapi.b4.hk和tmapi.b4.hk/health_check,返回结构为ok则代表完成。
前端程序部署
返回Workers和pages点击创建,选择pages
生成配置文件,打开作者提供的地址:配置文件生成,在这里输入你的后端域名,点击生成,然后下载
返回刚刚的创建pages,选择上传资产,命名为tempmail,等待压缩包上传完成,选择部署站点
进入项目,点击自定义域,添加自己的前端域(tm.b4.hk),点击继续,然后激活域
访问前端域名,输入密码1234,可以正常进入则代表完成,管理员页面为域名/admin
邮件设置
进入到你设置的域名,选择左边侧边栏的电子邮件–>电子邮件路由
添加DNS记录
点击目标地址,验证一个邮箱地址,一般使用自己邮箱就好
点击路由规则,编辑,将操作改为发动到Worker,选择刚刚创建的后端,保存
其用这个规则
再次访问前端界面,正常访问则代表部署成功
发送邮件部署
选择Domains
添加domain,并且验证
点击旁边的api,创建api密钥,选择全权限,复制密钥
回到cloudflare的worker和pages页面,选择后端的worker,进入项目
点击设置,选择变量,点击编辑变量,添加变量,部署
1 | RESEND_TOKEN = 你的密钥 |
Telegram机器人部署(强烈建议)
创建一个机器人,在tg中搜索@BotFather申请
获取到机器人的token,然后搜索@userinfobot,获取自己的账户id
仿照之前的步骤再次添加变量
1 | TELEGRAM_BOT_TOKEN = 机器人token |
打开系统的管理员页面:前端域名/admin,在此处填写你的tg用户id
至此所有基础配置完成
附:所有变量名称及作用,添加方式如之前所示
1 | [vars] |