CnSywFRD
文章6
标签9
分类2
<% if (options.search.type == 'local') { %> <%- js_auto_version('js/search') %> <% } %> <% if (options.search.type=='swiftype') { %> <% } %>

文章分类

一言

文章归档

利用cloudflare部署临时邮箱管理平台【FRD04】

利用cloudflare部署临时邮箱管理平台【FRD04】

声明

临时邮箱来自于项目cloud-mail
本教程来源于Cloud Mail 部署教程,此处对原教程作简化和补充处理

主体

在cloudflare中导入worker

域名绑定

首先你肯定要有你自己的域名,并且在cloudflare中完成绑定,此处不多说

仓库fork与github账号绑定

然后去到cloud-mail项目仓库fork到你的github仓库,接着在cloudflare的workers页面选择从github导入存储库,名字任取,完成对github账号的绑定

仓库权限设置

前往 https://github.com/settings/installations 找到Cloudflare Workers and Pages进入configure页面,在Repository access下将你刚才fork到的仓库通过Select repositories添加到Only select repositories,或者你直接选择All repositories也可以

worker部署

继续回到cloudflare创建worker页面,在“导入存储库”区域选好fork的项目,注意,在“高级设置”下的“路径”要填/mail-worker,接着等待部署完成

worker配置

环境变量

在worker的设置页面,“域和路由”添加自定义域名,比如我的域名是blaze.dpdns.org,那么我可以填mail.blaze.dpdns.org
“变量和机密”中

变量名 示例 类型 作用 备注
domain [“你的域名”] [“blaze.dpdns.org”] JSON 作网站的邮箱域名 域名不需要再添加如mail.开头的次级域名
admin 任意名字@域名 admin@blaze.dpdns.org TXT 超级管理员邮箱 该邮箱不会自动注册,需要你完成初始化后手动注册,注册后拥有超级管理员权限
jwt_secret 任意字符串 114514 TXT 初始化平台需要的密钥 与管理员邮箱密码无关,不要设置太简单,也最好不要添加”?”之类的特殊符号,否则可能被浏览器判定为某些转义符而无法正确初始化

绑定数据库

左侧菜单“存储和数据库”,分别创建kv和d1数据库,名字随意
在worker“绑定”选项卡中绑定两个数据库,其中d1数据库变量名称必须是dbkv数据库变量名称必须是kv

初始化邮箱平台

浏览器访问https://你的自定义域名/api/init/你绑定的jwt_secret
例如https://mail.blaze.dpdns.org/api/init/114514
此时自动初始化数据库,如果之前部署过只会更新不会覆盖原有数据
接着你可以注册管理员邮箱账号和其他账号

邮件收发

cloudflare配置电子邮件路由

去cloudflare账号主页,点击你的域名,菜单栏会变化,此时进入“电子邮件”的“电子邮件路由”
点击黄色横幅的“启用电子邮件路由”,创建完后进入“路由规则选项卡”打开catch-all并进入编辑,选择“发动到worker”

附件

来到cloudflare主页,选择r2存储对象,名字任意
完成后去“设置”选项卡,自定义域,如r2.blaze.dpdns.org
在邮箱页面登录超管账号,系统设置,在r2对象存储处添加刚才的自定义域,需要添加https://
去cloudflare worker页面,“绑定”选项卡添加r2存储桶,变量名必须是r2

邮件发送

进入resend.com注册账号,添加域名
手动在cloudflare中添加DNS记录

注意正常的顶级域名是没有问题的,而像我用的这种二级域名,不要使用网页给我们提供的send.blaze名称,而是补全成send.blaze.dpdns.org
对待resendxxx.xxx也是这样处理,而内容不需要另外处理
一般五分钟内能通过验证

然后rensend.com添加API Key,复制到邮箱平台后台设置的resend令牌
再次去resend.com Webhooks选项卡添加,名称为https://你的域名/apiwebhookshttps://blaze.dpdns.org/apiwebhooks,事件只勾选email.bounced email.complained email.delivered email.delivery_delayed

添加人机验证

这一步可选,防止网站被批量注册邮箱
cloudflare主页,turnstile,添加组件,添加主机名(记得添加完还要勾选),“添加”完后继续勾选,然后“创建”,此处提供API Key
分别复制到邮箱后台的Turnsite密钥框

当然我部署该网站只提供个人使用,所以注册完后就在后台关闭了新用户注册
毕竟这个人机验证不影响一个IP注册多个账号

普通账号不能发送邮件,需要超管在权限管理中设置普通权限组每天或总共发送邮件数的上限