Einleitung
Mailcow ist eine moderne, Docker-basierte Mailserver-Suite, die Postfix, Dovecot, Rspamd, ClamAV und eine Weboberfläche kombiniert.
Diese Anleitung zeigt dir eine saubere, reproduzierbare Installation auf Debian 12 inklusive sinnvoller Basis-Härtung.
Ziel:
- stabile Installation
- keine Portkonflikte
- saubere Docker-Integration
- minimale, aber effektive Absicherung
Voraussetzungen
Systemanforderungen
- Debian 12 (frisch installiert)
- mindestens 6 GB RAM + 1 GB Swap
- mindestens 20 GB freier Speicher
- feste öffentliche IP
- korrekt gesetzter FQDN (z. B.
mail.example.de)
DNS-Anforderungen (vorab setzen!)
| Typ | Wert |
|---|---|
| A | mail.example.de → SERVER_IP |
| MX | example.de → mail.example.de |
| PTR | SERVER_IP → mail.example.de |
| SPF | v=spf1 mx a -all |
| DMARC | v=DMARC1; p=reject |
1. System vorbereiten
apt update && apt upgrade -y
reboot
2. Hostname korrekt setzen
hostnamectl set-hostname mail.example.de
hostname -f
/etc/hosts anpassen:
127.0.0.1 localhost
127.0.1.1 mail.example.de mail
Validierung:
hostname -f
3. Basispakete installieren
apt install -y git curl jq openssl gawk coreutils grep
4. Ports prüfen (KRITISCH)
ss -tulpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
Wenn Output vorhanden → Konflikt!
Typische Störer entfernen:
systemctl stop postfix exim4 dovecot apache2 nginx 2>/dev/null || true
systemctl disable postfix exim4 dovecot apache2 nginx 2>/dev/null || true
5. Docker installieren
curl -sSL https://get.docker.com/ | sh
systemctl enable --now docker
Prüfen:
docker --version
docker compose version
6. Mailcow herunterladen
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
7. Konfiguration generieren
./generate_config.sh
Eingabe:
mail.example.de
8. Konfiguration optimieren (kleine Systeme)
nano mailcow.conf
Empfohlen bei kleinen VPS:
SKIP_CLAMD=y
SKIP_FTS=y
9. Firewall (Docker-kompatibel!)
Warum nicht einfach UFW?
Docker umgeht klassische INPUT-Regeln → daher DOCKER-USER Chain nutzen
Minimal sichere iptables-Regeln
apt install -y iptables-persistent
iptables -N DOCKER-USER 2>/dev/null || true
iptables -F DOCKER-USER
iptables -A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A DOCKER-USER -i lo -j ACCEPT
for port in 25 465 587 110 995 143 993 4190 80 443; do
iptables -A DOCKER-USER -p tcp --dport $port -j ACCEPT
done
iptables -A DOCKER-USER -j RETURN
netfilter-persistent save
10. Mailcow starten
docker compose pull
docker compose up -d
Status prüfen:
docker compose ps
Logs prüfen:
docker compose logs --tail=100
11. Zugriff
https://mail.example.de
Nach dem Login:
- Passwort ändern
- Admin absichern
12. Post-Installation (WICHTIG)
DKIM aktivieren
Mailcow UI → Domain → DKIM → DNS setzen
2FA aktivieren
Pflicht für Admin-Accounts
Mail testen
- mail-tester.com
- Gmail Test
- Outlook Test
13. Wartung
Update:
cd /opt/mailcow-dockerized
./update.sh
Troubleshooting
Port 25 bereits belegt
ss -tulpn | grep :25
Container starten nicht
docker compose logs
DNS Probleme
dig mx example.de
dig txt example.de