Mailcow in einem LXC-Container mit Reverse Proxy und Konfliktlösung

Inhaltsverzeichnis

  1. Voraussetzungen
    1.1 Hostsystem (z. B. Ubuntu/Debian mit LXC-Support)
    1.2 Rootserver/VPS mit öffentlicher IP
    1.3 DNS-Zugriff auf Mail-Domain
  2. LXC-Container vorbereiten
    2.1 Container erstellen
    2.2 Netzwerkzugriff via lxcbr0 oder macvlan
    2.3 Container absichern (Memory, CPU, Autostart)
  3. Mailcow installieren
    3.1 Git-Repository klonen
    3.2 .env und mailcow.conf anpassen (inkl. HTTP_BIND/HTTPS_BIND auf 10.x.x.x)
    3.3 Docker & Docker Compose installieren
    3.4 Mailcow starten
  4. Reverse Proxy auf dem Host einrichten
    4.1 Nginx oder Traefik auf dem Host
    4.2 Portweiterleitung 80/443 an LXC:8080/8443
    4.3 Let’s Encrypt-Zertifikate (ggf. automatisiert)
  5. Firewall- und iptables-Konfiguration
    5.1 UFW oder iptables-Regeln setzen
    5.2 NAT-Regeln für Port 25, 587, 465 (SMTP) an Container weiterleiten
    5.3 Regelpersistenz mit iptables-persistent
  6. DNS richtig konfigurieren
    6.1 A- und MX-Records
    6.2 SPF-Record
    6.3 DKIM & DMARC
    6.4 PTR-Record (Reverse DNS)
  7. Testen & Debugging
    7.1 telnet, curl, openssl s_client
    7.2 docker compose logs für einzelne Container
    7.3 doveadm-Kommandos für Postfächer prüfen
    7.4 tcpdump zur Netzwerkverfolgung
  8. Typische Probleme & Lösungen
    8.1 Mail kommt an, aber ist im Spam
    8.2 SMTP von außen nicht erreichbar
    8.3 Port 25 durch Provider blockiert
    8.4 Posteingang im UI leer trotz erfolgreicher Zustellung
    8.5 Konflikt mit anderen Diensten auf Port 443/80
  9. Best Practices für Produktivbetrieb
    9.1 TLS-Härtung
    9.2 Fail2Ban aktivieren
    9.3 Backups (MySQL, Mailvolumes, Konfiguration)
    9.4 Monitoring (z. B. mit Uptime Kuma, Prometheus)
  10. Erweiterungen & Integrationen
    10.1 Mailcow-API nutzen
    10.2 Chatwoot- oder CRM-Systeme anbinden
    10.3 Webmail-Weiterleitung oder Aliasdomains konfigurieren

1. Voraussetzungen

Ein funktionierender Mailcow-Server benötigt einige grundlegende Voraussetzungen. Diese betreffen sowohl die Infrastruktur als auch die Konfiguration deiner Domain. Nachfolgend findest du eine Übersicht der notwendigen Bedingungen:

1.1 Hostsystem

Das Hostsystem sollte ein aktuelles Linux-Betriebssystem mit LXC-Support sein. Empfohlen wird:

  • Ubuntu 22.04 LTS oder neuer
  • Debian 11 (Bullseye) oder neuer
  • Installierte Pakete:
    • lxc, lxd, bridge-utils, iptables, ufw
  • Konfiguration eines funktionierenden LXC-Netzwerks, z. B. über lxcbr0

Hinweis: LXD kann separat installiert werden, sollte aber konfiguriert sein, um Container starten zu können. Du solltest wissen, wie man Container erstellt, startet und Netzwerkanbindungen prüft.


1.2 Rootserver oder leistungsfähiger VPS

Du benötigst einen Server mit öffentlicher IPv4-Adresse, auf dem du ohne Einschränkungen durch Firewalls oder NAT-Regeln Standard-Mailports (25, 465, 587, 993, 995, 443, 80) verwenden kannst.

Empfehlungen:

  • mindestens 2 vCPU / 4 GB RAM
  • 20–40 GB SSD
  • Volle Root-Zugriffsrechte
  • Zugriff auf UFW oder iptables

Wenn dein Provider Port 25 blockiert, ist der Empfang von E-Mails nicht möglich. Alternativen wie SMTP-Relays (nur für ausgehende Mails) helfen da nicht weiter.


1.3 DNS-Zugriff auf die Mail-Domain

Für den Mailserver benötigst du vollen Zugriff auf die DNS-Zone deiner Domain, da du folgende Einträge setzen musst:

  • A-Record: mail.domain.tld → <deine Server-IP>
  • MX-Record: domain.tld → mail.domain.tld (Prio: 10)
  • PTR-Record: muss beim Hoster auf mail.domain.tld zeigen
  • SPF-Eintrag: z. B. v=spf1 mx -all
  • DKIM und DMARC-Einträge: werden von Mailcow bereitgestellt

Bei vielen DNS-Anbietern kannst du das über ein Webinterface verwalten. Falls du keine Kontrolle über die Zone hast, kann der Mailserver nicht korrekt betrieben werden.

WordPress Cookie Plugin von Real Cookie Banner