Eigener Mailserver mit Stalwart Mail Server und Docker

Stalwart Mail Server ist ein moderner, in Rust geschriebener Open-Source Mailserver. Er unterstützt unter anderem JMAP, IMAP4, POP3 und SMTP und zeichnet sich durch hohe Sicherheit, Leistungsfähigkeit und Skalierbarkeit aus. Mit Docker lässt sich someit ein eigener Mailserver schnell und unkompliziert einrichten und konfigurieren, sodass volle Kontrolle über E-Mails gewonnen und eine Unabhängigkeit von Drittanbietern erreicht wird.

Im Folgenden gibt es eine Schritt-für-Schritt-Anleitung zur Installation und Konfiguration.

Wichtige Features des Stalwart Mail Servers

  • Vielseitige Protokollunterstützung: JMAP, IMAP4, POP3, ManageSieve und SMTP stehen zur Verfügung.
  • Moderne Sicherheitsstandards: DMARC, DKIM, SPF, ARC, TLS/SSL, MTA-STS, DANE und automatisierte TLS-Zertifikate (ACME) sind integriert.
  • Leistungsfähiger Spam- und Phishing-Schutz: DNS-Blocklists (DNSBLs), Greylisting und viele weitere Filterfunktionen.
  • Skalierbarkeit und Flexibilität: Pluggable Storage Backends (z. B. RocksDB, PostgreSQL oder S3), Clustering-Support und Full-Text-Suche in mehreren Sprachen.
  • Sichere Architektur dank Rust: Speicher- und Typsicherheit verringern typische Sicherheitsrisiken.
  • Webbasierte Verwaltung: Ein ansprechendes Dashboard erlaubt die Kontrolle über Accounts, Domains, Mailinglisten und vieles mehr.

Voraussetzungen


1. Vorbereitung

Ordner anlegen

Ein Verzeichnis für die Mailserver-Konfiguration anlegen und in dieses wechseln:

mkdir -p /opt/containers/stalwart-mailserver
cd /opt/containers/stalwart-mailserver

2. Mailserver installieren

Docker Compose Datei erstellen

Eine Datei namens docker-compose.yml erstellen:

nano docker-compose.yml

Der folgende Inhalt wird eingefügt:

version: '3'

services:
  stalwart-mail:
    image: stalwartlabs/mail-server:latest
    container_name: stalwart-mail
    restart: unless-stopped
    volumes:
      - ./data:/opt/stalwart-mail
    ports:
      - "25:25"     # SMTP
      - "465:465"   # SMTPS (SMTP über SSL/TLS)
      - "993:993"   # IMAPS (IMAP über SSL/TLS)
      - "8080:8080" # Stalwart Web-Admin-Oberfläche (HTTP)
      - "443:443"   # HTTPS für Web-Admin-Oberfläche

Hinweis: Port 8080 wird initial benötigt, um auf die Weboberfläche zuzugreifen, bevor das TLS-Zertifikat eingerichtet ist.

Die Datei kann mit STRG + O gespeichert und mit STRG + X geschlossen werden.


3. Mailserver starten

Der Docker-Container wird mit folgendem Befehl im Hintergrund gestartet:

docker compose up -d

Der Stalwart Mail Server läuft nun im Hintergrund.


4. Administrator-Konto und Passwort abrufen

Für das Administrator-Konto wird ein zufälliges Passwort generiert. Mit folgendem Befehl lassen sich die Anmeldedaten auslesen:

docker logs stalwart-mail

Es erscheint eine Ausgabe ähnlicher Form:

✅ Configuration file written to /opt/stalwart-mail/etc/config.toml
🔑 Your administrator account is 'admin' with password 'zufälliges_passwort'.

Das Passwort wird nur einmal angezeigt, deshalb sollte es notiert werden.


5. Mailserver konfigurieren

Auf die Weboberfläche zugreifen

Im Webbrowser die folgende Adresse aufrufen:

http://mail.meinedomain.de:8080/login

Hinweise:

  • meinedomain.de durch die eigene Domain ersetzen.
  • Da das TLS-Zertifikat noch nicht eingerichtet ist, wird zunächst http und Port 8080 verwendet.
  • DNS-A-Eintrag für mail.meinedomain.de sollte auf die IP-Adresse des Mailservers verweisen.

