SharpMailserver SHARPMAILSERVER
Geführtes Installations-Handbuch · v1.2.4

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.

Kapitel 01

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.
STEP 01-02Dienst & Admin startenSHA-256-geprüftes Paket starten, Firewall öffnen und /admin/ aufrufen.
STEP 03-05Domain, TLS & Dual-DKIMACME/PFX-Zertifikat aktivieren und RSA-2048 + Ed25519 im DNS veröffentlichen.
STEP 06-07Härten & Geräte koppelnSpamGuard, Dual-Stack IPv6, GoBD sowie iPhone/Android per QR oder WhatsApp.
STEP 08Mailfluss verifizierenOutbound-MX/DANE-Live-Tester + bidirektionaler Test mit Message Trace.
Kapitel 02

System- & Netzwerk-Voraussetzungen (Vorab-Checkliste)

Hake diese 6 Bedingungen vor der Installation ab. Vier davon liegen außerhalb des Mailservers im Kundencenter deines Hosters oder DNS-Anbieters.

Port Protokoll / Dienst Richtung Status & Empfehlung
25 / TCPESMTP (MX Server-zu-Server + STARTTLS/DANE)Ein- & AusgehendPflicht - Ohne Port 25 kein Mailaustausch mit externen Providern.
443 / TCPHTTPS (`/admin/`, `/mail/`, JMAP, ActiveSync, CalDAV/CardDAV, MTA-STS)Eingehend (+ Ausgehend)Pflicht - Bedient Webmail, Cockpit, Mobile-Push & ACME TLS-ALPN-01.
465 / TCPSMTPS Submission (Implicit TLS, RFC 8314)EingehendPflicht - Bevorzugter verschlüsselter Versandport für Apple, Android & Thunderbird.
587 / TCPSMTP Submission (STARTTLS)EingehendPflicht - Kompatibilität für klassische Outlook-Clients, Scanner & ERP-Systeme.
993 / TCPIMAPS (`IMAP4rev2` Implicit TLS)EingehendPflicht - Echtzeit-IDLE-Postfachzugriff für Desktop- und Mobil-Clients.
80 / TCPHTTP (ACME `HTTP-01` & Autoconfig Redirect)EingehendEmpfohlen (entfällt bei TLS-ALPN-01 auf Port 443 oder Gateway-Zertifikat).
4190 / TCPManageSieve (STARTTLS)EingehendOptional (im Webmail funktioniert der Regel-Editor auch direkt über Port 443).
143 / TCPIMAP (STARTTLS)EingehendOptional (Standard ist Port 993 mit sofortigem Implicit TLS).
Ausbaustufe CPU RAM Speicher & Datenbank-Empfehlung
1 bis 250 Postfächer2 vCPU1 - 2 GB RAMNVMe/SSD · Eingebettetes SQLite WAL + Zstandard-Kompression (~40-90 MB Server-RAM).
250 bis 2.500 Postfächer4 vCPU4 - 8 GB RAMNVMe + optional S3 Hybrid · PostgreSQL 18 oder Microsoft SQL Server (2019-2025).
2.500+ Enterprise-Cluster8+ vCPU (2+ Nodes)16+ GB RAMActive-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.ps1Echter 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 · systemdSchlanker unprivilegierter systemd-Dienst auf Debian 12/13, Ubuntu 24.04 LTS, RHEL/Rocky oder Raspberry Pi 5.
Docker & Docker Composesharpmailserver/server:1.2.4Reproduzierbare Container-Stacks auf Linux-VPS, Proxmox-VMs, Synology, UGREEN oder Unraid.
macOS (Apple Silicon) & Kubernetes.tar.gz launchd / Helm v3Mac 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
# Debian / Ubuntu / RHEL / macOS: Prüft SHA-256, fragt Domain/Hostname/Admin ab & aktiviert systemd
curl -fsSL https://sharpmailserver.com/install.sh | sudo bash

# Falls UFW aktiv ist, Pflichtports freigeben:
sudo ufw allow 25,80,443,465,587,993,4190/tcp
# Baut/zieht das SHA-256-verifizierte Image sharpmailserver/server:1.2.4 & legt docker-compose.yml an
curl -fsSL https://sharpmailserver.com/install.sh | sudo bash -s -- \
  --mode docker --domain firma.de --hostname mail.firma.de --admin admin@firma.de
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/
docker compose ps
docker compose logs --tail=30 sharpmail
# Im Browser öffnen: https://mail.firma.de/admin/
Erwartetes Ergebnis: Das Echtzeit-Dashboard in /admin/ zeigt grüne Listener für SMTP, IMAP und HTTPS sowie den Speichertyp an.
STEP 03

Mail-Domain & parallele Dual-DKIM-Schlüssel prüfen

Ö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).
STEP 05

DNS-Einträge veröffentlichen & Live-DNS-Prüfung ausführen

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-NATLiegen 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-ZertifikatTerminiert 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:

Externer Port-Checker meldet 'Blocked / Timeout', obwohl der Dienst läuft TCP 25 / 465 / 993 Timeout
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 binden Address 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 abgelehnt 550-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 nicht NXDOMAIN 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 Zertifikatswarnung ACME 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 sofort iOS 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 schreiben Access 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').
Mail-Client (Outlook, Thunderbird, Apple Mail) meldet Anmeldung fehlgeschlagen 535 Authentication failed / TLS required
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
Häufige Fragen zur Installation

Kurzantworten vor dem ersten Start

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.