Mailcow E-Mail-Server selbst hosten 2026

Warum 2026 noch einen eigenen Mailserver betreiben?

Die großen Anbieter haben ihre Preise in den letzten Jahren deutlich angezogen. Microsoft 365 Business Basic liegt 2026 bei rund 6,80 € pro Nutzer und Monat, Google Workspace Starter bei etwa 6,90 €. Bei 15 Postfächern sind das schnell über 1.200 € im Jahr – für eine Funktion, die technisch seit 40 Jahren unverändert funktioniert. Gleichzeitig verschärfen sich Datenschutzanforderungen: Wer Mandanten-, Patienten- oder Personalakten per E-Mail verarbeitet, braucht einen Auftragsverarbeitungsvertrag, Einblick in die Serverstandorte und oft auch Verschlüsselung im Ruhezustand.

Mailcow ist 2026 die ausgereifteste Open-Source-Lösung für diesen Zweck. Das Projekt bündelt Postfix, Dovecot, Rspamd, ClamAV, SOGo, MariaDB, Redis, Unbound und einen eigenen Netfilter-Container in einem Docker-Compose-Stack. Die Oberfläche ist vollständig deutsch, die Dokumentation gepflegt, und die Update-Routine reduziert sich auf einen einzigen Befehl. Über 15.000 Installationen weltweit sprechen für die Reife.

Der Preis dafür ist Verantwortung: Deliverability, IP-Reputation, DNS-Pflege und Backups liegen bei dir. Dieser Guide zeigt dir den kompletten Weg von der leeren VPS-Instanz bis zum produktiven Postfach – inklusive der Fehler, die 90 % aller Erstinstallationen in die Spam-Ordner ihrer Empfänger befördern.

Hardware-Anforderungen und Kosten im Vergleich

Mailcow ist kein Leichtgewicht. Der offizielle Mindestwert liegt bei 1 vCPU, 6 GB RAM und 20 GB Speicher – realistisch solltest du nicht unter 8 GB RAM gehen, weil ClamAV und Rspamd unter Last gerne 2 bis 3 GB allein belegen. Für 20 bis 50 Postfächer hat sich folgendes Profil bewährt:

RessourceMinimumEmpfohlen (bis 50 Postfächer)
CPU1 vCPU4 vCPU (dediziert bevorzugt)
RAM6 GB8–16 GB
Speicher20 GB SSD160 GB NVMe
Traffic20 TB/Monatunmetered oder 32 TB
IPv41 dediziert1 dediziert + PTR-fähig

Bei den Anbietern sieht es 2026 so aus: Netcup VPS 2000 G11 (4 vCPU, 8 GB, 160 GB NVMe) kostet etwa 8,49 € monatlich. Hetzner CX32 (4 vCPU, 8 GB, 80 GB) liegt bei rund 6,80 €, die dedizierte CCX13 (2 vCPU AMD, 8 GB) bei etwa 12,49 €. Contabo VPS S gibt es ab 4,50 €, allerdings mit schwankender I/O-Performance. Ein dedizierter vCPU-Kern ist bei Mail wichtig: Shared-CPU-VPS können bei Rspamd-Scans unter Last in die Timeouts laufen und Mails verzögert ausliefern.

Ein zweiter Punkt wiegt schwerer als die Hardware: Die IP-Adresse muss einen gültigen PTR-Eintrag (Reverse DNS) haben und darf nicht auf einer Blockliste stehen. Prüfe das vor der Bestellung mit dig -x DEINE_IP und einem Blick auf mxtoolbox.com/blacklists.aspx. Manche Billighoster vergeben IPs aus bereits verbrannten /24-Netzen – dann kämpfst du monatelang gegen Spamfilter.

Server vorbereiten: DNS, PTR und Firewall

Bevor Docker überhaupt installiert wird, muss die Namensauflösung stehen. Mailcow verweigert in manchen Konfigurationen den Start, wenn der Hostname nicht auflösbar ist. Setze zuerst den A-Record für deinen Mailhost:

# Auf dem Server
hostnamectl set-hostname mail.example.com
echo "203.0.113.42 mail.example.com mail" >> /etc/hosts

# Prüfen (muss die öffentliche IP zurückgeben)
dig +short mail.example.com

Der PTR-Eintrag wird nicht bei dir, sondern beim Hoster gesetzt – bei Hetzner, Netcup und Contabo geht das im Webinterface unter „Reverse DNS“ oder per Support-Ticket. Ohne PTR landen praktisch alle ausgehenden Mails bei Gmail und Outlook im Spam. Der PTR muss exakt auf mail.example.com zeigen, nicht auf example.com.

Die Firewall (ufw oder nftables) braucht folgende Ports. Achtung: Port 25 ist bei vielen Hostern standardmäßig gesperrt und muss freigeschaltet werden – bei Hetzner und Netcup nach Verifizierung deiner Daten üblicherweise innerhalb von 24 Stunden.

PortProtokollZweck
25TCPSMTP eingehend (Server-zu-Server)
465TCPSMTPS (implizites TLS)
587TCPSubmission mit STARTTLS
143 / 993TCPIMAP / IMAPS
110 / 995TCPPOP3 / POP3S
4190TCPSieve (Serverseitige Filter)
80 / 443TCPACME-Challenge und Web-UI

Mailcow installieren: Der Docker-Stack

Die Installation selbst dauert keine 15 Minuten. Voraussetzung ist ein aktuelles Debian 12 oder Ubuntu 24.04 LTS mit Docker Engine 27+ und dem Compose-Plugin.

apt update && apt install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh

Das Skript fragt nach dem Hostnamen (hier mail.example.com) und der Zeitzone (Europe/Berlin). Danach öffnest du mailcow.conf und setzt die wichtigsten Werte:

MAILCOW_HOSTNAME=mail.example.com
TZ=Europe/Berlin
HTTP_PORT=80
HTTPS_PORT=443
HTTP_BIND=0.0.0.0
HTTPS_BIND=0.0.0.0
SKIP_LETS_ENCRYPT=n
ENABLE_IPV6=n
SKIP_CLAMD=n
SKIP_SOGO=n
SKIP_FTS=n

Wer RAM sparen muss, setzt SKIP_CLAMD=y und verliert damit den Virenscanner – bei reinem Text-Mailverkehr vertretbar, sobald Anhänge konsequent geblockt werden. Ein zweiter Sparhebel ist SKIP_FTS=y, was die Volltextsuche in SOGo deaktiviert und rund 1 GB RAM freigibt.

Jetzt der Start. Der erste pull lädt etwa 2,5 GB an Images:

docker compose pull
docker compose up -d
docker compose ps

Nach 60 bis 90 Sekunden erreichst du die Admin-Oberfläche unter https://mail.example.com. Der Standard-Login lautet admin mit Passwort moohoo – ändere das sofort unter System → Administrator. Der Stack umfasst typischerweise 14 Container; fehlt einer, hilft docker compose logs --tail=50 <container>.

DNS vollständig konfigurieren: SPF, DKIM, DMARC, MTA-STS

Das ist der Abschnitt, an dem die meisten Installationen scheitern. Ohne vollständiges DNS-Setup ist dein Server technisch funktionsfähig, aber praktisch unbrauchbar. Lege folgende Records an – TTL überall 300 während der Einrichtung, später 3600:

TypNameWert
Amail.example.com203.0.113.42
MXexample.commail.example.com (Priorität 10)
TXTexample.comv=spf1 mx ~all
TXTdkim._domainkey.example.comv=DKIM1;k=rsa;p=MIIBIjANBg…
TXT_dmarc.example.comv=DMARC1; p=quarantine; rua=mailto:[email protected]; adkim=s; aspf=s
CNAMEautodiscover.example.commail.example.com
CNAMEautoconfig.example.commail.example.com
SRV_autodiscover._tcp.example.com0 0 443 mail.example.com

Den DKIM-Schlüssel generierst du nicht per Hand, sondern in der Mailcow-UI unter Konfiguration → Optionen → ARC/DKIM-Schlüssel → „DKIM-Schlüssel hinzufügen“. Wähle 2048 Bit und den Selektor dkim. Mailcow zeigt dir anschließend den fertigen TXT-Record zum Kopieren. Der private Schlüssel bleibt serverseitig unter /opt/mailcow-dockerized/data/dkim/ – sichere dieses Verzeichnis mit.

Beim SPF-Record gilt: ~all (Softfail) ist der sichere Start. Wechsle erst nach zwei bis vier Wochen sauberer Versandhistorie auf -all (Hardfail). Wer Mails über einen externen Newsletter-Dienst versendet, muss dessen Include ergänzen: v=spf1 mx include:_spf.anbieter.tld ~all. Vergiss nicht, dass SPF maximal 10 DNS-Lookups erlaubt – jeder include zählt.

Ergänzend solltest du MTA-STS und TLS-RPT aktivieren. Mailcow liefert die Policy-Datei automatisch unter https://mail.example.com/.well-known/mta-sts.txt aus. Der zugehörige TXT-Record lautet _mta-sts.example.com mit v=STSv1; id=20260101000000, plus _smtp._tls.example.com mit v=TLSRPTv1; rua=mailto:[email protected]. Das erzwingt verschlüsselte Zustellung und liefert dir Reports über TLS-Fehler.

Domains, Postfächer und Aliase anlegen

In der Mailcow-UI unter E-Mail → Domains fügst du deine Domain hinzu. Setze die Mailbox-Quota realistisch – 5 GB pro Nutzer sind 2026 üblich, bei Archivpostfächern 20 GB. Die Domain-Gesamtquota begrenzt den Speicherverbrauch und verhindert, dass ein Nutzer die Partition füllt.

Für jedes Postfach vergibst du ein starkes Passwort (mindestens 16 Zeichen) und aktivierst „TLS erzwingen“ sowie „Sieve-Filter erlauben“. Bei Aliassen unterscheidet Mailcow zwischen:

Für den Versand über externe Clients nutzt du SMTP auf Port 587 mit STARTTLS oder Port 465 mit implizitem TLS. Der Benutzername ist immer die vollständige E-Mail-Adresse. Thunderbird erkennt die Einstellungen über autoconfig automatisch, sobald die CNAME-Records oben gesetzt sind.

Ein oft vergessener Punkt: Rate Limits. Unter Konfiguration → Optionen → Rate Limits setzt du Standardwerte wie 20 Mails pro Minute und 500 pro Stunde pro Postfach. Das verhindert, dass ein kompromittiertes Konto deine IP innerhalb von Minuten auf sämtliche Blocklisten katapultiert.

Spamfilter mit Rspamd richtig einstellen

Rspamd ist Mailcows stärkstes Argument. Der Filter arbeitet mit Bayes-Klassifikation, Fuzzy-Hashing, DNSBL-Abfragen und DMARC-Auswertung. Standardmäßig lernt er nur aus manuell markierten Mails – deshalb solltest du die Lernfunktion aktivieren.

Richte zuerst das Bayes-Training ein. Lege im UI unter System → Konfiguration → Rspamd-Override zwei Postfächer an: [email protected] und [email protected]. Alle Mails, die dorthin kopiert werden, trainieren automatisch den Filter. Bei einer frischen Installation dauert es 200 bis 500 Mails, bis die Trefferquote über 95 % liegt.

Die wichtigsten Schwellwerte stehen in data/conf/rspamd/local.d/actions.conf:

reject = 15;
add_header = 6;
greylist = 4;

Ein reject-Wert von 15 ist konservativ und verhindert False Positives. Wer viele Spam-Mails erhält, kann auf 12 senken. Wichtiger als die Schwelle ist die Greylisting-Strategie: Mailcow aktiviert es per Default und verzögert unbekannte Absender um 5 bis 15 Minuten – das blockt rund 60 % aller Bot-Mails, ohne legitime Korrespondenz dauerhaft zu verlieren.

