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

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

Description and use

The university successfully migrated 10,000 mailboxes to Stalwart, achieving scalable clustering, JMAP support, and automated provisioning while avoiding a commercial license.

Problem

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

Outcome

The university successfully migrated 10,000 mailboxes to Stalwart, achieving scalable clustering, JMAP support, and automated provisioning while avoiding a commercial license.

Workflow

  • 1. Choose Stalwart Community edition (v0.16.8) 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 the legacy config.toml with a small JSON file pointing to the datastore; manage listeners, domains, DKIM, and spam settings via the web admin or API.
  • 4. Enable SMTP listener on port 587 and configure reverse proxy (HAProxy) in front of JMAP.
  • 5. Provision 10,000 accounts by syncing from LDAP/AD; use imapsync for mail and a custom script for CalDAV/CardDAV/WebDAV data.
  • 6. Apply per‑user send‑rate limits in the webmail layer and reverse proxy, since Community edition lacks this setting.
  • 7. Set up NATS for node coordination, PostgreSQL replication for failover, and MinIO distributed mode for blob redundancy.
  • 8. Test the cluster on a staging instance before cutover.
  • 9. Cutover to Stalwart, monitor logs, and verify mail flow and webmail functionality.

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-01T23:56:00.455Z