Brave
@47c132035ed7a1105a867946b99d67af 开源软件研究 公开
讨论 Stalwart:现代化的全栈邮件与协作服务器

Stalwart:现代化的全栈邮件与协作服务器

Stalwart 是一款专为现代互联网需求设计的开源邮件与协作服务器,采用 Rust 语言编写,以其极致的高性能、安全性和"全栈一体化"架构在 2026 年的自托管社区中占据领先地位。该项目由 Stalwart Labs 维护,经过四年的持续开发,现已宣布功能完备(feature complete),正在为里程碑式的 1.0 版本发布做最后准备。

Stalwart 的设计理念体现在一句非官方座右铭中:"Aut Rust aut nihil"(要么 Rust,要么什么都没有)。这种对技术纯粹性的坚持,使其成为替代传统 Postfix/Dovecot 复杂组合的首选方案。


🔧 核心特性详解

📨 1. 全协议支持与 JMAP 领先

除了传统的 IMAP、SMTP 和 POP3,Stalwart 完整支持 JMAP 协议。JMAP 相比传统协议同步更快、能耗更低,是现代移动端和 Web 邮件应用的理想选择。

🔍 深入理解 JMAP 协议优势:

JMAP(JSON Meta Application Protocol)是由 Fastmail 开发、于 2019 年被 IETF 标准化(RFC 8620 & RFC 8621)的现代邮件协议。相比 IMAP,JMAP 在以下方面具有显著优势:

特性对比IMAPJMAP
数据格式自定义文本协议JSON over HTTP
连接模式需要持久化 TCP 连接无状态 HTTP 请求
批量操作每个操作需单独请求单次请求可包含多个操作
实时推送需要 IDLE 扩展轮询原生 Push 通知支持
移动端优化资源消耗大、耗电低功耗、适合间歇连接
开发友好度需要自定义解析器标准 JSON,全语言支持
安全机制多种历史扩展HTTPS/WSS + OAuth 2.0/OIDC

📱 为什么 JMAP 对移动设备至关重要?

传统 IMAP 协议设计于互联网早期,假设用户拥有稳定的持续连接。然而,现代移动设备面临的是间歇性网络环境——WiFi 切换、蜂窝网络波动等。IMAP 的 IDLE 扩展需要维持持续的 TCP 连接来接收新邮件通知,这在移动端会导致:

  • 电池快速消耗
  • 网络切换时的同步中断
  • 需要频繁重建连接状态

JMAP 的无状态设计完美契合现代推送通知架构,客户端可以:

  • 在收到推送后按需发起请求
  • 单次请求完成多项操作(如标记已读、归档、删除)
  • 无需维护持久连接,大幅降低能耗

📊 2025 年 JMAP 生态现状:

目前支持 JMAP 的主要服务和客户端包括:

  • Fastmail(JMAP 协议的发明者,生产环境运行)
  • Cyrus IMAP(JMAP 支持)
  • Apache James(支持 JMAP 邮件和提交)
  • Stalwart Mail Server(以 JMAP 为核心构建)
  • Thunderbird(iOS 版已支持,桌面版正在推进)

🗓️ 2. 不仅是邮件,更是协作中心

到 2026 年,Stalwart 已不再仅仅是一个邮件服务器。它原生集成了 CalDAV(日历)、CardDAV(联系人)和 WebDAV(文件存储)支持,提供了一套完整的开源协作解决方案。

🏆 JMAP 协作协议全球首发:

经过四年开发,Stalwart 成为全球首个完整支持整个 JMAP 协作协议家族的服务器,包括:

协议传统方案JMAP 替代方案Stalwart 支持状态
日历同步CalDAVJMAP for Calendars✅ 完整支持
联系人同步CardDAVJMAP for Contacts✅ 完整支持
文件存储WebDAVJMAP for File Storage✅ 完整支持
权限共享WebDAV ACLJMAP Sharing✅ 完整支持

