Skip to content

v2.0.2

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Aug 06:04
· 1 commit to main since this release

CloudflareMailServer v2.0.2 — 完备的多用户企业邮箱

🎉 本版本起,CloudflareMailServer 已成为一套收发一体、支持多用户的自托管企业邮箱方案。借助 Cloudflare 收信 + Resend 发信,无需维护任何邮件服务器,即可为团队提供 name@yourdomain.com 的企业邮箱。


✨ 本期亮点

👥 多用户企业邮箱

每个企业邮箱账号都是独立登录身份。员工用自己的邮箱地址(如 alice@yourdomain.com)+ 密码登录,只能看到和操作自己的邮件;管理员拥有全局视图与账号管理能力。权限天然隔离,开箱即用。

📨 收发一体(新增发信能力)

  • 收信:经 Cloudflare Email Routing 转发到统一收件箱,系统通过 IMAP 拉取,按收件人地址自动分发到对应账号。
  • 发信(新):员工在 Web 界面「写邮件」,经 Resend 以企业域名后缀(@yourdomain.com)发出 —— From 地址干净、SPF/DKIM 通过、不进垃圾箱、无「代表 xxx 发送」字样。

🛡️ 垃圾箱兜底扫描

转发邮件常被统一收件邮箱(如 Gmail)误判为垃圾邮件。本版本起,IMAP 拉取会自动扫描垃圾邮件 / 已删除文件夹(通过 IMAP special-use 标志动态识别,兼容 Gmail 中文命名如 [Gmail]/垃圾邮件),误判的邮件也能被正确拉回,不再丢失。


🐛 重要修复

本次还修复了账号管理 REST API(/api/accounts)的一批运行时 Bug,这些 Bug 此前会让「创建 / 编辑 / 同步 / 删除账号」等接口直接失败:

  • createAccount 调用签名与实现不匹配(之前传对象导致插入失败)
  • 代码使用 is_active 字段,但表结构只有 status,激活/停用、状态过滤全部失效 —— 已统一为 status('active'/'inactive')
  • 调用了 Cloudflare 模块中不存在的方法(enableEmailAccount / disableEmailAccount / updateEmailAccountPassword),导致编辑状态、重置密码报错 —— 已改用真实存在的 updateEmailRouteStatus
  • generateAccount(domain) 的 domain 参数被忽略
  • 分页参数缺边界校验 —— 现已夹取 page >= 1、pageSize <= 100

📦 升级说明

从 v2.0.1 升级:

  1. 拉取最新代码:git pull origin main
  2. 安装依赖(无新增依赖,可跳过)
  3. 配置发信(可选但推荐):在 config.yaml 的 email 段下新增 send 配置,并先在 Resend 验证发件域名:
    email:
      send:
        enabled: true
        provider: resend
        apiKey: re_xxxxxxxxxxxx
        fromDomain: yourdomain.com
    详见 配置发信服务(Resend)。
  4. 重启服务:npm start

数据库会在启动时自动迁移(emails 表新增 direction、recipient 字段),无需手动操作。

首次全新部署请参考 安装文档。


📚 文档

  • 使用说明 —— 新增「角色与权限」「员工使用指南」
  • 配置文档 —— 新增发信服务配置、垃圾箱扫描说明
  • API 文档 —— 新增 POST /api/emails/send
  • 安装文档 —— 新增 Resend 配置章节

Full Changelog: v2.0.1...v2.0.2