Stalwart vs Mailcow comes down to one trade: Mailcow is a full suite assembled from proven parts, and Stalwart is one lean server written from scratch. Mailcow bundles Postfix, Dovecot, Rspamd and SOGo webmail in Docker under GPL-3.0, and needs at least 6 GiB of RAM. Stalwart is a single Rust process under AGPL-3.0 (with a paid enterprise edition) that speaks SMTP, IMAP, JMAP, POP3, CalDAV and CardDAV itself and needs far less memory, but you bring your own webmail. Pick Mailcow for a team that lives in the browser, Stalwart for a small, low-maintenance server.
Two other names come up in the same searches. Mail-in-a-Box is the easiest to install and the hardest to customise. Postal isn't a mailbox server at all. It's an open-source alternative to SendGrid and Mailgun for apps that send mail. Details below, as of October 2026, from each project's own documentation.
At a glance
| Mailcow | Stalwart | Mail-in-a-Box | Postal | |
|---|---|---|---|---|
| What it is | Mailbox server + groupware suite | Mailbox and collaboration server | Mailbox appliance | Sending platform for apps |
| License | GPL-3.0 | AGPL-3.0 + Stalwart Enterprise License | CC0-1.0 | MIT |
| Built from | Postfix, Dovecot, Rspamd, SOGo, ClamAV in Docker | One Rust server | Postfix, Dovecot, Roundcube, Nextcloud, SpamAssassin, nsd | Containers in Docker + MariaDB |
| Minimum RAM | 6 GiB + 1 GiB swap | No fixed minimum published | 512 MB (1 GB recommended) | 4 GB |
| Webmail | Yes (SOGo) | Not bundled | Yes (Roundcube) | No |
| Calendars/contacts | Yes | CalDAV, CardDAV | Yes (Nextcloud) | No |
| JMAP | No | Yes | No | No |
| Runs your DNS | No | No | Yes | No |
| Best for | Teams wanting a full suite | Small, lean servers | One person or family, minimal effort | Apps sending transactional mail |
Mailcow: the full suite
Mailcow (mailcow-dockerized) packages a complete mail stack as containers. The repository's own topics list Postfix, Dovecot, Rspamd, SOGo and ClamAV, and mailcow's own code is GPL-3.0. You get a web admin, webmail with calendars and contacts, and Rspamd, a mature spam filter.
The cost is resources. The prerequisites page (https://docs.mailcow.email/getstarted/prerequisite-system/) lists 6 GiB of RAM plus 1 GiB of swap with the default configuration, 20 GiB of disk before mail, and full virtualization (KVM, ESX, Hyper-V). It doesn't support OpenVZ, LXC or NAS devices. Supported systems include Debian 11–13, Ubuntu 22.04 and newer, and Alma and Rocky Linux.
Choose Mailcow if you're hosting mailboxes for a team, people expect webmail and shared calendars, and you'd rather run a well-trodden stack than something newer.
Stalwart: one server, all protocols
Stalwart (https://github.com/stalwartlabs/stalwart) is a mail and collaboration server written in Rust. One process handles SMTP, IMAP4, POP3 and JMAP, plus CalDAV, CardDAV and WebDAV. It has its own spam and phishing filter, with a statistical classifier, DNSBL checks, greylisting and spam traps. You can store data in RocksDB, PostgreSQL, MySQL, SQLite, FoundationDB or S3-compatible storage.
Licensing is dual: AGPL-3.0 for the open-source edition and a proprietary Stalwart Enterprise License for the rest. The project says about 85% of features are open source. Multi-tenancy, SCIM provisioning, sharded storage and live telemetry are enterprise features.
Stalwart's requirements page publishes no minimum RAM, but describes default memory limits of about 2.4 GiB on a 2 GiB host, with caches that grow only as accounts are used. In practice it fits on far smaller machines than Mailcow.
It has a web admin but no bundled end-user webmail. Separate projects provide JMAP webmail for it, or you can run Roundcube or use desktop and phone clients over IMAP or JMAP.
Choose Stalwart if you want a small, modern server with fewer moving parts, your users are happy with mail apps, or you need JMAP.
Spam filtering: Rspamd vs Stalwart's built-in filter
This is the main functional gap. Rspamd in Mailcow is a long-established filter with a large rule set. Stalwart's filter is newer but covers the same kinds of check. Some comparisons note that Rspamd still handles very spammy, high-volume inbound mail better. For a small team, either is fine. If you receive a lot of spam for many users, Mailcow's stack has the longer track record.
Mail-in-a-Box: the appliance
Mail-in-a-Box (https://mailinabox.email/) turns a fresh Ubuntu 22.04 server into a complete mail server: Postfix, Dovecot, Roundcube webmail, Nextcloud for contacts and calendars, SpamAssassin, and its own DNS server. It needs at least 512 MB of RAM, 1 GB recommended.
It's deliberately inflexible. The project lists "not make something customizable by power users" as a non-goal, it must run on a dedicated fresh machine, and it wants to take over your domain's DNS so it can publish the right records itself. That's why it's easy: it makes all the decisions for you.
The guide also says most cloud providers will do, "but not Amazon Web Services", because AWS's network is often blocked for spam.
Choose Mail-in-a-Box if you're one person or a small family and want mailboxes on your own domain with the least possible thinking. Look elsewhere if you need anything it doesn't do out of the box.
Postal: not a mailbox server
Postal (https://github.com/postalserver/postal) describes itself as an open-source mail delivery platform for incoming and outgoing email, used by websites and web servers: "Think Sendgrid, Mailgun or Postmark but open source". It's MIT-licensed, runs entirely in Docker, and needs MariaDB 10.6 or newer, at least 4 GB of RAM, 2 CPU cores and 25 GB of disk, ideally on a server of its own.
So Postal sits next to the others, not in competition with them. It's for your app's receipts, password resets and notifications. Its README doesn't describe IMAP mailboxes, so it's not the tool for staff reading their inbox.
Postal alternatives
If you looked at Postal because you want to stop paying per email to SendGrid or Mailgun, the realistic alternatives are:
- Other open-source senders. Plunk and useSend have hosted versions. useSend and FreeResend send through Amazon SES. We compare them in open-source Resend alternatives.
- A plain Postfix server. For sending your own app's mail from your own IP, Postfix plus OpenDKIM is far less software than Postal. Our Postfix on Ubuntu guide shows the setup we run.
- A hosted sender. If the goal is lower cost and less work rather than owning the software, see our pricing.
What none of them fixes
Every server on this list delivers mail the same way, over port 25 from your IP, and the receiving side doesn't care which software you ran. What decides whether you reach the inbox is:
- Outbound port 25. Many clouds block it by default. Check before you install anything: port 25 blocked on your VPS.
- Reverse DNS. The IP needs a PTR record that matches your mail hostname. See reverse DNS for email.
- SPF, DKIM and DMARC on every domain. Mailcow, Stalwart and Mail-in-a-Box all generate DKIM keys and show you the records. Mail-in-a-Box also publishes them, because it runs your DNS.
- Warm-up. A new IP has no reputation. Even perfect setups land in spam at first, as we found on our own first day. Our IP warm-up guide covers the schedule.
- Ongoing care. Blocklist checks, updates, certificate renewals and backups. This is the part most people underestimate; we weigh it honestly in is self-hosting email worth it.
Which should you choose?
| You want… | Pick |
|---|---|
| Mailboxes and webmail for a team, mature spam filtering | Mailcow |
| A small, efficient server, JMAP, few moving parts | Stalwart |
| Mailboxes for yourself with almost no decisions | Mail-in-a-Box |
| Your app's transactional mail on your own infrastructure | Postal or plain Postfix |
| Your app's mail without running a server | A hosted sender |
We build sending servers for clients on their own VPS, and Postal or Mailcow are things we might install as part of that. If you'd like it set up and watched for you, see our managed email server service.