Mailcow is a ready-made stack of Docker containers that deploys a full mail server: receiving and sending mail, a webmail and calendar interface, antispam and antivirus, all bundled together with a single admin panel. Unlike building Postfix by hand, Mailcow takes care of wiring the components together, but it needs more server resources and trust in the updates of a ready-made image.
What is in the Mailcow stack
Mail receiving and sending in Mailcow is handled by Postfix, IMAP/POP3 access by Dovecot, spam filtering by Rspamd, attachment antivirus scanning by ClamAV, and the webmail and calendar interface is provided by SOGo. All components run as separate Docker containers and exchange data over an internal network rather than being installed separately into the system.
The Mailcow admin panel combines domain, mailbox, alias, and filtering rule management in one web interface — something that, with manual Postfix and Dovecot setup, is usually done by editing text configuration files and separate databases.
Resource and system requirements
ClamAV and Rspamd, together with the MySQL database and Redis, noticeably increase memory use compared to a standalone Postfix: per the project's documentation, the minimum is 2 GB of RAM, while in practice 4 GB or more is usually budgeted for stable operation of all components at once. With less memory, the ClamAV container typically suffers first — either failing to start or getting killed when updating its virus databases.
Mailcow is meant to run on a dedicated VDS with its own domain and reverse DNS (PTR) pointing to that same domain — without a correct PTR record, many mail systems reject messages before even checking SPF and DKIM, no matter how carefully Mailcow itself is configured.
Installation and first run
Mailcow is installed through docker compose: the configuration is generated by a separate script, after which about a dozen containers are started with a single command. The basic system requirements — Docker and Docker Compose installed — are described in the article "Docker on a VPS: installing and running containers".
The first run takes a noticeable amount of time: container images need to be downloaded, and the database and mail tables need to be initialized. Until the first run finishes, the admin panel may be unavailable or respond with errors, which does not mean the installation failed.
DNS and mail protection
Without the basic set of DNS records — MX, SPF, DKIM, and DMARC — Mailcow does not guarantee deliverability any more than any other mail server: the containers handle receiving and sending, but they do not remove the need to correctly declare the domain in DNS. The full setup order for these records, whether Mailcow or manual Postfix sits behind them, is described in the article "SPF, DKIM, and DMARC: a complete email protection setup".
Mailcow automatically generates a DKIM key for the domain through the web interface, but the DNS record itself is still added manually — the automation only covers key generation and signing messages inside the container, not managing the DNS zone.
Mailcow or a manual Postfix setup
A manual Postfix setup gives full control over every configuration parameter and minimal resource use, but requires separately configuring and wiring together Dovecot, antispam, and webmail if they are needed; that setup order is described in the article "Postfix: setting up a mail server on a VPS".
Mailcow fits when the full feature set of a mail server with a web interface is needed with minimal manual component assembly, while manual Postfix fits when only sending and receiving mail is needed with minimal memory use, without webmail or a calendar.
- Postfix — receiving and sending mail
- Dovecot — IMAP and POP3 access
- Rspamd — spam filtering
- ClamAV — scanning attachments for viruses
- SOGo — webmail and calendar interface
- MySQL and Redis — storing configuration and queues
| Parameter | Mailcow | Manual Postfix |
|---|---|---|
| Minimum memory | from 2 GB | from 512 MB |
| Webmail and calendar | included (SOGo) | needs separate installation |
| Antispam and antivirus | included (Rspamd, ClamAV) | needs separate installation |
| Configuration control | through the panel and ready templates | full, via text files |
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
docker compose pull
docker compose up -d
Frequently asked questions
How much RAM is needed for Mailcow to run stably?
Per the project's documentation the minimum is 2 GB, but in practice 4 GB or more is usually budgeted for ClamAV, Rspamd, and the other components to run stably at the same time. With less memory, the ClamAV container is usually the first to suffer — either failing to start or restarting during virus database updates.
Can Mailcow run without the SOGo web interface if only sending and receiving mail is needed?
SOGo can be disabled in the configuration, which slightly lowers resource use, but Postfix, Dovecot, Rspamd, and ClamAV remain part of the stack regardless — Mailcow is not designed to run a single component on its own. If only sending and receiving mail is needed, without a web interface or antivirus, it is simpler and lighter on resources to set up Postfix manually.
Do SPF, DKIM, and DMARC still need separate setup if mail already runs through Mailcow?
Yes, Mailcow automates DKIM key generation and signing messages inside the containers, but the DNS records themselves — MX, SPF, DKIM, and DMARC — still need to be added to the domain zone manually, just like with any other mail server. Without these records, mail from Mailcow will be delivered just as poorly as from any un-warmed-up server lacking email protection.