CloudMail 自托管邮箱服务

2026-06-01 · 3 分钟阅读时长
projects

弃用传统邮箱平台,用自己域名收发邮件的自托管方案:前端 Vue3 SPA、后端 Hono Worker,数据落在 D1/KV/R2,服务器成本为零。

概述

个人域名邮箱的需求很朴素:用自己的域名收发邮件、注册各类服务、随用随建隔离别名。商业邮箱平台按席位收费且数据在他方,传统自建(Postfix + VPS)又运维繁琐、IP 信誉难维护。CloudMail 把整套邮件服务搬进 Cloudflare 无服务器生态——一个域名、一个 Worker,就能拥有多邮箱、附件收发、管理后台的完整邮件服务。

核心功能

收件

  • 多邮箱管理:一个域名创建多个邮箱,类似主流邮箱平台的多账户体验
  • 附件接收:入站邮件附件自动转存 R2 对象存储,支持在线预览与下载
  • 实时推送:新邮件可转发至 Telegram 机器人或其他邮箱,不错过任何验证码
  • 验证码识别:Workers AI 自动从邮件中提取验证码,免复制粘贴

发信

  • Resend 集成:稳定送达率,支持群发、内嵌图片与附件
  • 发送状态:每封信的投递状态可查,失败可追溯

管理与安全

  • RBAC 权限:按角色控制功能与资源配额,用户/邮件后台管理
  • 人机验证:Turnstile 集成,防止批量注册
  • 开放 API:批量生成用户、多条件查询邮件,便于自动化接入
  • 数据可视化:ECharts 展示系统数据与用户邮件增长趋势

架构

┌─────────────┐     ┌──────────────────────┐
│ Email Routing│────▶│  Mail Worker (Hono)  │
│ (CF 收件路由) │     │  API + 邮件处理       │
└─────────────┘     └──────┬───────────────┘
              ┌────────────┼────────────┐
        ┌─────▼─────┐ ┌────▼────┐ ┌────▼────┐
        │ D1 (数据)  │ │ KV(缓存) │ │ R2(附件) │
        └───────────┘ └─────────┘ └─────────┘
                   ┌───────┴────────┐
                   │ Vue3 + Element │
                   │ Plus 管理前端   │
                   └────────────────┘
  • 收件链路:Cloudflare Email Routing 接收入站邮件 → 投递至 Worker email 事件 → 解析 MIME、附件落 R2、正文落 D1 → 触发推送
  • 分层后端api/ 接口层、service/ 业务层、dao/ 数据访问层、security/ 认证鉴权,职责清晰
  • 前端:Vue3 + Element Plus 响应式布局,PC 与移动端自适应

挑战与解决

邮件接收链路

问题:无服务器环境没有常驻 SMTP 服务,如何收邮件?

解决:利用 Cloudflare Email Routing 将域名 MX 收到的邮件直接投递给 Worker 的 email 事件,配合 MIME 解析库在边缘完成正文与附件分离,全程无需一台服务器。

附件存储与流量成本

问题:附件体积大,塞进数据库既撑爆 D1 又拖慢查询。

解决:附件与元数据分离——D1 只存索引,二进制内容进 R2,下载走预签名直链,边缘缓存降低回源。

验证码提取

问题:验证码邮件模板千差万别,正则规则维护不过来。

解决:接入 Workers AI 对邮件正文做智能提取,规则兜底为辅,验证码一键复制。

技术栈细节

后端

  • Cloudflare Workers + Hono:路由、拦截器、全局异常、i18n
  • Drizzle ORM 操作 D1(SQLite),KV 做缓存加速
  • Resend 发信,Email Routing 收信

前端

  • Vue3 + Element Plus 组件库
  • ECharts 数据可视化
  • Axios 统一请求层,Pinia 全局状态

安全

  • JWT 身份认证 + RBAC 鉴权
  • Turnstile 人机验证
  • 自定义异常体系与错误码

成果

  • 成本:Workers + D1 + KV + R2 免费额度内运行,零固定支出
  • 隐私:邮件数据完全自持,不经过第三方邮箱平台
  • 灵活:别名随用随建,注册服务时一键生成隔离邮箱
  • 体验:验证码自动识别 + TG 实时推送,收验证码快过手机短信

后续计划

  • 邮件搜索全文索引
  • 日程/订阅邮件智能归档
  • 自定义域名多域支持
  • 移动端 PWA

项目状态:✅ 生产运行中
GitHub查看源码
DemoTry it Live

Mizar Zenith
Record and Developer
你好,我是 Mizar Zenith。在这里分享我的项目、代码与日常思考。愿每一次创作都有回响。