【教程】小白也能看懂的自建Cloudflare临时邮箱教程(域名邮箱)

小黄 2024-12-28 01:09 1


此版本为2024年12月旧版本教程,请参照2026年新版本


教程翻新版本:



从 【教程】小白也能看懂的自建Cloudflare临时邮箱教程(域名邮箱) 继续

你可以通过右边的目录快速定位你想查看的模块~

文档如果没有需要修改的错误和需要新补充的,还请各位佬友不要随意改标题和内容!
总结佬友们补充的教程(2026年3月5日更新)
有很多热心的佬友出了别的版本的教程,例如这位佬友写了用Claude Code + CLI的形式去部署,其实项目是支持CLI的,只是说对…


写在前面


我一开始也没怎么用过Cloudflare,就最早的时候是用它来部署过Openai的接口中转,防止被墙(已经是很早很早之前的事情了,已经失效了),然后呢那天我打开cloudflare临时邮箱项目的官方教程文档,给我搞的一脸懵的,不过好在最后是成功搭建好了!写这个教程,也是为了帮助那些想搭,但是弄不明白的佬友,希望可以帮到你!


注意


此为临时邮箱,如果你需要注册自己觉得比较重要的平台且账号数据需要保留的情况下,请不要使用临时邮箱注册!!! 除非你打算一直使用你的域名邮箱!且自己有能力一直维护自己的邮箱服务!


我为什么想搭临时邮箱?


起初是一天晚上,半夜没睡着,然后不知道抽什么风,就想去域名注册看看,看能不能弄个好看点的域名,然后我试啊试,最终注册了一个goai.love,我想着不浪费的情况下,用它来做点什么,于是首先想到的就是搭建临时邮箱供给自己的朋友们一起使用,对打算搭个私有的临时邮箱


临时邮箱有什么好处?


我们知道,很多平台注册都会使用到邮箱,我们见过的常用邮箱有 gmailqq163等,一般会给一个固定的前缀,例如[email protected],这时,你会发现注册cursoropenaiclaude你只能用一个邮箱来注册,无法多次注册!说人话就是方便你可以无限注册薅羊毛(当然我也知道gmail可以有特殊的办法使它前缀不一致发送给同一个邮箱,我没试过就不说啦)


什么是临时邮箱?


标题上已经写了,它其实就是域名邮箱,只是我们用到的这个项目取名叫做临时邮箱,它是通过你自己购买的域名来在Cloudflare上搭建一个邮箱服务来实现的,所以你也可以叫它自建域名邮箱


准备



  • 至少一个域名

  • Cloudflare账号,你可以注册一个,官网:https://www.cloudflare.com/

  • cloudflare_temp_email项目代码(记得给作者点个star):GitHub - dreamhunter2333/cloudflare_temp_email: CloudFlare free temp domain email 免费收发 临时域名邮箱 支持附件 IMAP SMTP TelegramBot · GitHub

  • 临时邮箱搭建官方文档:https://temp-mail-docs.awsl.uk/ (佬友也可以去看官方文档搭建)


关于域名



  • 你可以寻找便宜的服务商去注册,我一般会在阿里云、腾讯云买域名,比如我为了写教程就买了一个linuxdo.love

  • 如果你想便宜,那就用不常见的后缀且域名前缀给长一点,不要学我,我这个域名续费180一年,18首年!

  • 在买域名的时候,你可以注意一下之后续费是多少钱一年,如果看不到,你可以尝试把1年加到2年一般就可以看到之后续费的价格了


项目原作者



赞,文档链接到这篇教程了,快速开始 | 临时邮箱文档



第一步,将域名交给Cloudflare托管


打开Clouflare,配置转移域











打开域名服务商,这里以我的腾讯为例,其它平台都是同理的













回到Cloudflare继续,一般改过之后需要等一阵子才会生效(大概10分钟)




















如果你不需要搭临时邮箱服务,只需要自己的域名邮箱


自此你可以设置成发送到电子邮件,也就是说这个xxx所有的邮件@linuxdo.love都会转发到你指定的邮箱里去

例如:



如果你需要继续搭建临时邮箱,请往下看!


搭建临时邮箱服务


创建D1数据库





打开项目地址,找到db/schema.sql


直达请点我









部署邮箱服务后端







nodejs_compat可以在这里复制!





代码直达地址,点我!


下载代码后,打开代码直接全部复制!





然后我们返回,继续配置D1数据库!











接下来,我们设置环境变量


你可以直接按我给的配置来配,如果你需要额外的配置可以查阅官方文档


文档直达


注意:请不要从表格里直接复制配置,你可以下拉到表格下方去复制,表格内的引号会自动将英文的转成中文的,所以请去下面代码块内复制!


请仔细查看参数说明,不要直接复制就不管了
















































































