Mailu vs iRedMail: Which Mail Server?
Quick Verdict
Mailu is the better choice for most self-hosters. It deploys in minutes with Docker Compose, bundles every component (SMTP, IMAP, webmail, antispam, admin panel) as isolated containers behind a single .env file, and upgrades with docker compose pull. iRedMail wins if you want a traditional bare-metal install where every service lives in standard system paths and you manage configuration files directly. If you are comfortable with Docker, pick Mailu. If you specifically want a non-Docker setup with granular control over each daemon, pick iRedMail.
Overview
Both Mailu and iRedMail assemble a full mail server from the same building blocks — Postfix for SMTP, Dovecot for IMAP/POP3, spam filtering, antivirus, and webmail — but they package and manage those components in fundamentally different ways.
Mailu is a Docker-native mail suite. It started in 2016 as a fork of freeposte.io and has grown into one of the most popular containerized mail servers. You generate a docker-compose.yml and mailu.env through the setup wizard, place them on your server, and run docker compose up -d. Everything — Postfix, Dovecot, Rspamd, SnappyMail (webmail), ClamAV, Unbound (DNS resolver), and a Flask-based admin panel — runs in its own container. The current release is 2024.06 (latest patch: 2024.06.47, January 2025). Images are published at ghcr.io/mailu/* for amd64 and ARM64.
iRedMail is a shell script installer that configures a complete mail stack directly on a bare OS. You download the tarball, run the interactive installer, and it provisions Postfix, Dovecot, Amavisd-new, SpamAssassin, ClamAV, Nginx, Roundcube (webmail), iRedAdmin (admin panel), and Fail2ban into standard system paths (/etc/postfix/, /etc/dovecot/, etc.). It supports OpenLDAP, MariaDB, or PostgreSQL as the user backend. The current release is 1.7.4 (June 2025). An official Docker image exists (iredmail/mariadb:stable) but the iRedMail team has archived the Docker repo and labeled it beta — for production Docker use, Mailu or Mailcow are better options.
Feature Comparison
| Feature | Mailu | iRedMail |
|---|---|---|
| Deployment method | Docker Compose (generated via setup wizard) | Shell script installer on bare OS |
| Core SMTP | Postfix | Postfix |
| Core IMAP/POP3 | Dovecot | Dovecot |
| Spam filtering | Rspamd | SpamAssassin via Amavisd-new |
| Antivirus | ClamAV (optional, adds ~1 GB RAM) | ClamAV via Amavisd-new |
| Webmail | SnappyMail (or Roundcube) | Roundcube |
| Admin panel | Flask-based web UI + RESTful API | iRedAdmin (free: basic; Pro: paid, adds features) |
| Database backend | SQLite (default), PostgreSQL, MariaDB | OpenLDAP, MariaDB, or PostgreSQL |
| DKIM signing | Rspamd-managed, per-domain via admin UI | Amavisd-managed, manual DNS config |
| TLS certificates | Built-in Let’s Encrypt or manual cert | Manual cert or script-based Let’s Encrypt |
| Fail2ban | Not included (relies on Docker network isolation + Rspamd rate limiting) | Included and pre-configured |
| Architecture support | amd64, ARM64, ARMv7 | Any Linux/BSD that Postfix supports |
| Mailing lists | No built-in mailing list manager | mlmmj (included) |
| Two-factor auth | No native support | No (free edition); Yes (iRedAdmin-Pro) |
| Upgrade method | docker compose pull && docker compose up -d | Manual — run upgrade scripts per version |
| License | MIT | GPLv3 (free); proprietary (Pro/Enterprise) |
Installation Complexity
Mailu
Mailu’s onboarding is streamlined. Visit setup.mailu.io, answer questions about your domain, hostname, TLS preference, and optional services, and download two files: docker-compose.yml and mailu.env. Place them on your server and start the stack.
# docker-compose.yml (Mailu 2024.06 — simplified core services)
# Generated by https://setup.mailu.io — customize mailu.env for your domain
services:
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- "/mailu/redis:/data"
depends_on:
- resolver
dns:
- 192.168.203.254
front:
image: ghcr.io/mailu/nginx:2024.06.48
restart: unless-stopped
env_file: mailu.env
logging:
driver: journald
options:
tag: mailu-front
ports:
- "80:80"
- "443:443"
- "25:25"
- "465:465"
- "587:587"
- "110:110"
- "995:995"
- "143:143"
- "993:993"
networks:
- default
volumes:
- "/mailu/certs:/certs"
- "/mailu/overrides/nginx:/overrides:ro"
depends_on:
- resolver
dns:
- 192.168.203.254
resolver:
image: ghcr.io/mailu/unbound:2024.06.48
restart: unless-stopped
env_file: mailu.env
networks:
default:
ipv4_address: 192.168.203.254
admin:
image: ghcr.io/mailu/admin:2024.06.48
restart: unless-stopped
env_file: mailu.env
volumes:
- "/mailu/data:/data"
- "/mailu/dkim:/dkim"
depends_on:
- redis
- resolver
dns:
- 192.168.203.254
imap:
image: ghcr.io/mailu/dovecot:2024.06.48
restart: unless-stopped
env_file: mailu.env
volumes:
- "/mailu/mail:/mail"
- "/mailu/overrides/dovecot:/overrides:ro"
depends_on:
- front
- resolver
dns:
- 192.168.203.254
smtp:
image: ghcr.io/mailu/postfix:2024.06.48
restart: unless-stopped
env_file: mailu.env
volumes:
- "/mailu/mailqueue:/queue"
- "/mailu/overrides/postfix:/overrides:ro"
depends_on:
- front
- resolver
dns:
- 192.168.203.254
antispam:
image: ghcr.io/mailu/rspamd:2024.06.48
restart: unless-stopped
env_file: mailu.env
volumes:
- "/mailu/filter:/var/lib/rspamd"
- "/mailu/overrides/rspamd:/overrides:ro"
depends_on:
- front
- resolver
dns:
- 192.168.203.254
webmail:
image: ghcr.io/mailu/webmail:2024.06.48
restart: unless-stopped
env_file: mailu.env
volumes:
- "/mailu/webmail:/data"
- "/mailu/overrides/snappymail:/overrides:ro"
depends_on:
- front
dns:
- 192.168.203.254
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.203.0/24
And the corresponding mailu.env:
# mailu.env — core environment variables
# Full reference: https://mailu.io/master/configuration.html
# Generate a 16-byte random key: openssl rand -hex 16
SECRET_KEY=change-me-to-a-random-hex-string
# Main mail domain (used for bounce mail, postmaster, etc.)
DOMAIN=example.com
# Public hostnames for the mail server (comma-separated if multiple)
HOSTNAMES=mail.example.com
# Postmaster address (local part only — @DOMAIN is appended)
POSTMASTER=admin
# TLS: "letsencrypt", "cert", or "notls"
TLS_FLAVOR=letsencrypt
# Initial admin account — created on first run
INITIAL_ADMIN_ACCOUNT=admin
INITIAL_ADMIN_DOMAIN=example.com
INITIAL_ADMIN_PW=change-this-strong-password
INITIAL_ADMIN_MODE=ifmissing
# Web paths
WEB_ADMIN=/admin
WEB_WEBMAIL=/webmail
WEBROOT_REDIRECT=/webmail
# Docker network subnet — must not conflict with your host networks
SUBNET=192.168.203.0/24
# Message size limit in bytes (50 MB)
MESSAGE_SIZE_LIMIT=50000000
# Logging
LOG_LEVEL=WARNING
From zero to a working mail server takes about 10 minutes, assuming DNS is already configured (MX, SPF, DKIM, DMARC records).
iRedMail
iRedMail runs an interactive installer on a freshly provisioned OS. The installer asks for your mail domain, admin password, backend choice, and optional components, then configures every service.
# iRedMail 1.7.4 bare-metal installation
# Requires a fresh OS install — Ubuntu 22.04 or Debian 12 recommended
# Do NOT run on a server with existing services
cd /root
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.4.tar.gz
tar xzf 1.7.4.tar.gz
cd iRedMail-1.7.4
bash iRedMail.sh
The installer is interactive — it prompts for:
- Mail storage path (default:
/var/vmail) - Database backend (OpenLDAP, MariaDB, or PostgreSQL)
- First mail domain
- Admin password
- Optional components (Roundcube, SOGo, Fail2ban, iRedAdmin)
After completion, reboot and log in to https://your-server/iredadmin/.
For Docker-based iRedMail (beta, not recommended for production), you can use the all-in-one container:
# docker-compose.yml — iRedMail Docker (beta)
# WARNING: The iRedMail team has archived the Docker repo.
# For production Docker mail servers, use Mailu or Mailcow instead.
services:
iredmail:
image: iredmail/mariadb:stable
restart: unless-stopped
hostname: mail.example.com
env_file: iredmail-docker.conf
ports:
- "80:80"
- "443:443"
- "25:25"
- "465:465"
- "587:587"
- "110:110"
- "995:995"
- "143:143"
- "993:993"
volumes:
- backup-mysql:/var/vmail/backup/mysql
- mailboxes:/var/vmail/vmail1
- mlmmj:/var/vmail/mlmmj
- mlmmj-archive:/var/vmail/mlmmj-archive
- imapsieve-copy:/var/vmail/imapsieve_copy
- custom:/opt/iredmail/custom
- ssl:/opt/iredmail/ssl
- mysql:/var/lib/mysql
- clamav:/var/lib/clamav
- sa-rules:/var/lib/spamassassin
- postfix-queue:/var/spool/postfix
volumes:
backup-mysql:
mailboxes:
mlmmj:
mlmmj-archive:
imapsieve-copy:
custom:
ssl:
mysql:
clamav:
sa-rules:
postfix-queue:
With the corresponding iredmail-docker.conf:
# iredmail-docker.conf — no quotes around values
HOSTNAME=mail.example.com
FIRST_MAIL_DOMAIN=example.com
FIRST_MAIL_DOMAIN_ADMIN_PASSWORD=change-this-strong-password
MLMMJADMIN_API_TOKEN=generate-with-openssl-rand-base64-32
ROUNDCUBE_DES_KEY=generate-with-openssl-rand-base64-24
The bare-metal installer takes 15-30 minutes depending on download speeds and whether you enable ClamAV. The Docker version starts faster but comes with a beta disclaimer from the iRedMail team themselves.
Performance and Resource Usage
| Resource | Mailu | iRedMail (bare metal) |
|---|---|---|
| Minimum RAM | 2 GB (no ClamAV) | 2 GB (no ClamAV) |
| Recommended RAM | 4 GB (with ClamAV) | 4 GB (with ClamAV) |
| Disk (base install) | ~2 GB (images) | ~1.5 GB (packages) |
| Idle RAM usage | ~800 MB (no ClamAV), ~1.8 GB (with ClamAV) | ~600 MB (no ClamAV), ~1.5 GB (with ClamAV) |
| CPU at idle | Negligible | Negligible |
| Docker overhead | ~100-200 MB for container runtime | None (native processes) |
iRedMail’s bare-metal approach uses marginally less memory because there is no container runtime overhead. Mailu’s Docker architecture adds roughly 100-200 MB of baseline RAM for the container engine and inter-container networking. In practice, the difference only matters if you are running on a VPS with exactly 2 GB of RAM — at 4 GB or more, both perform identically for small to mid-size deployments (under 100 mailboxes).
ClamAV is the biggest resource consumer in both stacks. If RAM is tight, disable it — Rspamd (Mailu) and SpamAssassin (iRedMail) catch the vast majority of threats without virus scanning.
Spam Filtering
Mailu uses Rspamd, a modern C-based spam filter with built-in DKIM signing, ARC, DMARC verification, neural network training, and a web dashboard for monitoring. Rspamd is fast, memory-efficient, and actively developed. It is the de facto standard for modern mail servers.
iRedMail uses the older SpamAssassin + Amavisd-new pipeline. SpamAssassin is proven and has vast rule databases, but Amavisd-new adds a layer of complexity and uses more RAM than Rspamd for equivalent throughput. DKIM signing goes through Amavisd rather than the spam filter itself, which means more moving parts.
For new deployments, Rspamd is the better spam engine. It is simpler to tune, faster to process messages, and natively handles DKIM/ARC without a separate daemon.
Upgrade and Maintenance
Mailu
Upgrades are straightforward:
cd /opt/mailu
# Update version tag in mailu.env or docker-compose.yml
docker compose pull
docker compose down
docker compose up -d
Breaking changes between major versions (e.g., 2.0 to 2024.06) are documented in the release notes. The version scheme (YYYY.MM.patch) makes it clear you can only move forward. Rollback means restoring from backup and pulling older image tags.
iRedMail
Upgrades require running version-specific upgrade scripts sequentially. To go from 1.7.2 to 1.7.4, you run the 1.7.2-to-1.7.3 script first, then 1.7.3-to-1.7.4. Each script modifies system config files in /etc/postfix/, /etc/dovecot/, database schemas, and sometimes Nginx configs.
# Example: upgrading from 1.7.3 to 1.7.4
wget https://docs.iredmail.org/upgrade.iredmail.1.7.3-1.7.4.html
# Follow the manual steps — there is no single "upgrade" command
This is manageable for small version hops but becomes tedious if you fall behind multiple releases. The iRedMail Easy platform (paid) automates upgrades, but the free edition requires manual intervention every time.
Community and Support
| Aspect | Mailu | iRedMail |
|---|---|---|
| GitHub stars | ~6,000+ | ~1,500+ |
| License | MIT | GPLv3 (free) / Proprietary (Pro) |
| Community forum | GitHub Discussions | forum.iredmail.org |
| Documentation | mailu.io — thorough, version-specific | docs.iredmail.org — comprehensive but sprawling |
| Paid support | None (community only) | iRedMail Pro / Enterprise (paid admin panel, tech support) |
| Release frequency | Patch releases every few months | ~3 releases per year |
Mailu has a larger and more active open-source community. iRedMail’s free edition community is smaller, and the team’s focus has shifted toward the paid iRedMail Easy and Enterprise products. If you want a purely community-driven project with no paid tier gatekeeping features, Mailu is the safer bet.
Use Cases
Choose Mailu If…
- You run Docker on your server and want a containerized, isolated mail stack
- You want the simplest possible deployment path (setup wizard +
docker compose up) - You prefer Rspamd over SpamAssassin for spam filtering
- You need ARM64 support (Raspberry Pi, Oracle Cloud free tier ARM instances)
- You want MIT-licensed software with no paid features behind a paywall
- You plan to run multiple services on the same server and want containers for isolation
Choose iRedMail If…
- You prefer bare-metal installs where each daemon runs as a native system service
- You want direct access to Postfix/Dovecot config files without Docker abstraction layers
- You need OpenLDAP as your user directory backend (for integration with existing infrastructure)
- You need built-in mailing list support (mlmmj, included with iRedMail)
- You are running on a memory-constrained VPS and every megabyte counts
- You plan to purchase iRedAdmin-Pro for advanced admin features (domain-level throttling, per-user controls, white/blacklisting)
Final Verdict
For most self-hosters deploying a new mail server in 2026, Mailu is the clear winner. Docker is the standard deployment model for self-hosted services, and Mailu embraces it fully — isolated containers, easy upgrades, reproducible configuration, and multi-architecture support. Its Rspamd-based spam filtering is modern and efficient, the setup wizard eliminates guesswork, and the MIT license means every feature is free.
iRedMail remains a solid choice for administrators who specifically want bare-metal control — the ability to vim /etc/postfix/main.cf and manage services through systemd directly. It also has the edge if you need OpenLDAP integration or built-in mailing lists. But its Docker offering is beta and effectively abandoned, its upgrade path requires manual scripting, and its best admin features are locked behind a paid license.
If you are reading this article, you almost certainly run Docker. Pick Mailu.
FAQ
Can Mailu and iRedMail run on the same server?
Not recommended. Both configure Postfix and Dovecot, and they would conflict on mail ports (25, 465, 587, 143, 993). If you need to evaluate both, run them on separate VPS instances or use different IP addresses.
Does Mailu support OpenLDAP?
No. Mailu uses its own internal user database (SQLite, PostgreSQL, or MariaDB). If your organization uses LDAP for authentication and you need mail accounts managed through LDAP, iRedMail is the better choice — it supports OpenLDAP natively as a user backend.
Which has better spam filtering?
Mailu uses Rspamd, which is faster and more modern than iRedMail’s SpamAssassin + Amavisd-new pipeline. Rspamd handles DKIM signing, ARC, and DMARC natively (fewer moving parts). SpamAssassin has more community rules and a longer track record, but the Amavisd layer adds complexity and RAM overhead. For new deployments, Rspamd is the stronger choice.
Can I host mailing lists with Mailu?
Mailu does not include a mailing list manager. iRedMail includes mlmmj out of the box. If you need mailing lists, either use iRedMail or add a separate mailing list service like listmonk alongside Mailu.
Is Mailu’s ARM support production-ready?
Yes. Mailu publishes multi-architecture Docker images (amd64, ARM64, ARMv7) on GitHub Container Registry. ARM64 deployments on Raspberry Pi 4/5 and Oracle Cloud free-tier ARM instances work in production. iRedMail’s bare-metal installer also supports ARM, but SOGo is unavailable on ARM, limiting groupware functionality.
Which is better for a personal email server?
Mailu — for most self-hosters. It deploys faster, upgrades easier, and runs alongside your other Docker services. Disable ClamAV (optional) and it runs comfortably on 2 GB RAM. iRedMail is equally capable but requires a dedicated server and manual upgrades, which is more infrastructure overhead for a personal setup.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments