转载自【教程】小白也能看懂的自建Cloudflare临时邮箱教程(域名邮箱)
一、准备域名
可以考虑spaceship的10年xyz,腾讯阿里时不时的域名活动。多准备几个防止一个域名注册太多被风控

二、将域名的DNS改到Cloudflare

三、配置电子路由
1.点击进入刚添加配置好的域名页面,进入电子邮件中的电子邮件路由板块后点击开始使用
2.按图填写操作发送验证邮件到你的邮箱,验证后让Cloudflare配置DNS的记录





四、开始搭建临时邮箱服务
1.创建D1数据库
回到主页面,找到存储数据库-D1 SQL数据库版面,创建数据库
打开项目地址,找到db/schema.sql Github项目代码,将代码全部复制后粘贴到D1数据库控制台中的命令框中
点击 Explore Data,进入到数据库中也可以看到有表存在
CREATE TABLE IF NOT EXISTS raw_mails (
id INTEGER PRIMARY KEY,
message_id TEXT,
source TEXT,
address TEXT,
raw TEXT,
metadata TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_raw_mails_address ON raw_mails(address);
CREATE INDEX IF NOT EXISTS idx_raw_mails_created_at ON raw_mails(created_at);
CREATE INDEX IF NOT EXISTS idx_raw_mails_message_id ON raw_mails(message_id);
CREATE TABLE IF NOT EXISTS address (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE,
password TEXT,
source_meta TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_address_name ON address(name);
CREATE INDEX IF NOT EXISTS idx_address_created_at ON address(created_at);
CREATE INDEX IF NOT EXISTS idx_address_updated_at ON address(updated_at);
CREATE INDEX IF NOT EXISTS idx_address_source_meta ON address(source_meta);
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 INDEX IF NOT EXISTS idx_sendbox_created_at ON sendbox(created_at);
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);







2.部署邮箱服务后端
还是在主页面,找到Compute-Workers 和 Pages板块,点击创建应用程序选择从hello world开始模板,Worker name随意填写。部署
部署完成后,到设置板块,找到兼容性标志部分,输入nodejs_compat,依旧部署
还是设置板块,点击编辑代码将Github项目内的代码全部复制粘贴进去
接下来在绑定板块将之前创建的D1数据库绑定
再到设置板块添加一个自定义域,便于我们调用API













3.设置环境变量
注意注意!!!类型为JSON的填写要加上 [“”] 表格内复制的是中文符号,自行切换下
| 值 | 类型 | 值 | 说明 |
|---|---|---|---|
| ADMIN_PASSWORDS | JSON | [“your_password”,“your_password_two”] | admin 控制台密码, 不配置则不允许访问控制台,大白话:管理员密码不配置你怎么管理?可以多个,你也可以只配置一个! |
| ADMIN_USER_ROLE | 纯文本 | admin | admin 角色配置, 如果用户角色等于 ADMIN_USER_ROLE 则可以访问 admin 控制台 大白话:如果角色是admin的用户就可以直接看到admin控制台 |
| DEFAULT_DOMAINS | JSON | [“”] 或者 [“你自己的域名”] | 这里给了一个空数组,也就是说没有登录的用户没有可用的域名,如果你想给没有登录的用户使用域名,你可以加上自己的域名[“各自域名”] 它是一个数组也可以多个 |
| DOMAINS | JSON | [“你的域名.love”] | 这里是用来配置你的域名的,例如我的域名就是linuxdo.love,实际上还可以添加多个,例如[“linuxdo.love”,“goai.love”],当然配置的域名都得接入cloudflare哈!没接入你配了也没用! |
| ENABLE_AUTO_REPLY | 纯文本 | false | 是否允许自动回复邮件,官方默认是false,我们也设置为false |
| ENABLE_USER_CREATE_EMAIL | 纯文本 | true | 是否允许用户随机创建邮箱账户,默认为true就行,这样就可以创建不同的邮件账户啦! |
| ENABLE_USER_DELETE_EMAIL | 纯文本 | true | 是否允许用户删除邮件,如果你不想用户删除邮件改成false就行 |
| JWT_SECRET | 纯文本 | 自己去生成一个! | 这里需要一个密钥,打开https://www.librechat.ai/toolkit/creds_generator 生成后复制“JWT_SECRET”里的内容 |
| NO_LIMIT_SEND_ROLE | 纯文本 | admin | 可以无限发送邮件的角色,我设置成了admin,也就是说admin角色的用户可以无限发送邮件了! |
| USER_ROLES | JSON | [{“domains”:[“你的域名”],“prefix”:“”,“role”:“vip”},{“domains”:[“你的域名”],“prefix”:“”,“role”:“admin”}] 别从这里复制从表格下的代码块复制这个不然报错 | 设置两个系统角色,一个为vip一个为admin! |
| ENABLE_ADDRESS_PASSWORD | 纯文本 | true | 启用邮箱地址密码功能,启用后创建新地址时会自动生成密码,并支持密码登录和修改 |




4.配置KV缓存
主页面的存储和数据库-Workers KV 创建
还是在主页面,找到Compute-Workers 和 Pages板块 找到绑定板块跟绑定D1数据库一样将KV绑定





5.配置邮件转发
回到你的域名页面,配置电子路由,设置路由规则



临时邮箱后端服务搭建完成
6.搭建前端服务
需要生成前端代码,打开官方文档,一个生成器
注意,这里图片里打错字了,图片里说的是“自定义域”,打成了“兹定于”










