
利用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 | 任意名字@域名 | [email protected] | TXT | 超级管理员邮箱 | 该邮箱不会自动注册,需要你完成初始化后手动注册,注册后拥有超级管理员权限 |
jwt_secret | 任意字符串 | 114514 | TXT | 初始化平台需要的密钥 | 与管理员邮箱密码无关,不要设置太简单,也最好不要添加”?”之类的特殊符号,否则可能被浏览器判定为某些转义符而无法正确初始化 |
绑定数据库
左侧菜单“存储和数据库”,分别创建kv和d1数据库,名字随意
在worker“绑定”选项卡中绑定两个数据库,其中d1数据库变量名称必须是db,kv数据库变量名称必须是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://你的域名/apiwebhooks
如https://blaze.dpdns.org/apiwebhooks
,事件只勾选email.bounced
email.complained
email.delivered
email.delivery_delayed
添加人机验证
这一步可选,防止网站被批量注册邮箱
cloudflare主页,turnstile,添加组件,添加主机名(记得添加完还要勾选),“添加”完后继续勾选,然后“创建”,此处提供API Key
分别复制到邮箱后台的Turnsite密钥框
当然我部署该网站只提供个人使用,所以注册完后就在后台关闭了新用户注册
毕竟这个人机验证不影响一个IP注册多个账号
普通账号不能发送邮件,需要超管在权限管理中设置普通权限组每天或总共发送邮件数的上限