Eigenen E-Mail-Server mit Stalwart

Heutzutage seine Mails selbst vom eigenen Server zu verschicken ist sogar für Profis oftmals etwas, dass einfach keinen Spaß macht. Viele Details, viele Konfigurationen, Sicherheitsaspekte und eine "saubere" IP-Adresse können einen schnell in den Wahnsinn treiben. Aber vielleicht geht das auch einfacher und gleich noch mit zukunftsweisenden Funktionen wie JMAP. Daher folgt nun ein kurzer Guide zum selbsthosten von Stalwart.
Vorab, ich respektiere und bin ebenfalls ein riesen Fan von Mailcow. Die meisten Erklärungen in diesem Beitrag kann man auch mit Mailcow umsetzen. Mein Augenmerk richtet sich hier allerdings auf Stalwart, welches als Open Source Projekt mit optionalen aber nicht notwendigen Premium Features angesehen werden kann.

Vorbereitung
Zunächst geht es um die Planung der Hardware, hier muss jedem klar sein, dass ein Mailserver besser nicht ins Heimnetz gehört. Was am Wechsel der Ipv4 Adressen eures ISP liegt. Es kann nämlich schnell mal passieren, dass ihr eine vermeintlich uninteressante IP erhaltet, diese aber vom vorherigen Inhaber für Spam genutzt wurde und auf Spamblocklisten notiert ist. Was wiederum dazu führt, dass jede verschickte E-Mail plötzlich im Spam verschwindet.
Die beste Lösung ist also ein externer Anbieter. Ein VPS-Server mit 2 GB RAM und Speicherplatz für eure E-Mails >20GB Storage sollte völlig ausreichen. Das ist also definitiv mit Kosten um die 5€ im Monat verbunden. Wer bereits einen guten und sicheren E-Mail Anbieter nutzt, weiß dass solider und sicherer Datenschutz etwas kostet. Wenn ihr euch für einen Anbieter entschieden habt solltet ihr zunächst eure zugewiesene IPv4 Adresse des VPS-Servers auf einschlägigen Spam-Test-Seiten überprüfen.
Blacklistalert.org bietet einen guten Spam-Tester, tragt dort eure VPS-Server-IPv4 ein und lasst den Test laufen. Sollten Treffer vorliegen, schaut ob ihr aus den jeweiligen Listen "entkommen" könnt oder fragt euren VPS-Anbieter, ob er euch eine neue IPv4 zuweist.
Die Wahl des Betriebssystems bleibt jedem selbst überlassen, einige Kenntnisse im Bereich "Server absichern" und auch meine Anleitung zur Absicherung von SSH sollte man bei dem neuen Server in Betracht ziehen.
Ebenfalls wichtig ist, dass ihr euch Inhaber einer Domain nennt und für Stalwart auch eine Subdomain erstellt.
Auch die Installation von Docker und Docker-Compose ist zunächst notwendig:
curl -fsSL get.docker.com | bash
Automatisches Script für die Docker Installation
Nun erstellen wir einen neuen Ordner im Homeverzeichnis:
mkdir -p ~/stalwart && cd ~/stalwart
Nun folgt die Compose Datei "compose.yml" welche ihr mit dem Editor euer Wahl erstellt:
services:
stalwart-mail:
image: stalwartlabs/mail-server:latest
ports:
- 25:25
- 443:443
- 8080:8080
- 587:587
- 465:465
- 143:143
- 993:993
- 4190:4190
- 110:110
volumes:
- /var/lib/stalwart-mail:/opt/stalwart-mail
container_name: stalwart-mail
tty: true
stdin_open: true
restart: unless-stopped
networks: {}
Wichtig: Bevor dieser Container gestartet wird solltet ihr die hier verwendeten Ports in der Firewall eures VPS Anbieters freischalten. Der Port 25 wird gerne automatisch gesperrt um Spam zu verhindern, eine Nachricht an den Anbieter sollte aber genügen um diesen Port freizuschalten. Es ist kein Verbrechen den Port 25 zu verwenden, er wird nur gerne für Spam verwendet und die Anbieter sperren diesen somit vorsorglich.
Wenn alles soweit ist sollten wir mit den üblichen docker compose Befehlen den Container starten (Mailcow-Kenner werden sich wundern, ja es ist tatsächlich nur ein einziger all-in-one-Container).
docker compose up -d
Sollte der Container wie zu erwarten problemlos starten, erhalten wir am Ende des Startvorgangs (oder über eine Suche in den Container-Logs (docker compose logs) die nötigen Informationen für den ersten Login mittels Admin Account und dem zufällig generierten Passwort (verliert es nicht, es ist zu Anfang die einzige Zugangsmöglichkeit).
Nun können wir über die IPv4 im Browser die Login-Seite von Stalwart-Mail begutachten und uns einloggen:

Stalwart hat erst seit kurzem einen browser-basierten Adminbereich, seit also etwas nachsichtig, es ist sehr unübersichtlich und mächtig mit seinen Funktionen zugleich. Euer erster Weg führt in folgende Bereiche:
- Settings -> Server -> Network: Dort tragt ihr eure Subdomain ein (wichtig, nicht die Hauptdomain sondern eine Subdomain, die Adresse unter der Ihr diese Weboberfläche in Zukunft aufruft oder welche ihr für die Einrichtung in Mailprogrammen verwenden werdet.
- Settings -> Server -> TLS -> ACME-Providers: Hier tragt ihr eure Daten der Subdomain ein, um sich selbst aktualisierende Zertifikate von Letsencrypt zu erhalten. Dies ist sehr wichtig, da diese hier verwalteten Zertifikate nicht nur für die Subdomain gelten sondern auch für eure Mails. Das wird gerne vergessen, wenn man den Wunsch hegt diese Funktion auszulassen und Zertifikate über einen Proxy beziehen möchte. Das geht auch, ist aber komplizierter. So ungefähr müsste eure Eingabe aussehen:

- Management -> Directory -> Domains: Jetzt fängt der eigentliche Spaß erst an. Unter Domains legen wir unsere richtige Domain an (also am besten ohne Sub, da es sich hierbei um den hinteren Teil eurer neuen E-Mail-Adressen handelt, dieser sollte besser ohne Subdomains auskommen. Sollte dies erledigt sein erhaltet ihr eine laaaange Liste mit DNS Records, diese müsstet ihr nun ausnahmslos bei eurem Domainanbieter jede einzeln hinterlegen. Manche Anbieter erlauben auch sogenannte Zonefiles also eine komplette Aufstellung aller Records, auch dies ist möglich und ihr habt unter den DNS Records eine Zonefile für Copy & Paste zur Verfügung.
- Management -> Directory -> Accounts: Hier können nun unzählige E-Mail-Adressen mit ihren Zugangsdaten angelegt werden. Auch Aliase nicht vergessen und natürlich wie gross ein Postfach sein darf. Dieser Teil ist ziemlich selbsterklärend.
- Management -> Maintenance: Hier findet ihr noch einige wichtige Zusatzfunktionen welche man von Zeit zu Zeit ausführen sollte. Es kann auch vorkommen, dass in den Release-Updates von Stalwart darauf hingewiesen wird, in diesem Bereich den Webadmin upzudaten BEVOR man eine neue Version mit "docker compose pull" bezieht.
Das war es eigentlich auch schon. Der Rest an Funktionen darf nun durchsucht und entdeckt werden. Viele Dinge sind bereits mit Werten belegt und sollten nur verändert werden, wenn ihr wisst was ihr da tut. Eine direkte Weboberfläche wie SoGo für den Mailclient gibt es bei Stalwart nicht. Es steht euch nun frei die Zugangsdaten bei jedem X-beliebigen E-Mail-Programm auszuprobieren. Wichtig, eure Sub-Domain ist bei IMAP/JMAP/POP3 als auch SMTP immer die gleiche Adresse. Die meisten Programme verwenden leider bisher nur IMAP, obwohl JMAP gerade für mobile Geräte wesentlich sinnvoller wäre. Eine Liste mit Apps die bereits JMAP integriert haben gibt es unter folgendem Link: JMAP-Implementierungen
Ich wünsche viel Spaß mit dem neuen E-Mail-Server.
PS. Wer jetzt sofort anfängt seine Liebsten oder Bekannten mit Mails zu überschütten sei gewarnt, es dauert heutzutage etwas bis sich im Hintergrund die großen Anbieter mit eurem Server einlassen. Es werden zunächst einige TLS- und DMARC-Handshakes ausgetauscht und euer Server wird damit auf seine Echtheit überprüft. Soll heißen die erste Mail am ersten Tag könnte beim Empfänger noch im Spam landen, das ändert sich aber noch. Nur Geduld, nach 2 - 3 Tagen wird es eher anders herum ablaufen. Euer Server schickt die Antwort-Mail der Bekannten in den Spam, da Stalwart viel wert auf alle Mail-Sicherheitstechnologien legt und einen Spamfilter verwendet der so ziemlich alles was nicht sauber aussieht abwehrt. Hier kommt euer Umgang mit Mails ins Spiel, denn der Spamfilter lernt aus eurem Umgang mit den Mails. Wenn ihr entscheidet, dass es sich nicht um Spam handelt, wird dieser Absender auch nicht mehr dort landen, umgekehrt genauso.
Weitere Beiträge aus diesem Blog: