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.
Inhaltsverzeichnis
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
- Betriebssystem: Linux
- Server: Zum Beispiel von netcup
- Software:
- Docker: Installationsanleitung
- Docker Compose: Installationsanleitung
- Systemanforderungen:
- Mindestens: 512 MB RAM, 1 vCore
- Empfohlen: 2 GB RAM, 1 vCore
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 Port8080
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
- In der Weboberfläche zu
Settings > Server > Network
navigieren. - Im Feld Hostname den Mailserver-Hostnamen eintragen, z. B.
mail.meinedomain.de
. - Einstellungen speichern.
Domain hinzufügen
- Über
Management > Directory > Domains
den Punkt Create a new domain auswählen. - Im Feld Domain name die eigene Domain eingeben, z. B.
meinedomain.de
. - Die Einstellungen speichern.
DNS-Einträge konfigurieren
Nach dem Hinzufügen der Domain sind entsprechende DNS-Einträge beim Domain-Provider zu hinterlegen.
- Unter der jeweiligen Domain auf die drei Punkte (⋮) klicken und DNS Records auswählen.
- Dort erscheinen die erforderlichen DNS-Einträge.
- 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
- Host/Name:
- MX-Eintrag:
- Host/Name:
@
(oder leer) - Typ:
MX
- Priorität:
10
- Wert/Ziel:
mail.meinedomain.de
- Host/Name:
- SPF-Eintrag:
- Host/Name:
@
- Typ:
TXT
- Wert:
v=spf1 mx -all
- Host/Name:
- 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
- Host/Name:
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.
- Über
Settings > Server > TLS > ACME Providers
den Punkt Create a new ACME provider auswählen. - 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
.
- Directory ID: Beliebiger Name, z. B.
- 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.
- Die
docker-compose.yml
erneut öffnen:nano docker-compose.yml
- 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"
- Datei speichern und den Editor schließen.
- 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.
- In der Weboberfläche zu
Settings > Telemetry > Logging & Tracing
navigieren. - Create tracer auswählen.
- Folgende Felder ausfüllen:
- Tracer ID: Beliebiger Name, z. B.
Konsole
. - Method:
Console
.
- Tracer ID: Beliebiger Name, z. B.
- Einstellungen mit Save & Reload speichern.
6. Benutzerkonten anlegen
Konto erstellen
- Über
Management > Directory > Accounts
den Punkt Create a new account auswählen. - 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
.
- Login name: Gewünschter Benutzername, z. B.
- Optional weitere E-Mail-Adressen unter Aliases hinzufügen.
- Im Tab Authentication ein Passwort festlegen.
- 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.
- Ein weiteres Konto anlegen:
- Login name:
postmaster
- Name:
Postmaster
- Email:
postmaster@meinedomain.de
- Login name:
- 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
- Server:
- SMTP (Ausgang):
- Server:
mail.meinedomain.de
- Port:
465
- Verschlüsselung: SSL/TLS
- Server:
- 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:
- Die Webseite aufrufen und die angegebene E-Mail-Adresse kopieren.
- Eine E-Mail vom neu eingerichteten Mailserver an diese Adresse senden.
- 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!
Pingback: Eigenen Mailserver mit Docker installieren | Christian Eirich