Stalwart v0.16.26 介绍与选型指南
Stalwart Mail Server 定位、核心特性、架构设计与版本现状解析,对照 docker-mailserver/iRedMail/Mailcow/Maddy 的横向选型对比与分场景推荐(版本信息 2026-10-18 实查)
Stalwart v0.16.26 介绍与选型指南
目标:面向正在为团队或企业选型自建邮件服务器的读者,系统性介绍 Stalwart Mail Server 的定位、核心特性、架构设计与版本现状,并与 docker-mailserver、iRedMail、Mailcow、Maddy 等主流方案做横向对比,帮助读者判断 Stalwart 是否适合你的场景。本文为认知与选型篇,不涉及本地安装步骤;文内版本与活跃度信息均于 2026-10-18 实查官方 GitHub 仓库获得,安装与配置的动手实践请见本专栏后续篇章。
一、Stalwart 是什么
在动手对比之前,先把 Stalwart 的"身份"说清楚:它不是又一个 Postfix 的封装,也不是 Web 面板套壳,而是一个用 Rust 从零编写的全功能邮件服务器。SMTP(收发)、IMAP/POP3(收取)、JMAP(新一代邮件协议)、邮件列表、反垃圾、DKIM 签名验证、Sieve 过滤——这些传统方案里要靠 Postfix + Dovecot + Rspamd + OpenDKIM 多个组件拼起来的能力,在 Stalwart 里是一个二进制文件原生自带的。
| 项目属性 | 信息(2026-10-18 实查 GitHub) |
|---|---|
| 项目名称 | Stalwart Mail Server |
| 开发语言 | Rust(单二进制,无运行时依赖) |
| 开源协议 | AGPL-3.0(企业版另有商业许可) |
| 当前最新稳定版 | v0.16.26(2026-10-11 发布) |
| GitHub Stars | 约 15,100+ |
| 官方仓库 | github.com/stalwartlabs/stalwart |
| 官方网站 | stalw.art |
| 支持平台 | Linux(x86_64 / aarch64)、macOS、Windows、FreeBSD |
Stalwart 的开发非常活跃,从 GitHub Releases 页面能看到 v0.16.x 分支保持着每周量级的迭代节奏,BUG 修复与新特性持续合入。它同时提供开源社区版与付费企业版(企业版增加集群、高可用、商业支持等能力),对中小团队来说社区版的功能已经足够完整。
理解 Stalwart 的关键词是"一体化"和"现代化":
- 一体化:一个进程完成 MTA(邮件传输代理)、MDA(邮件投递代理)、MRA(邮件收取代理)、JMAP 服务器的全部工作,配置、日志、存储统一管理。
- 现代化:原生支持 JMAP RFC 8621 协议(这是 Gmail、Fastmail 在推的新一代邮件同步协议,比 IMAP 更适合 Web/移动端),管理接口也全面走 HTTP API(v0.16 起管理面基于 JMAP 协议),自动化运维友好。
- Rust 内存安全:没有 C/C++ 邮件软件常见的内存类漏洞历史,性能上单机即可支撑数万活跃邮箱。
二、核心特性全景
这一章把 Stalwart 的能力拆成五块展开,方便你对照自身需求判断功能覆盖度。
2.1 邮件协议支持
Stalwart 在协议层的覆盖是"全家桶"式的,下面是主要协议及其监听端口的对应关系(默认监听器,部署时可增删改):
| 协议 | 端口 | 用途 | 说明 |
|---|---|---|---|
| SMTP | 25 | 服务器间邮件交换 | 支持 STARTTLS,含完整反滥用策略 |
| SMTPS | 465 | 隐式 TLS 提交 | 客户端认证发送 |
| Submission(STARTTLS) | 587 | 明文端口提交 | 需 STARTTLS 后认证(默认策略) |
| IMAP | 143 / 993 | 邮件收取 | 993 为隐式 TLS |
| POP3 | 995 | 邮件收取(简单场景) | 隐式 TLS |
| ManageSieve | 4190 | 过滤规则管理 | 客户端远程管理 Sieve 脚本 |
| HTTP | 443 / 8080 | Web 管理、JMAP、Webmail 资源 | 443 自动 TLS |
几点值得展开说明:
- JMAP 原生支持:Stalwart 是 JMAP 邮件规范(RFC 8620/8621)的完整实现,Web 端、移动端可以直接走 JMAP 同步,不必再架一层 IMAP 代理或桥接组件。实测其 JMAP 会话端点
/jmap/session与 API 端点/jmap对 Basic 认证即开即用,Email/query、Email/get 等方法支持标准的反引引用(#ids结果引用)链式调用。 - Sieve 过滤脚本:符合 RFC 5228 的 Sieve 支持,用户可按规则自动归类、转发、 vacation 自动回复;管理员也可下全局脚本。
- 邮件列表:内置轻量邮件列表能力,可建列表地址、管理订阅者,不必再引入 Mailman 这类独立组件。
2.2 安全能力
邮件服务器的安全面很广,Stalwart 把最关键的几块都做进了核心:
- DKIM 签名与验证:内置 DKIM 实现,初始化向导会自动为默认域名生成 Ed25519 + RSA 双密钥对(实测 v0.16.26 自动生成两条 DkimSignature 记录,出站邮件同时带两条签名),无需安装 OpenDKIM。
- SPF / DMARC / DKIM 三件套校验:入站邮件自动完成三重身份校验并把结论写进 Authentication-Results 头。
- 内置垃圾邮件过滤:自带基于启发式规则、DNSBL(实时黑名单)、灰名单、速率限制的过滤栈;也支持外挂 Rspamd 获得更强的贝叶斯/模糊识别能力。
- 病毒扫描集成:可对接 ClamAV 或其他 ICAP 防病毒服务对附件做查杀。
- TLS 全覆盖:所有明文端口默认强制 STARTTLS 升级,支持 ACME(Let's Encrypt/ZeroSSL)自动签发与续期证书,也支持导入 PEM。
- 认证体系:账号密码、TOTP 双因素、App 密码、OAuth 2.0 / OpenID Connect(可作为 IdP 的客户端),SMTP/IMAP/JMAP 统一走一套凭据。
2.3 存储与扩展
存储层是 Stalwart 架构里最灵活的部分,也是它与传统方案差异最大的地方:
- 多种后端:RocksDB(内嵌,零依赖,默认)、FoundationDB、PostgreSQL、MySQL、SQLite、S3/MinIO 兼容对象存储,可作为主存储或 Blob 存储(大附件)组合使用。
- 全量数据统一:账号目录(用户/组/域名/配置)、邮件数据、日志遥测都存在同一个存储后端里,备份恢复模型简单。
- 目录集成:可对接 LDAP、SQL 数据库做外部认证与账号映射,也支持嵌套子地址、catch-all 别名等企业常用特性。
2.4 管理与自动化
- Web 管理界面(WebAdmin):账号、域名、队列、日志、DKIM、TLS 证书、垃圾过滤规则全部可视化操作。
- API 驱动:v0.16 起管理面对象模型统一到 JMAP(账号、监听器、DKIM 签名、系统设置等都是可
query/get/set的对象),配合官方stalwart-cli或任意 HTTP 客户端即可完成全部自动化。 - CLI 工具:
stalwart-cli支持账号/域名/队列/任务的查询与变更;stalwart主程序自带--export/--import数据导出导入,用于备份与迁移。
2.5 资源占用与性能
Rust 带来的直接红利是资源占用低:静态编译的单个二进制,空载 RSS 在几十 MB 量级(实测 v0.16.26 在 1 核 2G 的测试环境常驻约 90MB),没有 JVM/Node 之类的运行时开销。官方基准显示其 JMAP/IMAP 吞吐在同类中处于第一梯队,单机支撑中小组织(数千邮箱)没有压力。对资源有限的 VPS 用户来说,这是相对 Mailcow(多进程组合发行,常驻 2GB+ 内存起步)非常实际的优点。
三、架构设计解析
在看安装与配置之前,花两分钟理解 Stalwart 的架构分层,后面排查问题时会顺畅很多。
┌──────────────────────────────────────────────┐
客户端/对端 │ Stalwart Server(单进程) │
────────────► │ ┌─────────┐ ┌─────────┐ ┌────────────────┐ │
SMTP 25/465/587│ │ Session │ │ Spam │ │ Sieve 脚本 │ │
IMAP 143/993 │ │ Runner │ │ Filter │ │ 引擎 │ │
POP3 995 │ └────┬────┘ └────┬────┘ └───────┬────────┘ │
ManageSieve 4190│ │ │ │ │
HTTP 443/8080 │ ┌────▼───────────▼──────────────▼────────┐ │
JMAP │ │ Mail 处理核心(Rust) │ │
│ └────┬──────────────────────────┬────────┘ │
│ │ │ │
│ ┌────▼─────┐ ┌───────▼────────┐ │
│ │ Queue 队列│ │ Store 抽象层 │ │
│ └──────────┘ └───────┬────────┘ │
└──────────────────────────────────┼───────────┘
RocksDB / PostgreSQL / MySQL /
SQLite / S3 / FoundationDB
分层解读:
- 会话层(Session Runner):每种协议一个 runner,负责协议编解码、认证、速率限制,会话与核心解耦。
- 处理核心:邮件入站/出站的路由、别名展开、DKIM 签验、Sieve 执行都在这一层完成。
- 队列:外发邮件先进持久化队列再异步投递,失败自动按退避策略重试(队列管理的实操见 《Stalwart 日常运维手册》)。
- 存储抽象层:所有数据(含账号目录、配置、邮件、日志)统一落到 Store 后端,更换后端不动上层逻辑。
一个对运维很关键的架构事实:v0.16 起 Stalwart 不再使用传统的 TOML 主配置文件。config.json(或同等数据存储)只保存极少量"引导信息"(数据后端怎么连),账号、域名、监听器、DKIM、密码策略等全部配置都存在数据存储内、通过 JMAP 管理 API 读写。这是与 v0.13 及更早版本使用体验的最大差异,老版本的 TOML 配置教程对 v0.16 基本不再适用——选型与学习时务必认准版本。
四、安装与部署形态概览
Stalwart 官方提供三条主要部署路径,各有适用场景(《Ubuntu 22.04 安装 Stalwart v0.16.26 指南》对前两条做了全流程实测):
- 官方安装脚本(推荐新手):
curl https://get.stalw.art/install.sh | sh一条命令完成下载、目录布局(配置/etc/stalwart、数据/var/lib/stalwart、日志/var/log/stalwart)与 systemd 服务注册,适合标准 Ubuntu/Debian/CentOS 服务器。 - GitHub 二进制手动安装:从 Releases 下载对应平台压缩包(提供 sha256 与 sigstore 签名文件可校验),手工落位
/usr/local/bin、编写 systemd unit。适合需要精确控制目录/权限、或目标环境不便跑脚本的情况。 - 平台化部署:官方提供面向标准化平台的发行形态,本文不展开;需要同类打包思路时可参考站内 docker-mailserver 专栏。
无论哪条路径,首次启动后都有一个"初始化向导"环节:v0.16 的向导通过管理 API 完成服务器主机名、默认域名与管理员账号的设定(默认域名生成后还会自动创建 DKIM 密钥)。向导完成前服务处于受限的引导模式,完成后即进入正常服务状态。这个流程的实操细节见《Ubuntu 22.04 安装 Stalwart v0.16.26 指南》,这里只需建立预期:部署 Stalwart 的总工作量主要在 DNS 与客户端对接,程序本身的安装初始化非常轻。
五、横向选型对比
选型不能只看功能清单,这一章把 Stalwart 放到四个常见参照系里做对比。对照对象为 docker-mailserver、iRedMail、Mailcow 与 Maddy(其中 docker-mailserver 与 iRedMail 在本站有独立专栏,可分别参阅 《docker-mailserver 16.0.1 介绍与选型指南》 与 《iRedMail 1.7.4 Ubuntu 22.04 安装指南》)。
5.1 方案画像
| 方案 | 形态 | 核心组件 | 一句话画像 |
|---|---|---|---|
| Stalwart | 单二进制(Rust) | 自研全家桶 + 可插拔存储 | 一体化新锐,JMAP 原生,运维面最小 |
| docker-mailserver | 多进程组合打包 | Postfix + Dovecot + Rspamd 等 | "打包即用的经典栈",配置即文件,不提供 Web 管理 |
| iRedMail | 系统软件包安装器 | Postfix + Dovecot + SOGo + iRedAPD | 传统发行版式部署,带 iRedAdmin 管理面板(部分功能收费) |
| Mailcow | 多服务编排发行 | Postfix + Dovecot + SOGo + ACME 辅助进程 | 功能最全的开箱面板,重量级,资源占用高 |
| Maddy | 单二进制(Go) | 自研轻量栈 | 极简单机小栈,功能精简,适合个人/小流量 |
5.2 关键维度对比
| 维度 | Stalwart | docker-mailserver | iRedMail | Mailcow | Maddy |
|---|---|---|---|---|---|
| 安装复杂度 | 低(脚本一键) | 中(需懂打包栈) | 中(交互式安装器) | 中(编排文件) | 极低 |
| Web 管理界面 | 有(内置) | 无 | 有(部分付费) | 有(完整) | 无 |
| JMAP 协议 | 原生支持 | 无 | 无(SOGo 提供) | 无(SOGo 提供) | 无 |
| 内存占用 | 很低(约百 MB 级) | 中 | 中高 | 高(2GB+ 起步) | 极低 |
| 反垃圾能力 | 内置 + 可外挂 Rspamd | Rspamd(强) | Rspamd/SpamAssassin | Rspamd(强) | 基础 |
| 存储后端选择 | 多种可插拔 | 本地卷 | 本地(SQL+Maildir) | 本地卷 | 本地 |
| 集群/多节点 | 企业版支持 | 无 | 付费版 | 无 | 无 |
| 社区成熟度 | 快速上升期(15k+ 星) | 很成熟 | 成熟 | 成熟 | 一般 |
| 版本演进风格 | 自主研发,迭代快 | 跟随上游组件 | 跟随上游组件 | 跟随上游组件 | 稳健 |
5.3 分场景推荐
结合上面的对比,给出几条明确的选型结论:
- 追求现代协议、看重轻量与自动化(API/CLI 管理):Stalwart 是当前开源阵营里几乎唯一的一体化答案,JMAP 原生支持让它特别适合自建 Webmail/移动端同步场景,也适合把邮件服务纳入自动化运维体系的团队。
- 已有打包栈运维习惯、依赖成熟生态与大量社区文档:docker-mailserver 仍是最稳的选择,其"一切皆配置文件"的哲学和海量教程是生产力。
- 需要完整可视化面板、有充足服务器资源:Mailcow 的开箱体验最好,代价是资源占用与多服务栈复杂度。
- 传统企业环境、需要与 SOGo 群件(日历/联系人)深度整合:iRedMail 的打包方案更对口。
- 个人域名邮箱、1 核 1G 小鸡:Maddy 或 Stalwart 二选一;若未来有扩展预期(JMAP、反垃圾深化),直接 Stalwart 少走回头路。
5.4 Stalwart 的短板与风险
客观起见,也要列出选择 Stalwart 需要接受的现实:
- 版本迭代快,大版本间配置模型有断裂(如 v0.16 弃用 TOML 主配置),网上旧教程失效率高,学习时必须以官方当前版本文档为准。
- 生态时间还短:遇到疑难杂症时,可检索的社区积累不如 Postfix/Dovecot 体系雄厚。
- AGPL-3.0 协议:对二次分发的合规要求比 MIT/Apache 严格,企业法务需要过目。
- 部分企业能力(集群、HA)仅企业版提供,纯开源版是单机形态,需要自行用存储后端与备份弥补可用性。
六、版本选择建议与总结
版本策略上给出明确建议:生产环境使用 v0.16.x 最新补丁版(本文撰写时为 v0.16.26)。v0.16.x 是当前稳定分支,补丁版本持续修复问题;跨大版本升级(v0.13 → v0.16)涉及配置模型迁移,官方有专门的升级指南,操作前务必做数据备份(备份实操见 《Stalwart 日常运维手册》)。
总结成一句话:Stalwart 是近年在"一体化自建邮件服务器"这个赛道上完成度最高的新方案——如果你愿意接受它较新的生态与较快的演进节奏,它能用最小的运维面给你一套协议齐全、安全内建、资源友好的邮件基础设施。建议按本专栏顺序阅读:《Ubuntu 22.04 安装 Stalwart v0.16.26 指南》完成部署,《Stalwart v0.16.26 配置参数详解》掌握配置对象模型,《Stalwart 日常运维手册》建立长期运营能力。
七、参考链接
- Stalwart 官方网站:https://stalw.art
- GitHub 仓库(Releases 页含各版本下载与变更日志):https://github.com/stalwartlabs/stalwart
- 官方文档站(安装/配置/管理):https://docs.stalw.art
- v0.16 升级说明(TOML → config.json 变更背景):https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_16.md
- JMAP 协议规范 RFC 8621:https://datatracker.ietf.org/doc/html/rfc8621
- docker-mailserver 项目(对照方案):https://github.com/docker-mailserver/docker-mailserver
- iRedMail 项目(对照方案):https://github.com/iredmail/iRedMail
- Mailcow 项目(对照方案):https://github.com/mailcow/mailcow-dockerized
- Maddy 项目(对照方案):https://github.com/foxcpp/maddy
- 版本与活跃度数据查询日期:2026-10-18(来源 GitHub Releases / 仓库主页)