Ergänzend lohnt sich ein Blick auf die DNSBL-Konfiguration unter data/conf/rspamd/local.d/dnsbl.conf. Die voreingestellten Listen (Spamhaus ZEN, Barracuda, SORBS) sind gut gewählt. Füge uribl.spameatingmonkey.net hinzu, wenn du viel Link-Spam siehst. Achtung: Zu viele DNSBLs erhöhen die Scan-Zeit und produzieren False Positives.

Backup-Strategie: Was wirklich gesichert werden muss

Mailcow bringt ein Backup-Skript mit, das du unbedingt automatisieren solltest. Die drei relevanten Komponenten sind Datenbank (MariaDB), Maildirs und die Konfiguration inklusive DKIM-Schlüssel.

cd /opt/mailcow-dockerized
./helper-scripts/backup_and_restore.sh backup all

Das Skript legt ein Verzeichnis unter /opt/mailcow-dockerized/backup/ an. Bei 50 GB Maildaten dauert der Lauf 10 bis 25 Minuten und erzeugt etwa 15 GB komprimierte Daten. Plane ihn nachts per Cronjob:

0 3 * * * cd /opt/mailcow-dockerized && ./helper-scripts/backup_and_restore.sh backup all >> /var/log/mailcow-backup.log 2>&1

Entscheidend ist die 3-2-1-Regel: drei Kopien, zwei verschiedene Medien, eine extern. Nutze rsync oder restic, um das Backup-Verzeichnis auf einen zweiten Server oder in einen S3-kompatiblen Object Storage zu spiegeln. Bei Hetzner Storage Box (1 TB für 3,81 €/Monat) oder Wasabi (ab 6,99 $/TB) kostet die Absicherung weniger als ein Mittagessen.

Teste die Wiederherstellung bevor du sie brauchst. Der Restore läuft in drei Schritten: Stack stoppen, ./helper-scripts/backup_and_restore.sh restore ausführen, Stack starten. Ein ungetestetes Backup ist kein Backup.

Updates, Wartung und Monitoring

Mailcow veröffentlicht alle vier bis acht Wochen ein Update. Die Routine ist bewusst simpel gehalten:

cd /opt/mailcow-dockerized
./update.sh

Das Skript zieht neue Images, führt Datenbankmigrationen aus und startet den Stack neu. Die Ausfallzeit liegt typischerweise bei 30 bis 90 Sekunden – lege das Update in ein Wartungsfenster am frühen Morgen. Vor jedem Update gehört ein Backup dazu; das Skript fragt nicht danach.

Für Monitoring reicht ein externer Uptime-Check auf Port 443 plus ein Mail-Roundtrip-Test. Letzteren baust du mit einem Cronjob, der sich selbst eine Mail schickt und den Eingang prüft. Ergänzend lohnt sich docker stats als täglicher Blick: Ein Container, der dauerhaft über 80 % RAM liegt, ist ein Frühwarnsignal.

Logs findest du unter data/logs/. Postfix-Logs rotieren automatisch, Rspamd-Logs solltest du auf 14 Tage begrenzen. Bei Auffälligkeiten – etwa einem plötzlichen Anstieg ausgehender Mails – greifst du sofort ein: Postfach sperren, Passwort ändern, Logs auf SMTP-AUTH-Versuche prüfen.

Deliverability: IP-Reputation und Blocklisten

Ein frischer Server hat keine Reputation. Gmail und Microsoft bewerten neue IPs zunächst skeptisch, egal wie perfekt SPF und DKIM sind. Rechne mit vier bis acht Wochen Warmup-Zeit.

Die wichtigsten Maßnahmen: Versende in den ersten zwei Wochen maximal 50 Mails pro Tag, steigere wöchentlich um 50 %. Vermeide es, direkt nach der Installation Massenmails an unbekannte Empfänger zu schicken. Prüfe deine IP täglich auf den großen Blocklisten (Spamhaus, Barracuda, SpamCop, UCEPROTECT).