Anmeldedaten: Benutzername admin und das zuvor generierte Passwort.


Hostname festlegen

  1. In der Weboberfläche zu Settings > Server > Network navigieren.
  2. Im Feld Hostname den Mailserver-Hostnamen eintragen, z. B. mail.meinedomain.de.
  3. Einstellungen speichern.

Domain hinzufügen

  1. Über Management > Directory > Domains den Punkt Create a new domain auswählen.
  2. Im Feld Domain name die eigene Domain eingeben, z. B. meinedomain.de.
  3. Die Einstellungen speichern.

DNS-Einträge konfigurieren

Nach dem Hinzufügen der Domain sind entsprechende DNS-Einträge beim Domain-Provider zu hinterlegen.

  1. Unter der jeweiligen Domain auf die drei Punkte () klicken und DNS Records auswählen.
  2. Dort erscheinen die erforderlichen DNS-Einträge.
  3. Zusätzlich muss ein A-Eintrag für mail.meinedomain.de mit der IP-Adresse des Mailservers angelegt werden.

Beispiel für DNS-Einträge:

  • A-Eintrag für mail.meinedomain.de:
    • Host/Name: mail
    • Typ: A
    • Wert/Ziel: IP-Adresse des Mailservers
  • MX-Eintrag:
    • Host/Name: @ (oder leer)
    • Typ: MX
    • Priorität: 10
    • Wert/Ziel: mail.meinedomain.de
  • SPF-Eintrag:
    • Host/Name: @
    • Typ: TXT
    • Wert: v=spf1 mx -all
  • DKIM-Einträge:
    • Die angezeigten TXT-Einträge aus der Weboberfläche kopieren und in die eigene DNS-Zone eintragen.
  • DMARC-Eintrag:
    • Host/Name: _dmarc
    • Typ: TXT
    • Wert: v=DMARC1; p=reject; rua=mailto:postmaster@meinedomain.de

Hinweis: Die genauen Werte finden sich in der Weboberfläche unter DNS Records.


TLS einrichten

Der Stalwart Mail Server kann automatisch TLS-Zertifikate über Let’s Encrypt beziehen.

  1. Über Settings > Server > TLS > ACME Providers den Punkt Create a new ACME provider auswählen.
  2. Folgende Felder ausfüllen:
    • Directory ID: Beliebiger Name, z. B. default.
    • Default provider: Aktivieren.
    • Contact Email: Eine E-Mail-Adresse, z. B. postmaster@meinedomain.de.
    • Challenge Type: tls-alpn-01
    • Subject Names: Den Mailserver-Hostnamen eintragen, z. B. mail.meinedomain.de.
  3. Einstellungen mit Save changes speichern.

Hinweise:

  • Das Feld Directory ID dient als Bezeichner für die ACME-Konfiguration.
  • Mit tls-alpn-01 erfolgt die Validierung über Port 443.
  • Port 443 muss in der Firewall geöffnet sein.

Mailserver neu starten und Port 8080 entfernen

Sobald das TLS-Zertifikat erfolgreich bezogen wurde, kann Port 8080 entfernt werden, um die Weboberfläche nur noch verschlüsselt bereitzustellen.

  1. Die docker-compose.yml erneut öffnen:
    nano docker-compose.yml
  2. Die Zeile mit Port 8080 entfernen oder auskommentieren:
    ports:
      - "25:25"
      - "465:465"
      - "993:993"
      # - "8080:8080" # Dieser Port kann jetzt entfernt werden
      - "443:443"
  3. Datei speichern und den Editor schließen.
  4. Den Mailserver neu starten:
    docker compose up -d

Auf die Weboberfläche über HTTPS zugreifen

Nach erfolgreichem Bezug des Zertifikats und Entfernung von Port 8080 steht die Weboberfläche über HTTPS zur Verfügung:

https://mail.meinedomain.de/login

Logging konfigurieren

Um Logs direkt mit docker logs erfassen zu können, lässt sich die Protokollierung auf die Konsole umleiten.

  1. In der Weboberfläche zu Settings > Telemetry > Logging & Tracing navigieren.
  2. Create tracer auswählen.
  3. Folgende Felder ausfüllen:
    • Tracer ID: Beliebiger Name, z. B. Konsole.
    • Method: Console.
  4. Einstellungen mit Save & Reload speichern.

