Stalwart vs mailcow: two self-hosted mail servers compared
Stalwart and mailcow compared on licence, components, install requirements and upgrade notes, with each claim sourced to the vendor's own README, website, docs or licence file.
If you want to run your own mail server, two free options come up often: Stalwart and mailcow. They solve the same problem in different ways. Stalwart is one server that speaks the mail protocols itself. mailcow is a set of cooperating containers, each with a well-known mail component inside it.
We use Stalwart in Jabali Panel, so read this as a comparison by an interested party. For the wider choice of control panels, see the open-source panel roundup. The facts below come from each vendor’s own README, website, documentation and licence files, which we re-checked on 2026-10-29. Where we make a judgement, we say so.
The short answer
Choose Stalwart if you want one server to handle SMTP, IMAP, JMAP and the calendar and contact protocols, you can run it as a single service, and you are happy to work with a newer project’s upgrade notes.
Choose mailcow if you want to see each mail component as its own container, you already run Docker Compose, and you want a web interface for administering the stack.
Licence
Stalwart is dual-licensed. Its README says the project “is dual-licensed under the GNU Affero General Public License v3.0 (AGPL-3.0; as published by the Free Software Foundation) and the Stalwart Enterprise License v2 (SELv2)” [4]. It also says that “About 85% of Stalwart’s features are free and open source under the AGPL-3.0”, and that the rest make up the Enterprise edition [4]. The README describes the SELv2 as “a proprietary license designed for commercial use” [4]. Check the feature list before you assume a feature you need is free.
mailcow: dockerized is licensed under GPL version 3 [3].
What each one is
Stalwart’s homepage describes a server that supports “every standard protocol your clients already speak (JMAP, IMAP, POP3, SMTP, CalDAV, CardDAV and WebDAV)” [5]. It also says “What used to take five servers, now takes one” [5]. That is the vendor’s own description, and it is the design idea: one service for mail, calendars, contacts and shared files.
mailcow’s documentation lists its parts, which run as Docker containers. The mail components are Postfix as the mail transfer agent for Internet e-mail, Dovecot as the IMAP and POP server, SOGo as the integrated webmailer and calendar and contacts interface, Rspamd as the spam filter, and ClamAV as the antivirus scanner, which the docs mark as optional [1].
The two designs trade different things. A single server has fewer moving parts to watch, but one fault affects more of the stack. A set of containers lets you look at each part, replace one, or read the logs for each component, but you need Docker and you need to understand how the parts connect.
Installation and requirements
mailcow’s install page lists three steps: system packages, Docker and Docker Compose, then a quick installation script [2]. Plan for the DNS records and the ports the stack needs, and read the page’s notes before you start.
Stalwart’s changelog contains an important note for anyone who runs an earlier release. Version 1.0.0, dated 2026-10-26, “includes multiple breaking changes and a new database layout, so existing v0.16.x deployments cannot be upgraded in place” [6]. The changelog points to a migration guide for that step [6].
If you already run Stalwart 0.16, do not upgrade it in place. Read the migration guide first, and test the move on a copy of your data.
What you get out of the box
Both products handle the core mail jobs: accepting mail, delivering it, storing mailboxes and serving clients. The difference shows in the extras.
Stalwart’s homepage says calendars, contacts and shared files sit “in the same server as the mail” [5]. Clients use standard protocols, including JMAP for new apps and IMAP and POP3 for everything else [5].
mailcow’s SOGo component provides webmail, calendar and contacts [1]. The Rspamd and ClamAV components provide spam and virus filtering as separate services [1]. Those are the parts you would tune, replace or monitor one at a time.
Where Stalwart sits in Jabali Panel
Jabali Panel runs Stalwart 0.16.24 as its mail server, with Bulwark as the webmail client. That is the version pinned in the Jabali installer as of 2026-10-29. Each domain gets DKIM keys, and the panel manages SPF, DMARC and MTA-STS records for the domain. Mailboxes, forwarders and autoresponders are managed in the panel. The Mail Deliverability page gives a per-domain view of the DNS records and policies that affect outbound mail.
Jabali Panel manages Stalwart, not mailcow. If you want mailcow, run it on its own server and point that domain’s mail records at it.
Stalwart 1.0.0 (2026-10-26) and 1.0.1 (2026-10-28) are newer releases [7]. As noted above, the 1.0.0 changelog entry says existing v0.16.x deployments cannot be upgraded in place [6].
Migration between the two
Moving mail from one server to the other is a project of its own. Export mailboxes in a format both servers read, recreate accounts and aliases, copy the DKIM keys if you want mail to keep passing DKIM, and move DNS last. Test delivery and retrieval from several clients before you change the MX record.
We do not have a tested migration path between these two products to recommend. If you need one, plan it as a separate project with its own test server.
Which one fits which job
- A small team with one server and a need for calendars and contacts on the same box: Stalwart is the simpler fit, if the 0.16 to 1.0 upgrade path is acceptable to you.
- A team that already runs Docker Compose and wants each component visible: mailcow fits that setup.
- A hosting panel that handles DNS and SSL for your domains: Jabali Panel with Stalwart keeps the mail records in the same place as the zone.
- A need for a commercial licence or support: check Stalwart’s Enterprise edition and mailcow’s support options on their own pages before you decide.
Common questions
Is Stalwart free?
Most of its features are open source under AGPL-3.0. The rest are in the Enterprise edition, under the SELv2 [4]. Check the feature list for the features you need.
Does mailcow need Docker?
mailcow’s install page lists Docker and Docker Compose as prerequisites [2].
Can I run both?
Yes, on separate servers. Keep the MX and DNS records pointed at one of them at a time.
Which one is better?
That depends on your team and your server. This comparison lists what each vendor says it does and where its parts run. It does not rank them.
Read next
- Self-hosted mail server with Stalwart and Jabali Panel: how Jabali Panel sets up mail, DKIM, SPF, DMARC and MTA-STS.
- Stalwart Mail on Debian 13: the mail stack in more detail.
- Open-source hosting control panels compared (2026): the wider panel comparison, with licences and supported systems.
Sources and check dates
All sources were re-fetched on 2026-10-29.
- mailcow documentation, component list: https://docs.mailcow.email/
- mailcow installation page, prerequisites: https://docs.mailcow.email/getstarted/install/
- mailcow: dockerized licence, GPL-3.0: https://raw.githubusercontent.com/mailcow/mailcow-dockerized/master/LICENSE
- Stalwart README, licence and feature split: https://raw.githubusercontent.com/stalwartlabs/stalwart/main/README.md
- Stalwart homepage, protocols and “five servers, now takes one”: https://stalw.art/
- Stalwart changelog, 1.0.0 and 0.16.x upgrade note: https://raw.githubusercontent.com/stalwartlabs/stalwart/main/CHANGELOG.md
- Stalwart releases on GitHub, v1.0.0 and v1.0.1 with dates (checked 2026-10-29): https://github.com/stalwartlabs/stalwart/releases