首先我们需要有托管在Cloudflare上面的域名(基本要求),其次开始教程
第一步:
![图片[1]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749995661358_1.webp)
![图片[2]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749995656740_13.png)
![图片[3]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749995652932_12.png)
![图片[4]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749995654532_10.png)
![图片[5]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749995661728_11.png)
Cloudflare后台找到存储和数据库-D1 SQL数据库-右上角点击创建数据库-名称任意点击创建 如下图
![图片[6]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749990250503_1.png)
![图片[7]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749990327510_2.png)
第二步:
复制下面代码后回到Cloudflare刚刚的位置找到控制台把内容粘贴进去点击执行
![图片[8]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749996420103_3.png)
CREATE 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);
第三步:
点击Wokers和Pages,创建一个新的Woker,名字任意点击部署,随后部署成功后点击回到刚刚创建woker的地方点击设置找到
![图片[9]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749990980424_5.png)
![图片[10]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749996574477_15.png)
部署后点击绑定选择刚刚创建的数据库,这里注意,变量名称必须为DB,然后点击绑定
![图片[11]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749996694882_16.png)
![图片[12]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749996864099_17.png)
第四步:
部署Woker后找到编辑代码
![图片[13]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749997239490_18.png)
进入之后点击左上角的文件夹图标,然后右键点击woker.js这个文件选择删除,然后再点我下载文件
![图片[14]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1749991863980_7.png)
下载好新的woker.js文件后再在左边文件里面空白处右键点击选择上传文件,把刚刚下载的文件上传然后点击部署
![图片[15]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750000156692_21.png)
第五步:
在设置里面找到
![图片[16]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750000263388_20.png)
![图片[17]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750000404785_20.png)
下面我把变量代表的含义发出来自己对照着填写即可
注意:请不要从表格里直接复制配置,你可以下拉到表格下方去复制,表格内的引号会自动将英文的转成中文的,所以请去下面代码块内复制!
请仔细查看参数说明,不要直接复制就不管了
值 | 类型 | 值 | 说明 |
---|---|---|---|
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 | 纯文本 | 自己去生成一个! | 这里需要一个密钥,打开GitHub 生成后复制“JWT_SECRET”里的内容 |
NO_LIMIT_SEND_ROLE | 纯文本 | admin | 可以无限发送邮件的角色,我设置成了admin,也就是说admin角色的用户可以无限发送邮件了! |
USER_ROLES | JSON | [{“domains”:[“你的域名.love”],“prefix”:“”,“role”:“vip”},{“domains”:[“你的域名.love”],“prefix”:“”,“role”:“admin”}] 别从这里复制从表格下的代码块复制这个不然报错 | 设置两个系统角色,一个为vip一个为admin! |
ADMIN_PASSWORDS
["your_password","your_password_two"]
DEFAULT_DOMAINS
[""]
["你自己的域名"]
DOMAINS
["你的域名.love"]
USER_ROLES
[{"domains":["你的域名"],"prefix":"","role":"vip"},{"domains":["你的域名"],"prefix":"","role":"admin"}]
如何配置?看图
![图片[18]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750005063740_23.png)
第六步:
配置KV缓存,创建实例,名字自定义,完成后再点到最开始创建的Woker页面去把这个KV绑定一下
![图片[19]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750005291077_24.png)
![图片[20]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750005553393_25.png)
![图片[21]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750005983384_26.png)
配置邮件转发【非常重要,必须配置】
![图片[22]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750006141581_27.png)
自此!恭喜你!临时邮箱后端服务搭建完成!
第七步:
搭建前端服务,也就是操作界面!我们需要生成前端代码,打开官方文档,一个生成器!
来到这里输入一开始我们填写的自定义域名,然后点击生成再下载
![图片[23]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750007543039_28.png)
第八步:
返回Cloudflare,按照箭头指示点击开始使用,把刚刚下载的压缩包上传
![图片[24]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750007726804_29.png)
最后一步,添加自定义域名就可以正常使用了恭喜你获得一个自定义域名!!!
如果需要发送信息的话跟着下一步
第九步:
https://resend.com/ 注册个账号,点击domain,然后地区我选择的美国,再点击Cloudflare按钮,点击授权
![图片[25]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750008731576_31.png)
![图片[26]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750008922351_33.png)
然后点到API Keys右上角添加一个密钥,名称自定义,添加成功后不要忘记点击复制密钥,返回是无法查看的需要重新生成,然后再回到Cloudflare到woker里面再添加一个变量,变量名称为
![图片[27]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750009104680_34.png)
![图片[28]-博客-技术-分享-免费小白也能看懂的自建Cloudflare域名邮箱教程](https://img.a686.de/file/1750009357404_36.png)
任务完成
感谢您的来访,获取更多精彩文章请收藏本站。

暂无评论内容