类型 说明
ADMIN_PASSWORDS JSON [“”,“设置密码”] admin 控制台密码, 不配置则不允许访问控制台,大白话:管理员密码不配置你怎么管理?可以多个,你也可以只配置一个!
ADMIN_USER_ROLE 纯文本 admin admin 角色配置, 如果用户角色等于 ADMIN_USER_ROLE 则可以访问 admin 控制台 大白话:如果角色是admin的用户就可以直接看到admin控制台
DEFAULT_DOMAINS JSON [“”] 或者 [“你的域名”] 这里给了一个空数组,也就是说没有登录的用户没有可用的域名,如果你想给没有登录的用户使用域名,你可以加上自己的域名[“各自域名”] 它是一个数组也可以多个
DOMAINS JSON [“你的域名”] 这里是用来配置你的域名的,例如我的域名就是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 纯文本 密钥 这里需要一个密钥,打开Credentials Generator | LibreChat 生成后复制“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 启用邮箱地址密码功能,启用后创建新地址时会自动生成密码,并支持密码登录和修改

ADMIN_PASSWORDS


["your_password","your_password_two"]

DEFAULT_DOMAINS


[""]

["你自己的域名"]

DOMAINS


["你的域名.love"]

USER_ROLES


[{"domains":["你的域名.love"],"prefix":"","role":"vip"},{"domains":["你的域名.love"],"prefix":"","role":"admin"}]

如何配置?看图





一次性可以配置多个哈!





配置KV缓存













配置邮件转发【非常重要,必须配置】







自此!恭喜你!临时邮箱后端服务搭建完成!


搭建前端服务,也就是操作界面!



我们需要生成前端代码,打开官方文档,一个生成器!


直达地址


【注意】这里图片里打错字了,图片里说的是“自定义域”,我打成了“兹定于”



















也许也不需要等十分钟,你可以用无痕浏览器,或者别的浏览器访问一下,看是否可以访问了!



测试是否正常


创建用户



admin 后台可以点击五次 logo 进入 ^-^











测试接收邮件











调用API创建邮件获取邮件(请根据实际情况去修改代码!这是之前测试用的代码!)


import requests
import json
from time import sleep
import random
import string
import re

# 配置信息
WORKER_DOMAIN = "" # 替换为你的后台域名,比如我的,apimail.linuxdo.love
EMAIL_DOMAIN = "" # 你的域名地址
ADMIN_PASSWORD = "" # 你的管理员密码

def generate_random_name():
"""生成随机邮箱名称"""
letters1 = ''.join(random.choices(string.ascii_lowercase, k=5)) # 5个小写字母
numbers = ''.join(random.choices(string.digits, k=random.randint(1, 3))) # 1-3个数字
letters2 = ''.join(random.choices(string.ascii_lowercase, k=random.randint(1, 3))) # 1-3个小写字母
return letters1 + numbers + letters2

def create_test_email():
"""创建测试邮箱"""
try:
random_name = generate_random_name()
res = requests.post(
f"https://{WORKER_DOMAIN}/admin/new_address",
json={
"enablePrefix": True,
"name": random_name,
"domain": EMAIL_DOMAIN,
},
headers={
'x-admin-auth': ADMIN_PASSWORD,
"Content-Type": "application/json"
}
)

if res.status_code == 200:
data = res.json()
print("创建邮箱成功:")
print(f"JWT: {data.get('jwt')}")
print(f"邮箱地址: {data.get('address')}")
return data.get('jwt'), data.get('address')
else:
print(f"创建邮箱失败: {res.status_code}")
return None, None
except Exception as e:
print(f"创建邮箱出错: {e}")
return None, None

def check_verification_code(jwt):
"""查看验证码"""
try:
limit = 10
offset = 0
res = requests.get(
f"https://{WORKER_DOMAIN}/api/mails",
params={
"limit": limit,
"offset": offset
},
headers={
"Authorization": f"Bearer {jwt}",
"Content-Type": "application/json"
}
)

if res.status_code == 200:
data = res.json()
# print("\n收到的邮件:")
# print(json.dumps(data, indent=2))

# 使用正则表达式提取验证码
if data.get('results') and len(data['results']) > 0:
raw_content = data['results'][0].get('raw', '') # 获取最新邮件的raw内容
# 使用更简单的正则表达式,直接匹配数字
code_matches = re.findall(r'code is: (\d{6})', raw_content)
if code_matches:
verification_code = code_matches[0] # 获取第一个匹配的6位数字
print(f"\n提取到的验证码: {verification_code}")
return True, verification_code
else:
# 尝试另一种匹配方式
code_matches = re.findall(r'code is:\s*(\d{6})', raw_content)
if code_matches:
verification_code = code_matches[0]
print(f"\n提取到的验证码: {verification_code}")
return True, verification_code
print("未找到验证码")
return False, None
else:
print("邮件列表为空")
return False, None
else:
print(f"获取邮件失败: {res.status_code}")
return False, None

except Exception as e:
print(f"获取邮件出错: {e}")
return False, None

