Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Mailcow vs Stalwart vs Mailu at 10,000 Mailboxes: What Holds Up in Production

Description and use

Stalwart Community Edition handled 10,000 mailboxes with JMAP, clustering, and external storage, while Mailcow and Mailu lack production‑scale multi‑node support without commercial licenses.

Problem

Migrating a university email system to 10,000 mailboxes while ensuring scalability, high availability, and manageable provisioning.

Outcome

Stalwart Community edition successfully handled 10,000 mailboxes with JMAP, clustering, and external storage, while mailcow and Mailu lacked production‑scale multi‑node support or required commercial licenses for advanced features.

Workflow

  • 1. Choose Stalwart Community edition for its Rust binary and JMAP support.
  • 2. Configure a PostgreSQL database for metadata and a MinIO S3‑compatible store for message blobs.
  • 3. Replace IceWarp’s LDAP/AD directory with Stalwart’s domain configuration via the web admin or API.
  • 4. Migrate mail using imapsync, calendars and contacts via a custom script, and files via CalDAV/CardDAV/WebDAV copy.
  • 5. Set up NATS as the message bus for clustering, HAProxy as a front‑end, and replicate PostgreSQL and MinIO for HA.
  • 6. Test per‑user send‑rate limits (not available in Community) by implementing limits in the webmail layer and reverse proxy.
  • 7. Validate high availability by simulating node failure and ensuring failover to standby nodes.

Evidence

We run Stalwart for a university with 10,000 mailboxes

Source

Stalwart is a single binary written in Rust that speaks every mail and groupware protocol itself

Source

We keep metadata and settings in PostgreSQL and message blobs in S3-compatible object storage (MinIO)

Source

Version 0.16 changed the configuration model. There's no big config.toml anymore

Source

We wanted a server-side send rate limit per user, so a compromised account talking raw SMTP couldn't blast out mail

Source

Stalwart's Community clustering runs several independent nodes on the same shared stores, coordinated through a message bus

Source

  • Record date: 2026-10-14T22:41:12.465Z