【Cluoud Mail】免费邮箱系统部署到CloudFlare
一个域名,创建多个不同的邮箱,使用Cloudflare部署,Resend推送邮件,免费搭建属于自己的邮箱服务。以下设置步骤没有提到的不用设置,跟着步骤做就没问题。
📌 需准备
- Github fork项目到自己仓库(https://github.com/maillab/cloud-mail)
- 域名(建议使用收费域名)
- CloudFlare托管的域名和设置(CloudFlare)
- Resend邮件平台注册账号和设置(Resend)
- Telegram电报软件(选配)
🛠️ 一、CloudFlare设置
1、域名托管到CloudFlare平台
- 示例:
abced.com(用于下文示例使用) - 托管过程点击查看链接
2、创建worker项目
- 进入顶级菜单(点击左上角的橙色云图标即可进入顶级菜单)
- 点击“计算(Workers)”
- 点击“Workers和Pages”
- 导入存储库:选择Github、选择你的Github项目名(第一次导入需绑定Github)
- 项目名称:使用
cloud-mail(默认不能改的) - 高级设置:根目录填写
mail-worker,/这个符号带不带都行 - 点击“创建和部署”
- 进入新建的cloud-mail项目>设置
- 域和路由:点击“添加”,绑定域名
abced.com - 变量和机密>添加>类型文本(右侧栏设置完变量的时候,不要点“部署”,先点“+添加变量”,可把3个变量一次性部署。)
- 变量名称
domain:值["abced.com"]或["abced.com","aaa.com"] - 变量名称
admin:值admin@abced.com(管理员邮箱) - 变量名称
jwt_secret值 任意一串字符,这里示例为123456qwerty - 注意:管理员账号在后边步骤中,登录页面需要注册用户名admin,才会有管理权限。
3、创建数据库
①、KV空间(用于存储存储邮件验证码、临时状态、推送缓存等信息,新版可代替R2存储桶)
- 进入顶级页面>存储和数据库>KV>创建实例>命名空间名称:任意填写,示例:
KK123(下面会用到)>创建
②、d1数据库(用于储存邮件日志、用户信息等信息)
- 进入顶级页面>存储和数据库>D1 SQL 数据库>创建数据库>名称:任意填写,示例:
DD456(下面会用到)>创建
③、R2存储桶(用于储存附件,可收发带附件的邮件)
- 进入顶级菜单
- R2对象存储>概述
- 创建存储桶:名称随便填写,示例
RR789 - 位置:自动,或指定最近的管辖地
- 默认存储类:标准>创建
- 进入创建好的
RR789存储桶>设置 - 自定义域>添加>
r2.abced.com>连接域
4、来到worker的cloud-mail项目,绑定数据库
①KV空间绑定>添加绑定>KV命名空间>添加绑定>
- 变量名称:
kv - KV命名空间:
kk123(下拉箭头有你创建的名称)
②D1数据库绑定>添加绑定>D1>添加绑定
- 变量名称:
db - d1数据库:
DD456(下拉箭头有你创建的名称)
③R2存储桶绑定>添加绑定>R2 存储同>添加绑定:
- 变量名称
r2 - R2 存储桶
RR789(下拉箭头有你创建的名称)
📧 二、Cloud Mail项目
- 访问:
https://自定义域名/api/init/变量中的jwt_secret字符。这里示例为https://abced.com/api/init/123456qwerty,页面显示初始化成功。继续访问https://abced.com,出现注册和登录页面。 - 注册admin管理邮箱账号
- 尝试登录观察是否能登录成功
📬 三、CloudFlare设置
进入abced.com下的菜单
- 左侧菜单中选择电子邮件选项
- 开始使用(以前开启过,忽略此步)
- 创建自定义地址不要填写,直接点击跳过入门指南
- 点击“开启电子邮件路由”
- 添加记录并启用
- 路由规则:状态打开、编辑catch-all地址,
发送到worker到cloud-mail(你的项目名称) - 步骤截至到这里,只能收普通邮件不能发邮件
📧 四、Cloud Mail项目
- 测试:接收邮件,如果收不到,请检查以上步骤,或域名设置
- 登录进入
- 设置
- 选择“对象存储”
- 访问域名(铅笔图标)
- 填入
r2.abced.com
📤 五、Resend邮件设置
- resend是为开发者提供的第三方电子邮件收发系统(发邮件必用)
- 访问https://resend.com/
- 注册账号
- 登陆后会转到后台界面,查看左侧菜单:
1、Domains(域名)【地球图标】验证域名:
- 点击”ADD Domains”(添加域名)
- Name(名称)
abced.com - Region(地区)选择离你最近的国家
- 点击”ADD Domains”(添加域)
- 点击”Sign in to Cloudflare”(登录 Cloudflare)
- 点击”授权”
- 等待验证(页面由黄色风格,转变为绿色风格,代表验证成功)
2、API Keys(API密钥)【锁图标】获取密钥:
- 点击”Create API key”(创建API密钥)
- Name(名称):随意填写
- 点击”ADD”(添加)
- 复制创建的密钥
📧 六、Cloud Mail项目
- 邮件设置
- Resend Token,点击”+”
- 将在resend创建的密钥粘贴到这里
- 到这里就可以自由收发邮件了。
🔔 七、Resend邮件设置(配合TG使用非必选)
1、点击”Webhooks”(网络挂钩机制)【上下箭头图标】
此项含义:是一种自动化无需人工干预的信息发送系统,例如:当你收到一封新邮件时,Cloud Mail 可以通过 Webhook 把邮件信息发送到你的 Telegram Bot(电报机器人) 或其他系统,实现自动推送提醒。
2、点击”ADD webhooks”(添加网络钩子)
- Endpoint URL(端点地址) :
- 填写
https://你的项目自定义域/api/webhooks,这里示例为https://abced.com/api/webhooks
3、Select events to listen(选择要侦听的事件),将以下常用项选项打勾:
- email.bounced(邮件退回)✅
- email.complained(邮件被投诉)✅
- email.delivered(邮件已送达)✅
- email.delivery_delayed(邮件延迟送达)✅
🛡️ 八、CloudFlare设置
人机验证(非必选)
这一步是开启人机验证功能,防止你的cloud mail被机器人批量注册,不过新版本的cloud mail中可以把用户注册选项关闭,这样的话不用人机验证功能可以。- 进入顶级菜单
- 点击左侧栏”Turnstile”(旋转闸机),可以理解成一种无验证码的安全验证机制。
- 点击“添加小组件”
- 小组件名称,随意填写
- 点击“添加主机名”
- 找到“从现有主机名中选择”,找到你要添加的域名,这里示例为
abced.com,点击”添加” - 在下面“所选主机名”中勾选刚才添加的
abced.com,点击”添加” - 找到“主机名”勾选你刚才添加的
abced.com,点击“创建”后提示:已成功创建 Turnstile 小组件 - 复制“站点密钥”、“密钥”回到cloud mail的后台
🤖 九、Cloud Mail项目
- 找到“Turnstile人机验证“
- 点击”Site Key“后面的铅笔图标按钮
- 第一行
Site Key(密钥):粘贴CloudFlare的Turnstile密钥 - 第二行
Secret Key(站点密钥):粘贴CloudFlare的Turnstile站点密钥 - 跟CloudFlare的Turnstile显示的顺序相反,不要粘错了,确认后点保存
📱 十、Telegram bot电报机器人(非必选)
获取Token 和 chat_id
- 电报中搜索BotFather
- 找这个:
BotFather+蓝色圈白色对勾+头像是老头,胸前大门敞开,拿着手机 - 点击他进入聊天页面,点击开始
- 点击
/start,弹出来一个机器人帮助手册, - 找到
/newbot点击一下(新建一个你自己的机器人用来接收信息) - 发来消息:Alright, a new bot. How are we going to call it? Please choose a name for your bot.(好吧,一个新的机器人,我们怎么称呼他,请为您的新机器人选择一个名称。)
- 填写一个你喜欢的名字,但是结尾一定要加上
bot或_bot,例如qqqqbot或者qqqq_bot - 发来消息,找到消息中的令牌字串
Use this token to access the HTTP API:
123456789:ABCdefGHIjklMNOpqrSTUvwxYZ**(示例,这个就是API的令牌,点击这串字符可以复制下来)** - 然后访问:
https://api.telegram.org/bot123456789:ABCdefGHIjklMNOpqrSTUvwxYZ/getUpdate获取chat_id(用机器人给你的令牌字串替换示例中黑色字串,然后访问这个网址) - 在网页中找到**
chat_id的字眼,复制他的数字id号码**,(只要)回到cloud mail的后台
📧 十一、Cloud Mail项目
- 找到“邮件推送“,”Telegram 机器人”齿轮图标,选择启用。
- 第一行填入刚才机器人给你的API令牌:
123456789:ABCdefGHIjklMNOpqrSTUvwxYZ - 第二行行填入刚才在网页中找到的**
chat_id的数字id号码** - 第三行填入你的域名
abced.com - 可以实现:在Telegram中让你的机器人“
qqqqbot”提醒你接收邮件。
📧 十二、CloudFlare设置
- 回到Cloudflare,进入
abced.com域名下的页面 - 左侧栏找到”电子邮件“
- 找到“目标地址”
- 添加目标地址>
- 输入你其他的邮箱地址,例如
abcde@gmail.com,状态这里会显示红色的“待验证” - 登录你的
abcde@gmail.com邮箱去接收一封来自CloudFlare的邮件,点击“验证电子邮件地址”,完成后回到目标地址,你添加的目标地址abcde@gmail.com状态变成了绿色的“已验证”
📧 十三、Cloud Mail项目
- 找到“邮件推送“,”第三方邮箱”齿轮图标,选择启用。
- 输入刚才在Cloudflare添加已验证过的目标地址邮箱
abcde@gmail.com - 可以实现转发工人:别人给你admin@**
abced.com**发邮件,在你收到邮件的同时,邮件也会被转发到abcde@gmail.com这个邮箱里一份副本,如果绑定了Telegram 机器人,机器人也会提醒。
实现转发的第二种方法:
- 不设置Cloudflare电子邮件的目标地址和验证,也不设置填写cloud mail的第三方邮箱。
- 在Cloudflare电子邮件的“路由规则”中创建admin@
abced.com>发送电子邮件到>目标abcde@gmail.com - 这种设置方式,别人给你admin@**
abced.com**发邮件,你收不到邮件,只有abcde@gmail.com这个邮箱能收到,Telegram 机器人也不会提醒。
评论
发表评论