💡 协作功能亮点:

  • 📅 组日历与共享日历:支持多用户协作管理日程,适合团队和家庭使用
  • 📒 共享通讯录:团队成员可共享联系人信息
  • 📁 共享文件夹:支持用户、群组和共享文件空间,具备细粒度权限控制
  • 🔐 灵活的权限管理:同时支持 JMAP Sharing 扩展和 WebDAV ACL,兼容各类 CalDAV/CardDAV 客户端
  • 🌍 CalDAV 调度支持:v0.13.x 版本新增了加泰罗尼亚语等多语言支持

🤖 3. AI 驱动的安全防御

Stalwart Enterprise 版本引入了 AI 垃圾邮件分类和高级钓鱼检测功能,支持集成 OpenAI 或 Anthropic 等大模型,为企业通讯提供智能防护。

🔬 LLM 分类器技术细节:

Stalwart v0.10.3 起引入的 AI 模型支持是企业版的核心功能之一(同时对 GitHub 和 OpenCollective 赞助者开放)。该功能具有以下特点:

🔗 支持的 AI 提供商:

  • OpenAI(GPT 系列模型)
  • Anthropic(Claude 系列模型)
  • 任何提供 OpenAI 兼容 API 的服务
  • 自托管大模型(如 Llama、Mistral 等)

📋 邮件分类工作流程:

LLM 分类器通过向 AI 模型发送可自定义的提示词(Prompt)以及邮件的主题和正文来工作。默认提示词会指导 AI 将邮件分为四类:

  1. 🚫 Unsolicited(未经请求的垃圾邮件)
  2. 📢 Commercial(商业推广邮件)
  3. ⚠️ Harmful(有害/钓鱼邮件)
  4. ✅ Legitimate(正常邮件)

⚙️ Sieve 脚本集成:

Stalwart 扩展了 Sieve 脚本语言,引入了 llm_prompt 函数,允许管理员和用户直接在邮件处理规则中调用 AI 模型进行分析。这为实现复杂的智能邮件处理流程提供了极大的灵活性。

💰 成本考量:

对于使用 OpenAI 或 Anthropic 云服务的用户,主要考量从性能转向了成本——这些提供商通常按处理的 Token 数量收费。由于每封邮件都需要传递给 AI 模型进行分析,邮件长度直接影响每次请求的 Token 消耗。建议企业根据邮件流量合理规划预算,或考虑部署自托管模型以降低长期成本。


🛡️ 4. 极致安全性与 Rust 驱动

利用 Rust 的内存安全特性,Stalwart 彻底告别了 C 语言时代常见的缓冲区溢出漏洞。它内置了 DMARC、DKIM、SPF 和 ARC 验证,并支持自动配置安全默认值。

📜 安全审计历史与透明度:

Stalwart 已通过两次独立安全审计,展现了其对安全性的严肃承诺:

🔍 第一次审计(2023 年 10 月):

  • 审计结果:未发现任何漏洞或不安全代码
  • 审计结论确认了 Stalwart 作为安全可靠的开源邮件服务器的地位

🔍 第二次审计(2025 年 9 月 9 日至 25 日):

  • 审计版本:v0.13.2
  • 审计机构:Radically Open Security(专业开源安全审计机构)
  • 资金来源:NLNet 基金会资助

⚠️ 发现的漏洞及响应:

CVE 编号严重程度描述修复时间
CVE-2025-59045高危CalDAV REPORT 请求导致的内存耗尽 DoS4 小时内
CVE-2025-61600高危相关 DoS 漏洞4 小时内

✅ 两个高危漏洞均在披露后 4 小时内修复,补丁随 v0.13.3 和 v0.13.4 版本发布。这种快速响应能力体现了 Stalwart 团队对安全问题的高度重视。

📝 审计总结:

最终报告赞扬 Stalwart 的代码库"健壮、架构良好、模块清晰划分",Rust 语言确保了内存安全,整体设计体现了"攻击者意识"的安全原则。

🔐 内置安全机制一览:

安全机制用途说明
DMARC基于域名的邮件认证、报告和一致性
DKIM域名密钥识别邮件签名
SPF发件人策略框架验证
ARC认证接收链(支持邮件转发场景)
DANE基于 DNS 的命名实体认证
MTA-STSMTA 严格传输安全
SMTP TLS 报告TLS 连接状态报告机制

☁️ 5. 云原生与无缝扩展

Stalwart 支持从单机 SQLite 部署无缝扩展至支持数百万用户的分布式集群,后端可对接 PostgreSQL、FoundationDB 或 S3 兼容的对象存储。

🏗️ 模块化存储架构详解:

Stalwart 采用模块化存储架构,将不同类型的数据分离到四个独立的存储层,每个组件可根据规模和需求独立优化:

存储层用途推荐后端
Data Store用户设置、文件夹层级、邮件元数据、标记、访问控制FoundationDB / PostgreSQL
Blob Store邮件正文、附件、日历数据等大对象S3 兼容存储
In-Memory Store速率限制、会话跟踪、投递状态、节点协调Redis
Full-text Search邮件内容索引和关键词搜索Elasticsearch / Meilisearch

📊 按规模选择后端策略:

🏠 小型部署(个人/家庭/小团队):

  • 数据库:SQLite(零配置,开箱即用)
  • 存储:本地文件系统
  • 特点:单一二进制文件,极简部署

🏢 中型部署(中小企业):

  • 数据库:PostgreSQL 或 MySQL
  • 存储:本地或 S3 兼容存储
  • 全文搜索:数据库内置功能(v0.12+ 改进)
  • 特点:利用 PostgreSQL/MySQL 的内置全文搜索,降低架构复杂度

🏭 大型分布式部署(企业级):

  • 数据库:FoundationDB(推荐)
  • 对象存储:S3 兼容服务
  • 缓存层:Redis
  • 全文搜索:Elasticsearch 或 Meilisearch
  • 特点:支持多节点集群、自动分片、多区域部署、数千节点水平扩展

🔄 集群协调机制(v0.12 新增):

Stalwart v0.12 引入了可适配的集群行为:

  • 小型部署:使用 Eclipse Zenoh(轻量级点对点 pub/sub 协议)
  • 大型基础设施:可选择 Apache Kafka、Redpanda、NATS 或 Redis 进行节点间协调、状态同步和负载分发

🐳 容器编排支持:

  • Kubernetes
  • Apache Mesos
  • Docker Swarm

🚀 为什么Stalwart值得关注

随着用户对隐私和主权的重视,Stalwart 凭借其单一二进制文件的极简部署方式和对现代标准(如 2026 年正在开发的 Rust + Dioxus 架构 Webmail)的追求,成为了替代传统 Postfix/Dovecot 复杂组合的最佳方案。

📋 详细对比:Stalwart vs 传统方案

对比维度传统方案 (Postfix + Dovecot)Stalwart
组件数量多个独立组件(Postfix、Dovecot、OpenDKIM、RSpam、数据库等)单一二进制文件
配置复杂度各组件独立配置,需要"粘合"集成统一配置,提供 Web 管理界面
协议支持SMTP + IMAP/POP3(需额外组件)JMAP + IMAP + SMTP + POP3 + CalDAV + CardDAV + WebDAV
语言C/C++(Postfix/Dovecot)Rust(内存安全)
日历/联系人需额外部署(如 Radicale)原生集成
学习曲线陡峭,多年经验积累相对平缓,文档完善
现代协议JMAP 需额外方案JMAP 为核心设计

👥 社区反馈摘要:

  • "Stalwart 非常简单,完胜 Dovecot 和 Postfix 的部署体验"
  • "如果你有邮件服务器和 Linux 经验,Stalwart 是最佳选择,没有其他方案能提供如此细粒度的控制和丰富的功能"
  • "Stalwart Mail 给我带来的麻烦比其他邮件解决方案都少"
  • Privacy Guides 官方使用 Stalwart 作为其内部邮件系统

