Repository navigation
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 升级:
- 拉取最新代码:
git pull origin main - 安装依赖(无新增依赖,可跳过)
- 配置发信(可选但推荐):在
config.yaml的email段下新增send配置,并先在 Resend 验证发件域名:详见 配置发信服务(Resend)。email: send: enabled: true provider: resend apiKey: re_xxxxxxxxxxxx fromDomain: yourdomain.com
- 重启服务:
npm start
数据库会在启动时自动迁移(
emails表新增direction、recipient字段),无需手动操作。
首次全新部署请参考 安装文档。
📚 文档
- 使用说明 —— 新增「角色与权限」「员工使用指南」
- 配置文档 —— 新增发信服务配置、垃圾箱扫描说明
- API 文档 —— 新增
POST /api/emails/send - 安装文档 —— 新增 Resend 配置章节
Full Changelog: v2.0.1...v2.0.2