Mailcow Email Server Installation
Mailcow E-Mail-Server Installation
Mailcow ist eine leistungsstarke, Docker-basierte E-Mail-Server-Lösung, die alle wichtigen Komponenten für einen professionellen Mailserver mitbringt: Postfix, Dovecot, SOGo Webmail, Rspamd Anti-Spam, ClamAV Anti-Virus und eine moderne Admin-Oberfläche.
Systemanforderungen
Bevor Sie mit der Installation beginnen, stellen Sie sicher, dass Ihr Server die folgenden Mindestanforderungen erfüllt:
| Komponente | Minimum | Empfohlen |
|---|---|---|
| CPU | 2 Kerne | 4+ Kerne |
| RAM | 4 GB | 8+ GB |
| Festplatte | 20 GB SSD | 50+ GB SSD |
| Betriebssystem | Ubuntu 22.04/24.04 LTS, Debian 11/12 | |
| Docker | Docker CE 24.x oder höher | |
| Docker Compose | v2.x (Plugin) | |
⚠️ Achtung: Der Server benötigt eine dedizierte öffentliche IP-Adresse. Shared Hosting oder NAT-Verbindungen sind für einen Mailserver nicht geeignet.
Vorbereitungen
Hostname konfigurieren
Setzen Sie den korrekten Hostnamen für Ihren Server. Dieser muss als FQDN (Fully Qualified Domain Name) konfiguriert sein:
# Hostname setzen
sudo hostnamectl set-hostname mail.ihredomain.de
# /etc/hosts anpassen
sudo nano /etc/hosts
Fügen Sie folgende Zeile hinzu:
123.456.789.10 mail.ihredomain.de mail
DNS-Einträge konfigurieren
Die folgenden DNS-Einträge müssen bei Ihrem Domain-Provider konfiguriert werden:
| Typ | Name | Wert | Priorität |
|---|---|---|---|
| A | 123.456.789.10 | - | |
| AAAA | 2001:db8::1 (falls IPv6) | - | |
| MX | @ | mail.ihredomain.de | 10 |
| CNAME | autodiscover | mail.ihredomain.de | - |
| CNAME | autoconfig | mail.ihredomain.de | - |
| TXT | @ | v=spf1 mx a -all | - |
| TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:postmaster@ihredomain.de | - |
💡 Tipp: Der DKIM-Eintrag wird nach der Installation automatisch generiert und kann dann aus der Mailcow-Oberfläche kopiert werden.
Reverse DNS (PTR-Record)
Kontaktieren Sie Ihren Hosting-Provider, um einen PTR-Record für Ihre IP-Adresse einrichten zu lassen. Der PTR-Record muss auf mail.ihredomain.de zeigen. Dies ist für die E-Mail-Zustellung essentiell.
Docker Installation
System aktualisieren
# Paketlisten aktualisieren und System upgraden
sudo apt update && sudo apt upgrade -y
# Erforderliche Pakete installieren
sudo apt install -y curl git apt-transport-https ca-certificates gnupg lsb-release
Docker CE installieren
# Docker GPG-Key hinzufügen
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Docker Repository hinzufügen
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker installieren
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Docker beim Systemstart aktivieren
sudo systemctl enable docker
sudo systemctl start docker
Docker Installation prüfen
# Docker Version prüfen
docker --version
# Docker Compose Version prüfen
docker compose version
# Testcontainer ausführen
sudo docker run hello-world
Firewall konfigurieren
Öffnen Sie die folgenden Ports für den Mailserver:
# UFW installieren (falls nicht vorhanden)
sudo apt install -y ufw
# Standard-Regeln setzen
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH erlauben (wichtig!)
sudo ufw allow 22/tcp
# HTTP und HTTPS für Webmail und Admin
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# SMTP-Ports
sudo ufw allow 25/tcp # SMTP
sudo ufw allow 465/tcp # SMTPS (Submission over TLS)
sudo ufw allow 587/tcp # Submission (STARTTLS)
# IMAP-Ports
sudo ufw allow 143/tcp # IMAP (STARTTLS)
sudo ufw allow 993/tcp # IMAPS
# POP3-Ports (optional)
sudo ufw allow 110/tcp # POP3 (STARTTLS)
sudo ufw allow 995/tcp # POP3S
# Sieve (Filterregeln)
sudo ufw allow 4190/tcp
# Firewall aktivieren
sudo ufw enable
# Status prüfen
sudo ufw status verbose
| Port | Protokoll | Beschreibung |
|---|---|---|
| 25 | SMTP | E-Mail-Empfang von anderen Servern |
| 80/443 | HTTP/HTTPS | Webmail & Admin-Oberfläche |
| 465 | SMTPS | E-Mail-Versand (SSL/TLS) |
| 587 | Submission | E-Mail-Versand (STARTTLS) |
| 993 | IMAPS | E-Mail-Abruf via IMAP |
| 995 | POP3S | E-Mail-Abruf via POP3 |
| 4190 | Sieve | Serverseitige Filterregeln |
Mailcow Installation
Mailcow herunterladen
# In das /opt Verzeichnis wechseln
cd /opt
# Mailcow Repository klonen
sudo git clone https://github.com/mailcow/mailcow-dockerized
# In das Mailcow-Verzeichnis wechseln
cd mailcow-dockerized
Konfiguration generieren
# Konfigurationsassistent starten
sudo ./generate_config.sh
Der Assistent fragt nach folgenden Informationen:
- Mail server hostname (FQDN)
- Geben Sie hier Ihren vollständigen Hostnamen ein, z.B.
mail.ihredomain.de - Timezone
- Für Deutschland:
Europe/Berlin - Which branch should Mailcow use?
- Wählen Sie
masterfür die stabile Version
Konfiguration anpassen (optional)
# mailcow.conf bearbeiten
sudo nano mailcow.conf
Wichtige Einstellungen in der mailcow.conf:
# Hostname
MAILCOW_HOSTNAME=mail.ihredomain.de
# Zeitzone
TZ=Europe/Berlin
# HTTP/HTTPS Ports (Standard: 80/443)
HTTP_PORT=80
HTTPS_PORT=443
# Zusätzliche SAN-Domains für SSL
ADDITIONAL_SAN=autodiscover.ihredomain.de,autoconfig.ihredomain.de
# Skip Let's Encrypt (falls eigene Zertifikate)
SKIP_LETS_ENCRYPT=n
# Clamd Memory Limit (bei wenig RAM reduzieren)
CLAMD_MILTER_MEMORY=256M
Container starten
# Container herunterladen und starten
sudo docker compose pull
sudo docker compose up -d
ℹ️ Info: Der erste Start kann 5-10 Minuten dauern, da alle Container heruntergeladen und initialisiert werden müssen.
Installation prüfen
# Status der Container prüfen
sudo docker compose ps
# Logs überwachen
sudo docker compose logs -f
Erste Schritte nach der Installation
Admin-Oberfläche aufrufen
Öffnen Sie einen Browser und navigieren Sie zu:
https://mail.ihredomain.de
Standard-Zugangsdaten:
| Feld | Wert |
|---|---|
| Benutzername | admin |
| Passwort | moohoo |
Administrator-Passwort ändern
- Klicken Sie oben rechts auf "Admin"
- Wählen Sie "Edit"
- Geben Sie ein neues, sicheres Passwort ein
- Speichern Sie die Änderungen
Domain hinzufügen
- Navigieren Sie zu E-Mail → Configuration → Domains
- Klicken Sie auf "Add domain"
- Geben Sie Ihre Domain ein (z.B.
ihredomain.de) - Konfigurieren Sie die gewünschten Limits
- Klicken Sie auf "Add domain and restart SOGo"
DKIM-Key kopieren
Nach dem Hinzufügen der Domain:
- Gehen Sie zu E-Mail → Configuration → Domains
- Klicken Sie auf den DKIM-Button (Schlüssel-Symbol) neben Ihrer Domain
- Kopieren Sie den angezeigten TXT-Record
- Fügen Sie diesen bei Ihrem DNS-Provider hinzu
Der DNS-Eintrag sieht etwa so aus:
Name: dkim._domainkey.ihredomain.de
Type: TXT
Value: v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkq...
Postfach erstellen
- Navigieren Sie zu E-Mail → Configuration → Mailboxes
- Klicken Sie auf "Add mailbox"
- Füllen Sie die Felder aus:
- Username: z.B.
info - Domain: Ihre Domain wählen
- Full name: Anzeigename
- Password: Sicheres Passwort
- Quota: Speicherplatz in MB (0 = unbegrenzt)
- Username: z.B.
- Klicken Sie auf "Add"
Webmail-Zugang (SOGo)
Benutzer können sich im Webmail anmelden unter:
https://mail.ihredomain.de/SOGo
Login-Daten:
- Benutzername: Vollständige E-Mail-Adresse (z.B.
info@ihredomain.de) - Passwort: Das bei der Postfacherstellung vergebene Passwort
E-Mail-Client Einrichtung
Für die Einrichtung in E-Mail-Programmen wie Outlook, Thunderbird oder Apple Mail:
| Einstellung | Wert |
|---|---|
| IMAP-Server | mail.ihredomain.de |
| IMAP-Port | 993 (SSL/TLS) |
| SMTP-Server | mail.ihredomain.de |
| SMTP-Port | 465 (SSL/TLS) oder 587 (STARTTLS) |
| Benutzername | Vollständige E-Mail-Adresse |
| Authentifizierung | Normal password |
💡 Tipp: Dank der AutoDiscover/AutoConfig-Einträge werden viele E-Mail-Clients die Einstellungen automatisch erkennen.
Wartung und Updates
Mailcow aktualisieren
# In das Mailcow-Verzeichnis wechseln
cd /opt/mailcow-dockerized
# Update-Script ausführen
sudo ./update.sh
Das Update-Script führt automatisch folgende Schritte aus:
- Backup der aktuellen Konfiguration
- Download der neuesten Version
- Container stoppen
- Neue Container herunterladen
- Container neu starten
Container-Status prüfen
# Alle Container anzeigen
sudo docker compose ps
# Logs eines bestimmten Containers
sudo docker compose logs -f postfix-mailcow
sudo docker compose logs -f dovecot-mailcow
sudo docker compose logs -f nginx-mailcow
Container neu starten
# Alle Container neustarten
sudo docker compose restart
# Einzelnen Container neustarten
sudo docker compose restart postfix-mailcow
Mailcow stoppen und starten
# Mailcow stoppen
sudo docker compose down
# Mailcow starten
sudo docker compose up -d
Backup einrichten
Manuelles Backup
# Backup-Script ausführen
cd /opt/mailcow-dockerized
sudo ./helper-scripts/backup_and_restore.sh backup all
Das Backup wird standardmäßig in /opt/mailcow-dockerized/backup gespeichert.
Automatisches Backup (Cronjob)
# Crontab bearbeiten
sudo crontab -e
# Tägliches Backup um 3:00 Uhr
0 3 * * * cd /opt/mailcow-dockerized && ./helper-scripts/backup_and_restore.sh backup all --delete-days 7
Backup wiederherstellen
# Verfügbare Backups anzeigen
sudo ./helper-scripts/backup_and_restore.sh restore
# Bestimmtes Backup wiederherstellen
sudo ./helper-scripts/backup_and_restore.sh restore all BACKUP_ORDNER
SSL-Zertifikate
Let's Encrypt (Standard)
Mailcow nutzt standardmäßig Let's Encrypt für kostenlose SSL-Zertifikate. Diese werden automatisch erneuert.
# Zertifikat-Status prüfen
sudo docker compose exec acme-mailcow openssl x509 -in /var/lib/acme/cert.pem -noout -dates
Zertifikat manuell erneuern
# ACME-Container neustarten
sudo docker compose restart acme-mailcow
# Logs prüfen
sudo docker compose logs -f acme-mailcow
Eigene Zertifikate verwenden
Wenn Sie eigene Zertifikate verwenden möchten:
- Setzen Sie
SKIP_LETS_ENCRYPT=yin dermailcow.conf - Kopieren Sie Ihre Zertifikate nach:
data/assets/ssl/cert.pem(Zertifikat)data/assets/ssl/key.pem(Private Key)
- Starten Sie die Container neu:
sudo docker compose restart
Sicherheit
Fail2Ban aktivieren
Mailcow enthält bereits eine integrierte Netfilter-Lösung. In der Admin-Oberfläche:
- Navigieren Sie zu System → Configuration → Fail2Ban Parameters
- Aktivieren Sie Fail2Ban
- Konfigurieren Sie:
- Ban time: Sperrzeit in Sekunden (Standard: 86400 = 24h)
- Max attempts: Maximale Fehlversuche (Standard: 10)
- Retry window: Zeitfenster für Versuche (Standard: 600)
Gesperrte IPs verwalten
# Gesperrte IPs anzeigen
sudo docker compose exec netfilter-mailcow nft list set ip filter f2b-blacklist
# IP entsperren
sudo docker compose exec netfilter-mailcow nft delete element ip filter f2b-blacklist { 1.2.3.4 }
Zwei-Faktor-Authentifizierung
Für zusätzliche Sicherheit können Benutzer 2FA aktivieren:
- Benutzer meldet sich im Webmail an
- Klick auf Benutzername → "Edit"
- Unter "Two-Factor Authentication" TOTP aktivieren
- QR-Code mit Authenticator-App scannen
Problemlösungen
E-Mails werden nicht zugestellt
Prüfen Sie folgende Punkte:
- DNS-Einträge korrekt gesetzt (MX, SPF, DKIM, DMARC)?
- PTR-Record (Reverse DNS) konfiguriert?
- Firewall-Ports geöffnet?
- IP auf Blacklist? Prüfen unter: MXToolbox Blacklist Check
# Postfix-Logs prüfen
sudo docker compose logs -f postfix-mailcow
# Mail-Queue anzeigen
sudo docker compose exec postfix-mailcow postqueue -p
SSL-Zertifikat wird nicht ausgestellt
# ACME-Logs prüfen
sudo docker compose logs acme-mailcow
# DNS prüfen
dig +short mail.ihredomain.de A
dig +short mail.ihredomain.de AAAA
Häufige Ursachen:
- Port 80 nicht erreichbar (HTTP-Challenge)
- DNS-Einträge noch nicht propagiert
- Rate-Limit bei Let's Encrypt erreicht
Container startet nicht
# Container-Status prüfen
sudo docker compose ps
# Logs des problematischen Containers
sudo docker compose logs CONTAINER_NAME
# Container neu erstellen
sudo docker compose up -d --force-recreate CONTAINER_NAME
Speicherplatz prüfen
# Docker-Speicherverbrauch
sudo docker system df
# Nicht verwendete Ressourcen bereinigen
sudo docker system prune -a
# Speicherplatz der Mail-Daten
du -sh /opt/mailcow-dockerized/data/
Nützliche Befehle
| Aktion | Befehl |
|---|---|
| Alle Container anzeigen | sudo docker compose ps |
| Logs aller Container | sudo docker compose logs -f |
| Mailcow starten | sudo docker compose up -d |
| Mailcow stoppen | sudo docker compose down |
| Mailcow neustarten | sudo docker compose restart |
| Mailcow aktualisieren | sudo ./update.sh |
| Backup erstellen | sudo ./helper-scripts/backup_and_restore.sh backup all |
| Mail-Queue anzeigen | sudo docker compose exec postfix-mailcow postqueue -p |
| Mail-Queue leeren | sudo docker compose exec postfix-mailcow postsuper -d ALL |
Weitere Hilfe
Bei Fragen oder Problemen stehen folgende Ressourcen zur Verfügung:
- 📚 Offizielle Mailcow Dokumentation
- 💬 Mailcow Community Forum
- 🐙 GitHub Repository
- 🐦 Mailcow auf Twitter
💡 Tipp: Die Mailcow-Community ist sehr aktiv und hilfsbereit. Bei Problemen lohnt sich ein Blick ins Forum oder die GitHub Issues.