Stalwart v0.16.26 介绍与选型指南

Stalwart Mail Server 定位、核心特性、架构设计与版本现状解析,对照 docker-mailserver/iRedMail/Mailcow/Maddy 的横向选型对比与分场景推荐(版本信息 2026-10-18 实查)

StalwartStalwart邮件服务器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 在协议层的覆盖是"全家桶"式的,下面是主要协议及其监听端口的对应关系(默认监听器,部署时可增删改):

协议端口用途说明
SMTP25服务器间邮件交换支持 STARTTLS,含完整反滥用策略
SMTPS465隐式 TLS 提交客户端认证发送
Submission(STARTTLS)587明文端口提交需 STARTTLS 后认证(默认策略)
IMAP143 / 993邮件收取993 为隐式 TLS
POP3995邮件收取(简单场景)隐式 TLS
ManageSieve4190过滤规则管理客户端远程管理 Sieve 脚本
HTTP443 / 8080Web 管理、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 指南》对前两条做了全流程实测):

  1. 官方安装脚本(推荐新手):curl https://get.stalw.art/install.sh | sh 一条命令完成下载、目录布局(配置 /etc/stalwart、数据 /var/lib/stalwart、日志 /var/log/stalwart)与 systemd 服务注册,适合标准 Ubuntu/Debian/CentOS 服务器。
  2. GitHub 二进制手动安装:从 Releases 下载对应平台压缩包(提供 sha256 与 sigstore 签名文件可校验),手工落位 /usr/local/bin、编写 systemd unit。适合需要精确控制目录/权限、或目标环境不便跑脚本的情况。
  3. 平台化部署:官方提供面向标准化平台的发行形态,本文不展开;需要同类打包思路时可参考站内 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 关键维度对比

维度Stalwartdocker-mailserveriRedMailMailcowMaddy
安装复杂度低(脚本一键)中(需懂打包栈)中(交互式安装器)中(编排文件)极低
Web 管理界面有(内置)无有(部分付费)有(完整)无
JMAP 协议原生支持无无(SOGo 提供)无(SOGo 提供)无
内存占用很低(约百 MB 级)中中高高(2GB+ 起步)极低
反垃圾能力内置 + 可外挂 RspamdRspamd(强)Rspamd/SpamAssassinRspamd(强)基础
存储后端选择多种可插拔本地卷本地(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 需要接受的现实:

  1. 版本迭代快,大版本间配置模型有断裂(如 v0.16 弃用 TOML 主配置),网上旧教程失效率高,学习时必须以官方当前版本文档为准。
  2. 生态时间还短:遇到疑难杂症时,可检索的社区积累不如 Postfix/Dovecot 体系雄厚。
  3. AGPL-3.0 协议:对二次分发的合规要求比 MIT/Apache 严格,企业法务需要过目。
  4. 部分企业能力(集群、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 日常运维手册》建立长期运营能力。

七、参考链接