Richte einen Postmaster-Account ein und trage ihn in der DMARC-Policy als rua-Adresse ein. Die Reports zeigen dir, welche Server in deinem Namen senden – oft entdeckst du dabei vergessene Newsletter-Dienste oder alte Weiterleitungen.

Ein technischer Hebel, der viel bewirkt: Korrekte HELO-Namen. Postfix muss sich mit mail.example.com melden, nicht mit dem internen Container-Namen. Mailcow setzt das automatisch, wenn MAILCOW_HOSTNAME stimmt. Prüfe es mit einem Test an [email protected] – die Antwortmail enthält eine vollständige Auswertung von SPF, DKIM, DMARC und SpamAssassin-Score.

Mailcow vs. Alternativen: Der ehrliche Vergleich

LösungRAM-BedarfWeb-UIAufwand
Mailcow6–8 GBJa, sehr umfangreichMittel
Mailu2–4 GBJa, schlankerMittel
Mail-in-a-Box1–2 GBJa, minimalistischNiedrig
Poste.io1–2 GBJa (Free-Version limitiert)Niedrig
Google WorkspaceJaKeiner

Mailcow gewinnt bei Funktionsumfang und Multi-Domain-Verwaltung. Wer nur ein bis drei Postfächer für sich selbst braucht, ist mit Mail-in-a-Box oder einem Managed-Angebot oft besser bedient – der Wartungsaufwand von 3 bis 5 Stunden pro Monat bleibt bestehen, unabhängig von der Postfachzahl.

Für Teams ab 10 Nutzern mit Datenschutzanforderungen, mehreren Domains oder dem Wunsch nach vollständiger Datenhoheit ist Mailcow 2026 die klarste Wahl. Bei 15 Postfächern sparst du gegenüber Microsoft 365 rund 1.100 € pro Jahr – abzüglich etwa 100 € Serverkosten bleiben über 1.000 € übrig, die den Wartungsaufwand mehr als rechtfertigen.

FAQ

Wie viel RAM braucht Mailcow wirklich?

Die offizielle Angabe von 6 GB ist ein Minimum. Für den produktiven Betrieb mit ClamAV, Rspamd und SOGo solltest du 8 GB einplanen. Mit SKIP_CLAMD=y und SKIP_FTS=y läuft der Stack auch auf 4 GB stabil, dann fehlen aber Virenscan und Volltextsuche.

Warum landen meine Mails trotz SPF und DKIM im Spam?

In 80 % der Fälle fehlt der PTR-Eintrag (Reverse DNS) oder die IP steht auf einer Blockliste. Prüfe beides mit dig -x DEINE_IP und mxtoolbox.com. Weitere häufige Ursachen: fehlender DMARC-Record, falscher HELO-Name oder eine zu junge IP ohne Reputation. Plane vier bis acht Wochen Warmup ein.

Muss ich Port 25 freischalten lassen?

Ja. Die meisten Hoster (Hetzner, Netcup, Contabo, IONOS) sperren Port 25 standardmäßig gegen Spam-Missbrauch. Die Freischaltung erfolgt nach Identitätsprüfung, dauert je nach Anbieter zwischen zwei Stunden und drei Werktagen. Ohne Port 25 kannst du keine Mails von anderen Servern empfangen.

Kann ich Mailcow hinter einem Reverse Proxy betreiben?

Ja, aber nur mit Einschränkungen. Der vorgeschaltete Proxy muss die Ports 25, 465, 587, 143, 993 und 4190 als TCP-Stream durchreichen – das ist bei den meisten Web-Proxies nicht vorgesehen. Praktikabel ist es, nur HTTP/HTTPS über den Proxy zu leiten und die Mail-Ports direkt auf den Mailcow-Host zu binden.

Wie migriere ich bestehende Postfächer zu Mailcow?

Nutze imapsync oder die eingebaute Funktion „Mailbox migrieren“ in der Mailcow-UI. Für IMAP-zu-IMAP-Migrationen hat sich imapsync mit --useuid --delete2 bewährt. Plane bei 20 GB Daten etwa zwei bis vier Stunden pro Postfach ein und führe die Migration außerhalb der Geschäftszeiten durch.