Vom frischen Host zum produktiven Mailserver in 8 Schritten
Ein Mailserver hängt stärker an seinem Netzwerk als an seiner Hardware: Ist Port 25 gesperrt oder fehlt der Reverse-DNS-Eintrag (PTR), kommt keine E-Mail an. Dieses Handbuch führt dich in der richtigen Reihenfolge von der Vorab-Prüfung über Installation, Dual-Key-DKIM, TLS und Smartphone-Onboarding bis zur ersten verifizierten Zustellung.
Wie SharpMailserver startet und zur Produktionsreife gelangt
SharpMailserver bündelt ESMTP, IMAP4rev2, JMAP, Exchange ActiveSync, CalDAV/CardDAV, ManageSieve, den SpamGuard-Filter, das GoBD-WORM-Archiv, das Admin-Cockpit (/admin/) und die SharpMail Webmail-PWA (/mail/) in einer einzigen speichersicheren Binärdatei (~40 bis 90 MB Leerlauf-RAM). Es werden beim ersten Start weder Web-Oberflächen von GitHub nachgeladen noch externe Zusatzdienste wie NSSM, Redis, Rspamd oder Roundcube benötigt.
Reihenfolge spart Stunden:Prüfe zuerst Kapitel 02 (Port 25 & Reverse DNS beim Hoster), führe danach die 8 Schritte in Kapitel 04 für dein Betriebssystem durch und nutze bei jeder Abweichung direkt die Symptom-Tabelle in Kapitel 06.
NVMe + optional S3 Hybrid · PostgreSQL 18 oder Microsoft SQL Server (2019-2025).
2.500+ Enterprise-Cluster
8+ vCPU (2+ Nodes)
16+ GB RAM
Active-Active über PostgreSQL 18 oder SQL Server Always On + S3 Object Lock (WORM).
Kapitel 03
Plattform & Datenbank passend zur Infrastruktur wählen
Alle Bereitstellungsarten enthalten denselben Funktionsumfang. Der Unterschied liegt ausschließlich darin, wie das Betriebssystem den Dienst startet und aktualisiert.
Plattform
Installationsmethode
Wann ist das die beste Wahl?
Windows Server 2019 / 2022 / 2025 (x64)
SharpMailserver-Setup-win-x64.msi / install.ps1
Echter Windows-Dienst (SCM) ohne Docker & ohne NSSM; ideal bei bestehendem AD/Entra ID, Microsoft SQL Server oder hMailServer-Ablösung.
Linux (`x86_64` & `ARM64`)
install.sh · .deb · systemd
Schlanker unprivilegierter systemd-Dienst auf Debian 12/13, Ubuntu 24.04 LTS, RHEL/Rocky oder Raspberry Pi 5.
Docker & Docker Compose
sharpmailserver/server:1.2.4
Reproduzierbare Container-Stacks auf Linux-VPS, Proxmox-VMs, Synology, UGREEN oder Unraid.
macOS (Apple Silicon) & Kubernetes
.tar.gz launchd / Helm v3
Mac mini Server im Büro (launchd) bzw. horizontal skalierende K8s-Cluster ohne Redis/Kafka.
Kapitel 04
Das 8-Schritte-Tutorial: Installation bis zur ersten Test-Mail
Wähle deine Zielplattform. Alle 8 Schritte zeigen dir den exakten Befehl, das erwartete Ergebnis zur sofortigen Kontrolle und den häufigsten Stolperstein genau an dieser Stelle.
STEP 01
Paket installieren & Firewall-Ports öffnen
Lädt das Release-Paket herunter, verifiziert die kryptografische SHA-256-Prüfsumme und richtet den Hintergrunddienst samt Datenverzeichnis ein.
# PowerShell als Administrator: Lädt .msi (v1.2.4), prüft SHA-256 & startet den Setup-Assistenten
irm https://sharpmailserver.com/install.ps1 | iex
# Optional: Prüfen, ob die Windows-Firewall die Mail- & HTTPS-Ports durchlässt
New-NetFirewallRule -DisplayName "SharpMailserver" -Direction Inbound -Protocol TCP -LocalPort 25,80,443,465,587,993,4190 -Action Allow
Erwartetes Ergebnis: Der Dienst läuft dauerhaft im Hintergrund und übersteht jeden Server-Neustart automatisch.
Häufiges Problem: Meldet der Start 'Address already in use', blockiert auf Linux oft ein vorinstalliertes Postfix/Exim Port 25 oder unter Windows IIS Port 80/443 -> siehe Kapitel 06 (#sym-port-bind).
STEP 02
Dienststatus prüfen & im Admin-Cockpit (/admin/) anmelden
Prüfe kurz das Startprotokoll und melde dich mit dem beim Setup gewählten Administrator-Konto im Web-Cockpit an.
Get-Service SharpMailserver
# Im Browser öffnen: https://mail.firma.de/admin/ (oder lokal auf dem Server http://localhost/admin/)
sudo systemctl status sharpmailserver
sudo journalctl -u sharpmailserver -n 30 --no-pager
# Im Browser öffnen: https://mail.firma.de/admin/
Öffne in /admin/ den Bereich Domains & Routing -> Domain verwalten. SharpMailserver hat für deine Domain automatisch zwei kryptografische DKIM-Schlüsselpaare erzeugt: RSA-2048 (Selektor s2026 für 100 % Legacy-Kompatibilität) und Ed25519 (Selektor s2026ed nach RFC 8463).
Best Practice: Hinterlege in Schritt 5 direkt BEIDE TXT-Einträge im DNS. Danach kannst du am Server jederzeit per 1-Klick verzögerungsfrei zwischen RSA-2048, Ed25519 und Dual-Signierung wechseln, ohne auf DNS-TTLs warten zu müssen.
STEP 04
TLS-Zertifikat aktivieren (ACME Let's Encrypt oder Gateway-PFX)
Wechsle zu Sicherheit & Zertifikate -> TLS & ACME. Sobald der A/AAAA-Record für mail.firma.de auf deinen Server zeigt, stellt Let's Encrypt (HTTP-01 oder TLS-ALPN-01 über Port 443) dein Zertifikat aus. Hinter einer pfSense/OPNsense mit Wildcard-Zertifikat lädst du alternativ die .pfx/.pem hoch.
Erwartetes Ergebnis: 0 ms Dynamic SNI Hot-Reload aktiviert das neue Zertifikat sofort ohne Neustart für HTTPS (443), SMTPS (465/587), IMAPS (993) und ManageSieve (4190).
Kopiere im DNS-Advisor deines Admin-Cockpits die exakt berechneten Einträge (oder exportiere die fertige BIND-Zonendatei): MX, A/AAAA, SPF (v=spf1 mx -all), beide DKIM-Keys (s2026._domainkey + s2026ed._domainkey), DMARC (_dmarc), MTA-STS, TLS-RPT sowie optional DANE TLSA (3 1 1 SPKI) und BIMI.
Erwartetes Ergebnis: Ein Klick auf 'Live-DNS jetzt prüfen' zeigt für MX, SPF, beide DKIM-Selektoren, DMARC und PTR grüne Haken.
Häufiges Problem: Viele DNS-Webpanels hängen die eigene Domain automatisch an. Trage dort als Hostnamen nur s2026._domainkey statt s2026._domainkey.firma.de ein -> siehe Kapitel 06 (#sym-dkim-dns).
STEP 06
Server für den Produktivbetrieb absichern
Aktiviere für dein Admin-Konto einen Passkey (WebAuthn/YubiKey) oder TOTP-2FA, belasse SpamGuard auf den bewährten Standards (Junk 4.5 / Reject 9.0 / Smart Greylisting aktiv) und schalte bei steuerrelevanten Geschäftspostfächern im Domain-Inspektor das GoBD-WORM-Archiv ein.
Erwartetes Ergebnis: Brute-Force-Auto-Ban, TLS-Pflicht für Passwort-Logins (RequireTlsForAuth) und Outbound-Ratenlimits schützen deine IP-Reputation ab der ersten Minute.
STEP 07
Erstes Postfach anlegen & Smartphone per QR / WhatsApp verbinden
Lege unter Konten & Verteiler dein erstes Benutzerkonto an. Teste den Login direkt in der integrierten Webmail-PWA unter https://mail.firma.de/mail/ und klicke im Admin beim Benutzer auf 'Smartphone einrichten', um einen QR-Code oder WhatsApp-tauglichen 1-Klick-Einladungslink mit CMS-signiertem Apple-Profil bzw. Exchange ActiveSync zu erzeugen.
Erwartetes Ergebnis: iOS zeigt beim Installieren des Profils 'Überprüft' in Grün an und synchronisiert E-Mails, Kalender, Kontakte und Notizen sofort.
STEP 08
Ein- & ausgehende Zustellung mit Live-MX-Tester & Message Trace bestätigen
Öffne Diagnose & Logs -> Outbound-MX- & DANE-Tester und prüfe z. B. gmail.com oder deine eigene Zweitadresse. Sende anschließend aus /mail/ eine echte Nachricht nach außen und antworte darauf zurück.
Erwartetes Ergebnis: In der Nachrichtenverfolgung (Message Trace) stehen beide Richtungen auf Delivered (TLS 1.3), und im Quelltext beim Empfänger steht Authentication-Results: spf=pass; dkim=pass; dmarc=pass.
Kapitel 05
Betrieb hinter pfSense / OPNsense, SSL-Gateways & Reverse Proxies
Läuft SharpMailserver im eigenen Rechenzentrum oder Firmennetz hinter einer pfSense, OPNsense, Sophos oder HAProxy, sind drei Punkte für saubere Diagnose und korrekte SPF-/IP-Prüfungen entscheidend:
Thema
Empfohlene Einstellung
Split-DNS / Hairpin-NAT
Liegen Webserver und Mailserver hinter derselben WAN-IP, verwirft die Firewall interne Pakete an die eigene öffentliche IP ohne NAT-Reflection. Lege im DNS-Resolver (Unbound) einen Host-Override für mail.firma.de auf die interne LAN-IP an oder aktiviere Pure NAT Reflection.
HAProxy PROXY Protocol (v1/v2)
Leitet ein L4-Load-Balancer Port 25/465/587/993 weiter, aktiviere das PROXY-Protokoll nur für die vertrauenswürdige Gateway-IP, damit SPF, DMARC und Auto-Ban die echte externe Absender-IP sehen.
Zentrales Gateway-Zertifikat
Terminiert dein Gateway bereits Port 80/443 für mehrere Webserver, exportiere das ausgestellte Zertifikat als .pfx/.pem auf den Mailserver (für Port 25 STARTTLS, 465, 587 & 993) - Dynamic SNI lädt aktualisierte Zertifikatsdateien im Betrieb ohne Neustart nach.
Kapitel 06
Fehlersuche nach Symptom (Vom Fehlerbild direkt zur Lösung)
Wenn während der Einrichtung etwas nicht sofort klappt, klicke auf das beobachtete Symptom oder tippe den Fehlertext links oben in das Suchfeld ein:
Ursache: Liegen Webserver und Mailserver im selben Netz hinter einer gemeinsamen Firewall (pfSense, OPNsense, Sophos) ohne NAT-Reflection (Hairpin-NAT), verwirft die Firewall Pakete an die eigene öffentliche WAN-IP. Alternativ blockiert der Cloud-Hoster eingehenden oder ausgehenden Port 25 im Kundencenter.
Lösung: Prüfe im Admin-Cockpit unter Diagnose & Logs die Netzwerk-Diagnose (erkennt Split-DNS/Hairpin-Topologien automatisch) und schalte in der Cloud-Firewall des Hosters TCP 25, 443, 465, 587 und 993 frei.
Dienst startet nicht oder ein Port lässt sich nicht bindenAddress already in use (:25 / :80 / :443)
Ursache: Auf frischen Linux-Images lauscht häufig bereits ein vorinstallierter MTA (Postfix, Exim4, Sendmail) auf Port 25 oder Apache/Nginx bzw. IIS unter Windows auf Port 80/443.
Lösung: Prüfe unter Linux mit 'sudo ss -tulpn | grep -E ":(25|80|443|993) "' (z. B. 'sudo systemctl disable --now postfix') bzw. unter Windows mit 'Get-NetTCPConnection -State Listen | Where LocalPort -in 25,80,443,993' den blockierenden Prozess.
Ausgehende E-Mails an Gmail, Microsoft 365 oder T-Online werden abgelehnt550-5.7.25 / 550-5.7.1 PTR missing
Ursache: Der Server sendet bevorzugt über IPv6 (Dual-Stack), aber beim Hoster wurde der Reverse-DNS-Eintrag (PTR) nur für die IPv4-Adresse und noch nicht für die IPv6-Adresse hinterlegt.
Lösung: Setze im Hoster-Panel den PTR-Eintrag sowohl für die IPv4- als auch für die IPv6-Adresse exakt auf deinen SMTP-Hostnamen (z. B. mail.firma.de) und prüfe das Ergebnis im Outbound-MX-Tester.
Live-DNS-Prüfer findet den angelegten DKIM- oder DMARC-TXT-Eintrag nichtNXDOMAIN s2026._domainkey
Ursache: Viele DNS-Webinterfaces (IONOS, Strato, Cloudflare, Hetzner DNS) hängen den Domainnamen automatisch an das Host-Feld an, sodass versehentlich s2026._domainkey.firma.de.firma.de entsteht. Bei RSA-2048 (>255 Zeichen) fügen manche Editoren außerdem Leerzeichen mitten im Base64-Key ein.
Lösung: Trage im Host-Feld nur 's2026._domainkey' bzw. 's2026ed._domainkey' und '_dmarc' ein. Nutze bei langen TXT-Einträgen den 1-Klick-Kopierbutton im Admin-Cockpit oder schalte nach Hinterlegen von s2026ed auf den kompakten Ed25519-Modus um.
Let's Encrypt ACME stellt kein Zertifikat aus oder Browser zeigt ZertifikatswarnungACME challenge failed
Ursache: Entweder zeigt der öffentliche A/AAAA-Eintrag von mail.firma.de noch nicht auf den Server, oder Port 80 (HTTP-01) bzw. Port 443 (TLS-ALPN-01) wird vor dem Mailserver von einem anderen Webserver abgefangen.
Lösung: Wähle TLS-ALPN-01 (wenn Port 443 direkt am Mailserver ankommt), öffne kurzfristig Port 80 für HTTP-01 oder importiere hinter einem Reverse-Proxy dessen ausgestelltes Zertifikat als .pfx/.pem.
iPhone öffnet den per WhatsApp / Teams gesendeten Link, startet aber die Profil-Installation nicht sofortiOS In-App WebView
Ursache: Messenger wie WhatsApp, Teams oder Instagram öffnen Links zunächst in einem eingebetteten In-App-Browser; Apple iOS erlaubt die Installation von Systemprofilen (.mobileconfig) aus Sicherheitsgründen ausschließlich über Safari.
Lösung: Tippe auf der geöffneten SharpMailserver-Einrichtungsseite unten rechts auf das Kompass-/Teilen-Symbol -> 'In Safari öffnen'. Unser Einmal-Token ist gegen Messenger-Vorschau-Bots geschützt und bleibt dafür gültig.
Docker-Container startet neu oder kann nicht in das gemountete Verzeichnis schreibenAccess to path '/var/lib/sharpmail' denied
Ursache: Auf Systemen mit striktem SELinux (RHEL, Fedora, Rocky) oder restriktiven Host-Verzeichnisrechten blockiert der Kernel den Schreibzugriff des Containers auf Bind-Mounts.
Lösung: Nutze benannte Docker-Volumes (wie in unserer Vorlage) oder ergänze bei RHEL/SELinux das Suffix ':Z' am Volume-Mount ('./sharpmail-data:/var/lib/sharpmail:Z').
Ursache: Entweder versucht der Client eine unverschlüsselte Anmeldung ohne STARTTLS/SSL (RequireTlsForAuth blockiert Klartext-Passwörter zum Schutz), oder auf dem Konto ist 2FA/Passkey aktiv und der Mail-Client nutzt das Web-Passwort statt eines Geräte-App-Passworts.
Lösung: Verwende Port 993 (IMAPS SSL/TLS) und Port 465 (SMTPS SSL/TLS) bzw. 587 (STARTTLS) mit der vollen E-Mail-Adresse als Benutzernamen und erzeuge im Webmail oder Admin ein dediziertes Geräte-App-Passwort.
Kapitel 07
Nächste Schritte: Updates in 10 Sekunden, Backup & Umzug
Sobald die erste Test-E-Mail erfolgreich ein- und ausgegangen ist, ist dein Server produktionsbereit. Für den laufenden Betrieb brauchst du nur noch diese drei Handgriffe:
# 1) Unterbrechungsfreies Update auf neue Versionen (erhält Konfiguration, Zertifikate & Postfächer):
# Linux / macOS:
curl -fsSL https://sharpmailserver.com/install.sh | sudo bash -s -- --update
# Windows PowerShell (Administrator):
irm https://sharpmailserver.com/install.ps1 | iex
# 2) Backup-Umfang (nur 2 Pfade sichern):
# - Konfigurationsdatei: appsettings.Production.json (inkl. Lizenz-Token)
# - Datenverzeichnis: Storage:DataDirectory (inkl. SQLite WAL / Blobs / TLS-Zertifikate)
# bzw. pg_dump / SQL Server Backup bei externem Datenbank-Cluster
Braucht SharpMailserver unter Windows NSSM oder Docker Desktop?
Nein. Im Gegensatz zu vielen Linux-zentrierten Mailservern bringt SharpMailserver eine echte Windows-Service-Integration (Service Control Manager) samt offiziellem .msi-Assistenten mit. Weder NSSM-Wrapper noch Docker Desktop, WSL2 oder Hyper-V werden benötigt.
Lädt SharpMailserver beim ersten Start Dateien von GitHub oder aus dem Internet nach?
Nein. Das komplette Admin-Cockpit (/admin/), die Webmail-PWA (/mail/), der SpamGuard-Klassifikator und alle Protokoll-Engines sind vollständig im geprüften Release-Paket enthalten. Der Server startet auch in abgeschotteten Behörden- und Unternehmensnetzen sofort.
Warum ist der Reverse-DNS-Eintrag (PTR) vor dem ersten Mailversand so entscheidend?
Große Empfänger wie Gmail, Microsoft 365, GMX/WEB.DE und T-Online prüfen bei jeder eingehenden Verbindung auf Port 25, ob die öffentliche IPv4- und IPv6-Adresse per PTR exakt auf den EHLO-Hostnamen (z. B. mail.firma.de) zurückauflöst. Fehlt der PTR vor allem bei aktivem Dual-Stack-IPv6, werden ausgehende Nachrichten mit 550-5.7.25 abgewiesen.
Wie aktualisiere ich eine bestehende Installation später auf eine neue Version?
Unter Linux/macOS genügt curl -fsSL https://sharpmailserver.com/install.sh | sudo bash -s -- --update, unter Windows irm https://sharpmailserver.com/install.ps1 | iex (oder direkt im Admin-Cockpit per 1-Klick-Updater). Konfiguration, TLS-Zertifikate, DKIM-Schlüssel und Postfachdaten bleiben unberührt.