⚠️ 需要考虑的因素:

  • Stalwart 目前由单一维护者开发(Mauro De Gennaro),部分用户对此表示担忧
  • 作为较新的项目,生产环境验证时间相对较短
  • 某些用户报告了与 RocksDB 相关的数据库损坏问题(建议使用 FoundationDB 或 PostgreSQL)
  • 功能丰富意味着需要理解更多现代概念

🔮 2026 年路线图与未来展望

📅 版本 1.0 里程碑:

Stalwart 已宣布功能完备(feature complete),所有计划支持的核心功能和开放标准协议均已就位。下一个重大里程碑是:

  1. 最终确定数据库 Schema
  2. 性能优化
  3. 发布 1.0 正式版

🌐 Webmail 开发计划:

1.0 版本发布后(预计 2026 年),团队将启动 Webmail 开发:

  • 技术栈:Rust + Dioxus 框架
  • 架构:单页应用(SPA)
  • 团队计划直接为 Dioxus 生态贡献代码,扩展可用组件

🎤 FOSDEM 2026 重磅演讲:

Stalwart 将出席 2026 年 1 月 31 日至 2 月 1 日在比利时布鲁塞尔举行的 FOSDEM 2026,发表题为《Stalwart:开源能做到 Gmail 级别的邮件吗?》的演讲。演讲将涵盖:

  • 📊 以 1,024 节点集群为实例的架构设计
  • 💾 跨集群存储和索引 PB 级邮件的策略
  • 🛡️ 大规模垃圾邮件和钓鱼过滤
  • 📮 分布式 MTA 队列管理
  • ⚖️ IMAP、JMAP 和 SMTP 流量的负载均衡
  • 🔄 集群协调、编排和自动扩缩容
  • 🏭 Apple iCloud 等厂商使用的类似架构模式

📧 临时 Webmail 解决方案:

在官方 Webmail 开发完成前,推荐使用以下兼容方案:

  • Roundcube(经典选择)
  • SnappyMail(轻量快速)
  • SoGo(功能丰富)
  • TMail Web(支持 JMAP 协议)

🛠️ 快速开始

📚 官方资源

资源类型链接
官方文档Stalwart Documentation
GitHub 仓库stalwartlabs/stalwart
官方博客Stalwart Labs Blog
发布日志Releases
FOSDEM 演讲Gmail-scale Email Talk

📋 版本选择指南

版本适用场景授权协议
Community Edition个人、开源项目、小型团队AGPL-3.0
Enterprise Edition企业生产环境、需要 AI 功能商业授权
Sponsor BenefitsGitHub/OpenCollective 赞助者开放企业功能

⚡ 最小化部署示例

单机部署(SQLite 后端)

bash
# 下载最新版本 curl -LO https://github.com/stalwartlabs/stalwart/releases/latest/download/stalwart-linux-x86_64.tar.gz

# 解压并运行 tar -xzf stalwart-linux-x86_64.tar.gz
./stalwart --init

📌 建议:生产环境请使用 v0.13.4 或更高版本,以确保包含最新的安全修复。


📖 课程总结

Stalwart 代表了邮件服务器领域的范式转变:从传统的多组件拼接架构,到现代的全栈一体化解决方案。 它的核心价值主张包括:

  1. 🔒 安全优先:Rust 语言 + 双次安全审计 + 4 小时漏洞响应
  2. 📱 现代协议:JMAP 为核心,完美适配移动互联网时代
  3. 🗓️ 完整协作:邮件 + 日历 + 联系人 + 文件,一个服务器搞定
  4. 🤖 AI 增强:企业版集成主流 LLM 提供商
  5. ☁️ 弹性架构:从 SQLite 单机到 1,024 节点集群的无缝扩展
  6. 🧩 极简运维:单一二进制 + Web 管理界面

对于 2026 年希望掌控自己数据主权的个人和组织而言,Stalwart 提供了一条清晰的自托管路径——不再需要在功能、安全性和易用性之间做出妥协。


📚 参考资料与进一步阅读: