跳至主要内容

【Cluoud Mail】免费邮箱系统部署到CloudFlare

一个域名,创建多个不同的邮箱,使用Cloudflare部署,Resend推送邮件,免费搭建属于自己的邮箱服务。以下设置步骤没有提到的不用设置,跟着步骤做就没问题。
使用Cloudflare和Resend免费搭建邮件系统架构图
可以部署到Cloudflare的邮件系统

📌 需准备

🛠️ 一、CloudFlare设置

1、域名托管到CloudFlare平台

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地址,发送到workercloud-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 机器人也不会提醒。

🔗 更多详细内容请查阅官方

评论