def main():
# 1. 创建测试邮箱
jwt, address = create_test_email()
if not jwt or not address:
print("无法继续测试")
return

print("\n创建的邮箱信息:")
print(f"JWT: {jwt}")
print(f"邮箱地址: {address}")

# 2. 等待一会儿,让邮件有时间送达
print("\n等待10秒钟让邮件送达...")
sleep(10)

# 3. 查看验证码
success, code = check_verification_code(jwt)
if success:
print(f"成功获取验证码: {code}")
else:
print("获取验证码失败")

关于发送邮件


由于我一直在弄自己的学习,然后平常也就上L站看看,一直没有空写发邮件的教程,今天看到有佬友写了一篇有关发送邮件的配置,贴在这里哈!感谢佬友的教程!


书接上回:

看的大佬的帖子,就像是窜稀一般的顺滑,一会就整下来了,但是我发现我这个邮箱发不了邮件,于是就去爬楼看看有没有人跟我一样,结果是大佬没写这一点的实现(估计是大佬想考验我们了
首先看看官方怎么描述的:
[image]
总而言之,言而总之,就三步:
首先去https://resend.com 注册一个账号
[image]、
点击 API KEYS …


另外一个佬友写的发送邮件教程



[image]
论坛有很详细的教程了,走了一遍,总结下,说下几个小坑
优点

拥有属于自己的大量邮箱
接收邮件
发送邮件
UI登陆和注册界面
能够开放给其他用户,并限制用户注册的邮箱个数


要求

有一个DNS解析了的域名 (绑定了某个服务器的一个域名)

原理
基于cloudflare_temp_email
https://temp-mail-docs.awsl.uk/
htt…


另类方式实现自有域名无限收码(只能收不能发,发还是得依靠resend之类第三方)


如果你有自己的域名,你只是为了接收邮件,有个更简单的方式,使用cloudflare的 Email Routing 即可。

如图,选择你托管在cf上的域名,然后点击这个



然后 (有冲突的地方记得删掉)



然后到这地方设置下全转发,把你域名下的所有邮件统一转到你私有的某个邮箱。



然后你就拥有无限多的邮箱来收验证码了。

即任何发往这个域名的邮件都会转到你设置的那个私有邮箱中。

举例 “xx@域名 admin@域名”…… 最终都会被cf大善人给你转发到你设置的那个邮箱中。

设置完了记得启用下。


问题收集


关于刷新后404问题




新版 CF 页面需要标记它是单页面应用,我记得以前是没有这个选项的,估计是新加的配置项。




结束


啊,从21点写到现在01点03分,终于写完了,希望能帮到佬友,发送邮件我就不写了,需要的可以去看看官方文档,第一次写教程,如果有错误或者欠缺的地方,欢迎佬友们补充!我去睡觉了!我还说我调整作息呢…又熬到1点了

访问地址:https://mail.linuxdo.love/


最后接好运


昨天中了40 5块钱中了40块钱!自己买疯狂星期四! - #6,来自 XiaoHuang

今天中了50


为什么我的Cloudflare里面没有D1数据库


祝佬友们也好运连连!



本教程允许搬运,但请标注出处,谢谢


最新回复 (19)
  • fangyuan99 12-28 01:11
    1

    事无巨细,赞了

  • -.- 12-28 01:13
    2

    感谢分享有时间试试

  • 𝓕-𝓓𝓻𝓸𝓲𝓭 12-28 01:13
    3

    实在太棒了,^-^给了

  • 泉此方 12-28 01:14
    4

    好强啊,感谢分享~

  • yiyiyi 12-28 01:23
    5

    很细,感谢佬友

  • 906051999 12-28 01:23
    6

    我靠!这个教程也太长长长长了!!!!

  • 小黄 楼主 12-28 01:26
    7

    写给小白的,不得细点!

  • 糊涂 12-28 01:28
    8

    太详细了,太适合新手了

  • 腩肉八九 12-28 01:28
    9

    太强了,感谢佬的精心制作分享

  • XYZ 12-28 01:31
    10

    这个手把手教学写起来很费时间,谢谢分享

  • 0x000 12-28 01:41
    11

    这也太细了吧 ^-^


    我直接 catch all 转 duck 再转飞书。

  • 小黄 楼主 12-28 01:53
    12

    整挺好!!

  • 黑猫警长 12-28 04:05
    13

    太细心啦

  • 柘希 12-28 05:26
    14

    很吊,很详细,收藏了

  • George 12-28 06:19
    15

    太详细了老友

  • PKYF 12-28 06:33
    16

    学了。感谢大佬

  • 雨我无瓜 12-28 07:26
    17

    教程很好很细,为了写教程专门买域名,大受震撼!赞赞支持!

  • wm(猫猫头大帅哥的饲主) 12-28 07:28
    18

    刚刚好之前建这个一直失败)

    谢谢啦

  • 吸兮无者为俊杰 12-28 07:46
    19

    祝佬友发大财

* 帖子来源Linux.do
返回