6. Benutzerkonten anlegen

Konto erstellen

  1. Über Management > Directory > Accounts den Punkt Create a new account auswählen.
  2. Folgende Felder ausfüllen:
    • Login name: Gewünschter Benutzername, z. B. benutzername.
    • Name: Vollständiger Name des Kontos, z. B. Max Mustermann.
    • Email: Eigene Domain auswählen und den lokalen Teil eintragen, z. B. benutzername.
  3. Optional weitere E-Mail-Adressen unter Aliases hinzufügen.
  4. Im Tab Authentication ein Passwort festlegen.
  5. Das Konto speichern.

Hinweis: Es ist empfehlenswert, den Login name und die Email gleich zu halten, um Verwirrung zu vermeiden.

Postmaster-Konto erstellen

Gemäß RFC benötigt jede Domain eine gültige postmaster-Adresse.

  1. Ein weiteres Konto anlegen:
    • Login name: postmaster
    • Name: Postmaster
    • Email: postmaster@meinedomain.de
  2. Ein Passwort festlegen.

Hinweis: Die postmaster-Adresse dient administrativen Zwecken und sollte existieren, um die Zustellbarkeit zu verbessern.


7. E-Mail-Client konfigurieren

Das E-Mail-Konto kann in einem bevorzugten E-Mail-Client (z. B. Thunderbird oder Outlook) eingerichtet werden:

  • IMAP (Eingang):
    • Server: mail.meinedomain.de
    • Port: 993
    • Verschlüsselung: SSL/TLS
  • SMTP (Ausgang):
    • Server: mail.meinedomain.de
    • Port: 465
    • Verschlüsselung: SSL/TLS
  • Benutzername: Die vollständige E-Mail-Adresse, z. B. benutzername@meinedomain.de
  • Passwort: Das in der Kontoerstellung festgelegte Passwort

8. Mailserver testen

E-Mail versenden und empfangen

  • Eine Test-E-Mail an eine externe Adresse (z. B. Gmail) senden.
  • Prüfen, ob die E-Mail erfolgreich zugestellt wurde.
  • Auf die Test-E-Mail antworten und sicherstellen, dass sie empfangen wird.

Mailserver-Konfiguration überprüfen

Dienste wie Mail Tester helfen bei der Überprüfung:

  1. Die Webseite aufrufen und die angegebene E-Mail-Adresse kopieren.
  2. Eine E-Mail vom neu eingerichteten Mailserver an diese Adresse senden.
  3. Auf „Ergebnis anzeigen“ klicken und die Bewertung prüfen.

Ein Score von 10 Punkten deutet auf eine korrekte Konfiguration hin.


9. Wichtige Hinweise

  • DNS-Propagation: Die Änderungen können bis zu 24 Stunden benötigen, um weltweit wirksam zu werden.
  • Sicherheit:
    • Das zufällig generierte Admin-Passwort sollte nach dem ersten Login geändert werden.
    • Starke Passwörter für alle Benutzer sind empfehlenswert.
  • Backups: Regelmäßige Backups der Mailserver-Daten erstellen.
  • Updates: Stalwart Mail Server und Docker-Container aktuell halten.
  • Logdateien überwachen: Mit docker logs stalwart-mail können die Logs eingesehen und auf ungewöhnliche Aktivitäten geprüft werden.

10. Fazit

Mit dem Stalwart Mail Server und Docker lässt sich ein leistungsfähiger und sicherer Mailserver in kurzer Zeit aufsetzen. Die intuitive Weboberfläche erleichtert die Verwaltung, und durch die Verwendung von TLS bleiben E-Mails sicher verschlüsselt. Es empfiehlt sich, den Server regelmäßig zu warten und Sicherheitsupdates zeitnah einzuspielen.


11. Quellen

Bei Fragen oder Bedarf an Unterstützung kann gerne Kontakt aufgenommen werden. Viel Erfolg mit dem eigenen Mailserver!

1 Kommentar zu „Eigener Mailserver mit Stalwart Mail Server und Docker“

  1. Pingback: Eigenen Mailserver mit Docker installieren | Christian Eirich

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen