DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

Mailcow vs docker-mailserver: Self-Hosted Email Compared

Running your own email server? Mailcow gives you a full web UI and webmail, while docker-mailserver keeps it to a single lightweight container. Here's how to choose.

Quick Verdict

Mailcow is better for users who want a full-featured web interface with webmail, admin panel, and user self-service. docker-mailserver is better for sysadmins who want a lightweight, CLI-managed mail server with minimal resource usage.

Overview

Mailcow and docker-mailserver are the two most popular Docker-based email servers. They solve the same problem — running your own email — but with fundamentally different philosophies. Mailcow bundles everything (Postfix, Dovecot, SOGo webmail, admin panel, ClamAV, Rspamd) into a multi-container stack with a polished web UI. docker-mailserver runs everything in a single container with no web interface — all management happens through CLI commands.

Feature Comparison

Feature Mailcow docker-mailserver
Web admin panel Yes (mailcow UI) No
Webmail SOGo (built-in) None (add Roundcube/Snappymail separately)
Calendar & Contacts SOGo (CalDAV/CardDAV) None
User self-service Yes (password changes, aliases, filter rules) No
SMTP Postfix Postfix
IMAP/POP3 Dovecot Dovecot
Spam filtering Rspamd SpamAssassin or Rspamd (configurable)
Antivirus ClamAV (included, enabled by default) ClamAV (optional, disabled by default)
DKIM Rspamd-managed OpenDKIM or Rspamd
Fail2ban Built-in (custom implementation) Fail2ban (requires NET_ADMIN capability)
Rate limiting Built-in with per-user controls Postfix rate limiting only
Docker containers 10-15+ 1
CLI management docker compose exec commands setup.sh / docker exec setup commands
Two-factor auth Yes (admin panel) No (no web UI)
API Full REST API No
License GPL-3.0 MIT

Installation Complexity

Mailcow uses a git clone + script approach:

git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
docker compose up -d
Enter fullscreen mode Exit fullscreen mode

The setup is comprehensive but automated. The generate_config.sh script handles hostname, timezone, and initial configuration. Expect 5-10 minutes to pull all images and start ~15 containers.

docker-mailserver is more manual but simpler:

# Download compose.yaml and mailserver.env
docker compose up -d
# Add first account
docker exec -ti mailserver setup email add user@example.com
Enter fullscreen mode Exit fullscreen mode

Setup takes 2-3 minutes. The trade-off is that you configure everything via environment variables in mailserver.env instead of a web UI.

Both require the same DNS configuration (MX, SPF, DKIM, DMARC, PTR records).

Performance and Resource Usage

Metric Mailcow docker-mailserver
RAM (idle) 2-4 GB 500 MB-1 GB
RAM (with ClamAV) 4-6 GB 2-3 GB
Containers 10-15+ 1
Disk (application) 2-3 GB 500 MB
CPU usage (idle) Low-Medium Very Low

docker-mailserver is dramatically lighter. A single container using 500 MB of RAM vs. Mailcow's 15-container stack using 2-4 GB. If you're running a mail server on a small VPS alongside other services, docker-mailserver leaves much more headroom.

Mailcow's higher resource usage is the cost of SOGo webmail, the admin UI, and multiple supporting services.

Community and Support

Metric Mailcow docker-mailserver
GitHub stars ~10K ~15K
Documentation Excellent (docs.mailcow.email) Excellent (docker-mailserver.github.io)
Update frequency Regular releases Regular releases
Forum/Community Mailcow Community Forum GitHub Discussions
Commercial support Available No

Both have excellent documentation and active communities. Mailcow has a slightly more structured support ecosystem with its community forum and commercial support options. docker-mailserver's documentation is particularly thorough on configuration options.

Use Cases

Choose Mailcow If...

  • You want a web admin panel for managing domains, accounts, and aliases
  • You need built-in webmail (SOGo) without setting up a separate client
  • You want calendar and contacts (CalDAV/CardDAV) integrated
  • You need user self-service (password resets, filter management)
  • You want a REST API for automation
  • You have 4+ GB of RAM available
  • You're managing email for multiple users who need self-service

Choose docker-mailserver If...

  • You want minimal resource usage (512 MB-1 GB RAM)
  • You're comfortable managing email accounts via CLI
  • You're running on a small VPS with limited resources
  • You want a single-container deployment
  • You prefer simple, file-based configuration
  • You'll add your own webmail client (Roundcube, Snappymail) if needed
  • You want the simplest possible mail server that just works

Final Verdict

For single users or small teams comfortable with CLI: docker-mailserver is the better choice. It's lighter, simpler, and does the core job (SMTP + IMAP + spam filtering) excellently. Add Roundcube if you need webmail.

For organizations or users who want a managed experience: Mailcow is the better choice. The web admin, webmail, calendar integration, and user self-service justify the higher resource usage.

If you want something even more modern with lower resource usage and built-in everything (JMAP, web admin, CalDAV, CardDAV, spam filtering) in a single container, also consider Stalwart.

Related

Top comments (0)