Installation
Laden Sie SMTPly-Setup-latest.exe aus dem Download-Bereich herunter. Führen Sie den Installer als Administrator aus. Der Wizard führt Sie in vier Schritten durch die Installation — in 99 % der Einsatzszenarien reichen die Standardwerte. Klicken Sie jeden Screenshot an, um ihn in voller Größe zu sehen.
Schritt 1 — Ziel-Ordner wählen
Belassen Sie den Standardpfad C:\Program Files\SMTPly, sofern Sie keinen konkreten Grund für eine Abweichung haben. Das Setup benötigt ca. 293 MB für Dienst, GUI und die eingebettete .NET 8 Runtime.
Schritt 1: Ziel-Ordner. Standardwert einfach mit „Weiter" übernehmen.
Schritt 2 — Zusätzliche Aufgaben
Der Wizard bietet zwei Optionen an, beide sind standardmäßig aktiviert:
- Desktop-Symbol erstellen — legt eine Verknüpfung zur GUI auf dem Desktop an.
- Windows service „Smtply" installieren und starten — registriert und startet den Hintergrund-Dienst, damit der Relay unabhängig vom eingeloggten Benutzer läuft. Diese Option sollten Sie aktiviert lassen — ohne Dienst müssten Sie die GUI permanent offen halten.
Schritt 2: Zusätzliche Aufgaben. Die Dienst-Installation erfordert kurz UAC-Rechte beim Ausführen.
Schritt 3 — Installation starten
Kontrollieren Sie die Zusammenfassung und klicken Sie auf Installieren. Die eigentliche Installation dauert in der Regel unter einer Minute.
Schritt 3: Zusammenfassung vor dem Kopieren der Dateien.
Schritt 4 — Abschluss
Nach erfolgreicher Installation können Sie SMTPly direkt starten. Das Häkchen SMTPly starten ist vorausgewählt — nach Klick auf Fertigstellen öffnet sich die GUI automatisch und springt beim ersten Start direkt in die Einstellungen, damit Sie Ihre Azure-App-Daten eintragen können.
Schritt 4: Installation abgeschlossen. Direkt starten und mit der Azure-Konfiguration weitermachen.
Alle Komponenten werden unter C:\Program Files\SMTPly\ abgelegt, Konfiguration und Logs unter C:\ProgramData\Smtply\. Der Dienst läuft als Smtply unter dem LocalSystem-Konto und startet automatisch mit Windows.
Integrität prüfen
Die SHA-256-Prüfsumme jeder veröffentlichten Version finden Sie im Release-Eintrag und auf der Download-Seite. Verifizieren Sie den Download vor der Installation mit:
Get-FileHash -Algorithm SHA256 .\SMTPly-Setup-latest.exe
Azure-App registrieren
SMTPly authentifiziert sich bei Microsoft Graph mit einer Azure App Registration im Client-Credentials-Flow. Das bedeutet: kein Benutzer-Login, die App sendet im Namen einer festgelegten Absender-Adresse. Die folgende Schritt-für-Schritt-Anleitung dauert etwa 10 Minuten. Klicken Sie jeden Screenshot an, um ihn in voller Größe zu sehen.
Schritt 1 — Neue App-Registrierung anlegen
- Öffnen Sie das Entra Admin Center als Global Administrator.
- Navigieren Sie zu Identität → Anwendungen → App-Registrierungen.
- Klicken Sie auf + Neue Registrierung.
- Name: z.B.
SMTPly Relay. - Unterstützte Kontotypen: Nur Konten in diesem Organisationsverzeichnis.
- Umleitungs-URI: leer lassen.
- Auf Registrieren klicken.
Schritt 1: Formular zum Registrieren der neuen App im Entra Admin Center.
Schritt 2 — Tenant-ID und Client-ID notieren
Nach der Registrierung landen Sie auf der App-Übersichtsseite. Notieren Sie sich zwei Werte, die SMTPly später benötigt:
- Anwendungs-(Client-)ID — die GUID Ihrer App-Registrierung
- Verzeichnis-(Mandanten-)ID — die GUID Ihres Tenants
Schritt 2: App-Übersicht. Die beiden GUIDs rechts werden später in SMTPly eingetragen.
Schritt 3 — Client-Secret erzeugen
- In der linken Navigation: Zertifikate & Geheimnisse.
- Reiter Geheime Clientschlüssel → + Neuer geheimer Clientschlüssel.
- Beschreibung:
SMTPly Production(oder frei wählbar). - Ablaufzeit: 24 Monate empfohlen (längere Laufzeiten vermeiden Wartungsunterbrechungen).
- Auf Hinzufügen klicken.
Schritt 3: Neues Client-Secret anlegen mit 24 Monaten Gültigkeit.
Schritt 4 — Secret-Wert sofort kopieren
Nach dem Erstellen wird der Wert einmalig in Klartext angezeigt. Kopieren Sie ihn sofort — nach dem nächsten Seitenwechsel ist er nicht mehr sichtbar, nur noch die ersten/letzten Zeichen.
Schritt 4: Der Wert in der Spalte „Wert" wird nur einmal angezeigt. Jetzt kopieren!
Wichtig: Notieren Sie sich das Ablaufdatum des Secrets. SMTPly warnt standardmäßig 14 Tage vor Ablauf in der GUI und kann zusätzlich eine E-Mail-Benachrichtigung senden — Sie können den Wert später in den Einstellungen erneuern.
Berechtigungen & Admin-Consent
Schritt 5 — API-Berechtigung hinzufügen
- In der linken Navigation: API-Berechtigungen.
- Oben auf + Berechtigung hinzufügen.
- Im rechten Panel Microsoft Graph auswählen.
Schritt 5: Microsoft Graph als API auswählen.
Schritt 6 — „Anwendungsberechtigungen" wählen
SMTPly läuft als Hintergrunddienst ohne angemeldeten Benutzer und benötigt daher Anwendungsberechtigungen (nicht „Delegierte Berechtigungen"). Das ist die entscheidende Wahl — mit delegierten Berechtigungen würde der Relay nicht funktionieren.
Schritt 6: „Anwendungsberechtigungen" auswählen (nicht „Delegierte Berechtigungen").
Schritt 7 — Mail.Send aktivieren
Im Suchfeld mail.send eingeben. Unter Mail erscheint die Berechtigung Mail.Send — Haken setzen und unten auf Berechtigungen hinzufügen klicken.
Schritt 7: Mail.Send-Haken setzen. Beschreibung: „Send mail as any user".
Schritt 8 — Administratorzustimmung erteilen
Zurück auf der API-Berechtigungen-Seite: Der Status von Mail.Send zeigt zunächst „Administratoreinwilligung erforderlich". Klicken Sie oben auf Administratorzustimmung für <Ihr Tenant> erteilen und bestätigen Sie. Der Status wechselt auf Gewährt (grüner Haken).
Schritt 8: Admin-Zustimmung erteilen. Ohne diesen Schritt kann die App keine Mails senden.
Optional: Send-as einschränken. Standardmäßig darf die App als jedes Postfach im Tenant senden. Für Least-Privilege können Sie das per Application Access Policy auf genau das gewünschte Postfach eingrenzen — empfohlen für produktive Setups.
Optional: Send-as einschränken. Standardmäßig darf die App als jedes Postfach im Tenant senden. Für Least-Privilege können Sie das per Application Access Policy auf genau das gewünschte Postfach eingrenzen — empfohlen für produktive Setups.
Benötigte Werte für SMTPly
| Feld in SMTPly | Wo in Azure |
|---|---|
| Tenant-ID | App-Übersicht → Verzeichnis-(Mandanten-)ID |
| Client-ID | App-Übersicht → Anwendungs-(Client-)ID |
| Client-Secret | Zertifikate & Geheimnisse → Wert (nur einmalig sichtbar) |
| Absender-Adresse | Ein gültiges M365-Postfach im Tenant, z.B. relay@firma.de |
Erster Start & Setup-Wizard
Beim ersten Start führt der Wizard durch folgende Abschnitte:
- Microsoft 365 — Azure-Daten eingeben, Testverbindung senden.
- SMTP-Listener — Port, Bind-Adresse, Max-Size festlegen.
- STARTTLS / implizites TLS (optional) — Zertifikat auswählen oder generieren lassen.
- IP-Whitelist — welche Geräte dürfen relayen.
- Datenschutz — Logging-Verhalten für Betreff, Adressen, abgelehnte Mails.
- Dienst starten — der Windows-Dienst nimmt den Betrieb auf.
Alle Einstellungen lassen sich jederzeit über den Navigationspunkt „Einstellungen" nachträglich anpassen.
Einstellungen im Detail
Microsoft 365
| Einstellung | Bedeutung |
|---|---|
| Tenant-ID | GUID Ihres Azure-Tenants — siehe Entra Admin Center. |
| Client-ID | GUID Ihrer App-Registrierung. |
| Client-Secret | Wird DPAPI-verschlüsselt gespeichert. Feld leer lassen = keine Änderung. |
| Absender-Adresse | Standard-/Override-MAIL FROM. Muss ein gültiges M365-Postfach sein. |
| Absender immer überschreiben | Wenn aktiv, wird die MAIL FROM des Clients ignoriert und durch die Absender-Adresse ersetzt. Nützlich, wenn Geräte falsche FROMs senden. |
| Erlaubte Domains | Nur Mails mit FROM @diesedomain.tld werden durchgelassen. Leer = nur die Domain der Absender-Adresse. |
SMTP-Listener
| Einstellung | Bedeutung |
|---|---|
| Port | 25 für interne Legacy-Geräte, 587 für offiziell-konformes Submission. Frei wählbar. |
| Bind-Adresse | 127.0.0.1 (nur lokal), 0.0.0.0 (alle Interfaces), oder konkrete LAN-IP. |
| Max. Nachrichtengröße | Standard 25 MB. Größere Mails werden mit SMTP 552 abgewiesen. Graph akzeptiert bis 150 MB. |
| Erlaubte Quell-IPs | Whitelist von Einzel-IPs oder CIDR-Ranges. 192.168.1.0/24 erlaubt z.B. das komplette /24. |
| Offener Modus | Whitelist deaktiviert, jede IP kann relayen. Nur in vertrauenswürdigen Netzen einsetzen. |
STARTTLS & implizites TLS
Standardmäßig deaktiviert — Legacy-Geräte im LAN benötigen typischerweise kein TLS. In den Einstellungen wählen Sie einen von zwei Modi, wenn Ihre Geräte Verschlüsselung anfordern:
- STARTTLS (empfohlen) — die Verbindung beginnt im Klartext und wird per Kommando auf TLS umgeschaltet. Passt zu den meisten modernen SMTP-Clients.
- Implizites TLS/SSL — die Verbindung ist ab dem ersten Byte verschlüsselt, ganz ohne Klartext-Phase. Für ältere Geräte (z.B. Industriesteuerungen), die schlicht „SSL" erwarten und mit STARTTLS scheitern würden — erkennbar an Fehlern wie
SSL23_GET_SERVER_HELLO:unknown protocol.
Beide Modi teilen sich dieselbe Zertifikatsauswahl:
- Selbstsigniert — SMTPly erzeugt ein 10-Jahre-gültiges Zertifikat. Legacy-Clients ignorieren den fehlenden CA-Trust meist automatisch.
- PEM-Dateien — z.B. Let's-Encrypt-Output
fullchain.pem+privkey.pem. - PFX / PKCS#12 — fertiges Container-Format mit Passwort.
Datenschutz im Mail-Protokoll
| Einstellung | Bedeutung |
|---|---|
| Betreff speichern | Wenn aus, wird der Betreff im Mail-Tracker durch *** ersetzt. |
| Adressen speichern | Wenn aus, werden Absender/Empfänger durch *** ersetzt. |
| Abgelehnte Mails protokollieren | Wenn aus, tauchen IP-geblockte oder zu große Mails nicht im Tracker auf. System-Log protokolliert sie trotzdem. |
| Masking | Keine = Klartext. Teilweise = m**l@e*****e.com und Betreff auf 15 Zeichen + „…". |
Retention
Log-Dateien und Mail-Tracker-DB haben getrennte Aufbewahrungszeiten. Beide Felder nutzen dasselbe Sentinel-Schema:
-1= Nicht speichern (komplett deaktiviert)0= Unbegrenzt (nie automatisch löschen)N > 0= N Tage, danach wird automatisch gelöscht
Vordefinierte Optionen: 7 / 14 / 30 / 60 / 90 / 180 / 365 Tage. Defaults sind 7 Tage (Logs) und 14 Tage (Mail-Tracker).
Grenzwerte & Limits
| Grenze | Wert | Quelle |
|---|---|---|
| Max. Nachrichtengröße | 25 MB (SMTPly-Default) — bis 150 MB konfigurierbar | Graph /sendMail |
| Max. Empfänger pro Mail | 500 (Exchange Online) | Microsoft |
| Mails pro Tag / Postfach | 10.000 (Exchange Online) | Microsoft |
| API-Rate-Limit | 10.000 Requests / 10 min pro App / Tenant | Graph Throttling |
| Lizenzierte Postfächer | 1 (Starter) — weitere Editionen auf Anfrage | SMTPly-Lizenz |
SMTPly hält sich an alle Graph-Throttling-Hinweise — wenn Microsoft einen Retry-After-Header schickt, respektiert die Queue das automatisch und wartet entsprechend.
Lizenzierung
SMTPly wird als Einmalkauf mit einer pro Server gebundenen Lizenz angeboten. Die Aktivierung erfolgt online über das Polar-Lizenzsystem.
- 14-Tage-Testphase — voll funktional, keine Limits, automatisch beim ersten Start.
- Aktivierung — Lizenzschlüssel in GUI → „Lizenz" einfügen und bestätigen.
- Hardware-Bindung — Fingerprint aus CPU- und Motherboard-Kennungen. Umzug erfordert vorherige Deaktivierung.
- Offline-Grace — nach erfolgreicher Aktivierung läuft SMTPly bis zu 30 Tage ohne Internet-Check weiter.
- Deaktivierung — GUI → „Lizenz" → „Deaktivieren". Danach kann der Schlüssel woanders aktiviert werden.
Troubleshooting
„HTTP 401 Unauthorized" im Log
Client-Secret abgelaufen oder falsch eingegeben. Prüfen Sie im Entra Admin Center die Gültigkeit und tragen Sie ggf. einen neuen Wert in den SMTPly-Einstellungen ein.
„HTTP 403 Forbidden"
Admin-Consent für Mail.Send fehlt, oder eine Application Access Policy begrenzt die App. Kontrollieren Sie in der App-Registrierung den Status der API-Berechtigungen.
„HTTP 429 Too Many Requests"
Das Tenant-Rate-Limit wurde erreicht. SMTPly wartet automatisch den Retry-After-Zeitraum ab und wiederholt danach. Keine Aktion nötig.
Drucker meldet „Connection refused"
Prüfen Sie: (a) läuft der Dienst? (Dienste-MMC oder Dashboard). (b) Bind-Adresse — bei 127.0.0.1 ist der Port nur lokal erreichbar; setzen Sie auf LAN-IP oder 0.0.0.0. (c) Windows-Firewall — Port explizit freigeben.
„The server committed a protocol violation" / „Timeout while waiting for input"
Tritt bei Absendern auf, die auf .NET aufsetzen — typisch SQL Server Database Mail. Das Muster: Die meisten Mails gehen durch, einzelne scheitern ohne erkennbare Regel.
Ursache ist die Wiederverwendung von Verbindungen. .NET hält eine ungenutzte SMTP-Verbindung bis zu 100 Sekunden im Pool (ServicePointManager.MaxServicePointIdleTime) und greift danach wieder darauf zu. Räumt SMTPly die Sitzung vorher ab, antwortet der Listener mit 421, wo der Client ein 250 erwartet — und meldet einen Protokollverstoß. Mit der Größe der Nachricht hat das nichts zu tun: Die Wartezeit gilt nur zwischen zwei SMTP-Befehlen, nie während der Übertragung. Umfangreiche Mails sind lediglich seltener und stehen dadurch häufiger am Anfang einer Sendepause.
Seit Version 1.7.12 liegt der Standard bei 300 Sekunden und damit sicher über dem .NET-Wert. Für Sonderfälle lässt er sich in %ProgramData%\Smtply\appsettings.json anpassen — dort im Abschnitt SmtpListener:
"SmtpListener": {
"CommandWaitTimeoutSeconds": 300,
"SessionTimeoutMinutes": 10
}
CommandWaitTimeoutSeconds ist die Wartezeit auf den nächsten SMTP-Befehl (erlaubt: 30–3600), SessionTimeoutMinutes die Gesamtdauer einer Sitzung (erlaubt: 1–120). Werte außerhalb des Bereichs werden auf die Grenze gezogen. Nach der Änderung den Dienst Smtply neu starten. Bitte die Datei bei laufendem Dienst nicht bearbeiten — sonst überschreibt SMTPly Ihre Änderung beim nächsten Speichern.
„Kein gültiges M365-Postfach"
Die Absender-Adresse muss ein lizenziertes Exchange-Online-Postfach sein — Shared Mailboxes funktionieren, Distribution Lists nicht. Auch Gast-Accounts oder nicht-lizenzierte Nutzer schlagen fehl.
Häufige Fragen
Kann SMTPly den IIS-SMTP-Service / das IIS-6.0-SMTP-Relay ersetzen?
Ja, das ist sogar einer der häufigsten Anwendungsfälle. Microsoft hat den IIS-6.0-SMTP-Service offiziell als deprecated markiert — er ist zwar in Windows Server 2025 noch enthalten, soll aber in kommenden Versionen entfernt werden. Außerdem kann er kein OAuth2: Mails über Exchange Online laufen lassen geht damit nur per Basic Auth, und das schaltet Microsoft bis Dezember 2026 endgültig ab.
SMTPly ist die moderne Lösung für genau dieses Szenario: identische Rolle (lokaler SMTP-Relay-Host für Drucker, ERP, Scanner und Branchen-Software), aber mit OAuth2-Übersetzung zu Microsoft Graph, GUI, Mail-Tracker, Retry-Logik und einer aktiv gepflegten Codebasis. Migration: IIS-SMTP-Dienst stoppen, SMTPly installieren, Bind-Port auf 25 (oder 587) lassen, Geräte-Konfigurationen behalten ihre Ziel-IP — fertig.
Ist das automatische Konfigurations-Backup verschlüsselt — und was braucht es für einen UNC-/SMB-Pfad?
Ja — die komplette Datei ist verschlüsselt, beim manuellen Export genauso wie beim geplanten. Geschützt wird mit Ihrer Backup-Passphrase über PBKDF2-SHA256 (600.000 Iterationen) und AES-256-GCM. Lesbar bleibt nur eine kurze Hülle mit Formatkennung und Erstellungsdatum, damit man einer Datei auch ohne Passphrase ansieht, was sie ist:
{
"format": "smtply-encrypted-backup",
"version": 1,
"createdAt": "2026-07-30T23:51:45+02:00",
"payload": "portable:v1:600000:…"
}
Alles Übrige — Tenant- und Client-IDs, Client Secrets, Absenderadressen, Domänen- und IP-Whitelists, Ports, SMTP-Benutzer und Pfade — steckt im verschlüsselten Block. Zusätzlich sind die Zugangsdaten darin noch einmal einzeln verschlüsselt, sodass sie auch nach dem Entpacken nicht offen liegen. Die Backup-Passphrase selbst wird nie mitgesichert.
AES-GCM erkennt jede nachträgliche Änderung an der Datei: Eine beschädigte oder manipulierte Sicherung wird beim Import abgewiesen, statt halb eingespielt zu werden. Ohne die Passphrase ist die Datei nicht wiederherstellbar — bewahren Sie sie getrennt von den Backups auf, sonst nützt Ihnen die beste Sicherung im Ernstfall nichts.
Berechtigungen auf UNC-/SMB-Pfaden. Der SMTPly-Dienst läuft standardmäßig als LocalSystem. Dieses Konto ist nicht Ihr angemeldeter Benutzer: Beim Zugriff auf eine Netzwerkfreigabe meldet sich der Server mit seinem Computerkonto an, also DOMÄNE\SERVERNAME$. Ein Pfad, den Sie im Explorer problemlos beschreiben können, ist für den Dienst deshalb oft trotzdem gesperrt.
Damit der geplante Export funktioniert, geben Sie dem Computerkonto Schreibrecht — und zwar an beiden Stellen:
- Freigabeberechtigung der SMB-Freigabe:
DOMÄNE\SERVERNAME$→ Ändern - NTFS-Berechtigung des Zielordners:
DOMÄNE\SERVERNAME$→ Ändern
Prüfen lässt sich das vorab in einer Administrator-PowerShell auf dem SMTPly-Server:
# Test im Kontext des Computerkontos (benötigt PsExec aus den Sysinternals)
psexec -s -accepteula powershell -Command "New-Item '\\nas\backup\smtply\test.txt' -ItemType File; Remove-Item '\\nas\backup\smtply\test.txt'"
Alternativ lassen Sie den Dienst unter einem Domänen-Benutzerkonto oder einem group Managed Service Account (gMSA) laufen — dann gelten dessen Rechte. Umstellen können Sie das in der Diensteverwaltung unter Eigenschaften → Anmelden.
Schlägt der Zugriff fehl, steht die Ursache im System-Log und in den Einstellungen unter „Letztes Backup" — inklusive Hinweis auf das Computerkonto. Ein nicht erreichbares Ziel blockiert den Mail-Versand nicht: Beide Wege werden unabhängig voneinander versucht.
Kann SMTPly hMailServer ersetzen?
Als SMTP-Relay zu Microsoft 365: ja. Viele Installationen nutzen hMailServer ausschließlich als lokalen Smarthost — Geräte liefern per SMTP ein, hMailServer leitet an Exchange Online weiter. Genau diese Rolle übernimmt SMTPly, mit dem Unterschied, dass die Weiterleitung über OAuth2 und Microsoft Graph läuft statt über Benutzername und Passwort.
Der Anlass ist meist derselbe: hMailServer wird seit Jahren nicht mehr weiterentwickelt, die letzte Version kennt kein OAuth2 und bringt eine veraltete OpenSSL-Version mit. Sobald Microsoft SMTP Basic Auth abschaltet, steht die Weiterleitung — nachrüsten lässt sich das nicht.
Was SMTPly nicht ist: ein vollwertiger Mailserver. Postfächer, POP3/IMAP-Abruf, lokale Zustellung und Verteilerlisten gibt es nicht — die liegen bei Microsoft 365. Wer hMailServer als eigenständigen Mailserver mit lokalen Postfächern betreibt, braucht dafür weiterhin eine andere Lösung.
Umstieg: hMailServer-Dienst stoppen, SMTPly installieren, denselben Port belegen (meist 25) — die Geräte behalten ihre Ziel-IP und müssen nicht angefasst werden. Absender-Whitelist und IP-Beschränkungen bilden Sie in den SMTPly-Einstellungen nach.
Erscheinen die versendeten Mails in „Gesendete Elemente"?
Ja. SMTPly übergibt jede Mail über sendMail an Microsoft Graph, und Microsoft legt dabei automatisch eine Kopie im Postfach der Absenderadresse unter Gesendete Elemente ab. Sie sehen dort also denselben Verlauf wie bei einer Mail, die aus Outlook heraus verschickt wurde — inklusive Anhängen.
Für viele Anwendungsfälle ist genau das der Grund, SMTPly einzusetzen: Ein klassischer SMTP-Relay stellt die Nachricht zu und vergisst sie danach. Über Microsoft Graph bleibt sie im Postfach nachvollziehbar, und Kolleginnen und Kollegen mit Zugriff auf ein gemeinsames Postfach sehen, was das Fachverfahren verschickt hat.
Das Verhalten kommt von Microsoft und lässt sich beim Versand im MIME-Format nicht abschalten. Wenn Sie keine Kopien wünschen, hilft nur eine Aufbewahrungsrichtlinie auf dem betreffenden Postfach.
Verändert SMTPly meine E-Mails?
Nein. Was Ihr Gerät per SMTP übergibt, geht Byte für Byte an Microsoft Graph weiter — Header, Kodierungen, Multipart-Grenzen, eingebettete Bilder und Anhänge bleiben unverändert. SMTPly liest die Nachricht nur mit, um Absender, Empfänger, Betreff und Größe für den Mail-Tracker anzuzeigen; die Original-Bytes werden dabei nicht angefasst. Es wird auch kein zusätzlicher Received-Header gesetzt.
Genau zwei eng begrenzte Ausnahmen gibt es, beide betreffen jeweils eine einzelne Header-Zeile:
Absender-Override: Wenn Sie alle Mails unter einer festen Adresse verschicken lassen, wird die From:-Zeile ersetzt — Microsoft Graph akzeptiert keine Nachricht, deren Absender von der sendenden Mailbox abweicht. Ohne Override greift das nicht.
Journal-BCC (Business/Enterprise): Ist ein Archiv-Postfach hinterlegt, fügt SMTPly eine Bcc:-Zeile mit dieser Adresse hinzu, damit die Blindkopie zugestellt wird. Microsoft entfernt die Zeile wie bei jedem BCC vor der Auslieferung an die Empfänger — sichtbar ist davon nichts. Ohne konfiguriertes Journal-Postfach greift auch das nicht.
In beiden Fällen wird ausschließlich die betroffene Zeile getauscht bzw. eingefügt; Body, Anhänge und alle übrigen Header bleiben byte-identisch.
Wie richte ich Webhooks ein (Teams, Slack, Ticketsystem, n8n)?
Ab Version 1.7.16 kann SMTPly bei Betriebsereignissen einen HTTP-POST an eine Adresse Ihrer Wahl senden (Business/Enterprise). Damit landen Störungen dort, wo Sie ohnehin hinschauen, statt in einem Postfach unterzugehen: als Nachricht in einem Teams- oder Slack-Kanal, als Ticket im PSA-System oder als Auslöser in n8n, Node-RED oder Power Automate.
Einrichtung
In den Einstellungen unter Webhooks: Haken setzen, Ziel-URL eintragen, optional ein Signatur-Geheimnis vergeben und auswählen, welche Ereignisse gesendet werden sollen. Danach speichern und mit „Testereignis senden" prüfen — der Knopf benutzt exakt denselben Weg wie der Dienst im Ernstfall, ein erfolgreicher Test ist also aussagekräftig.
https wird überall akzeptiert. Einfaches http nur für Ziele im eigenen Netz (Loopback, 10.x, 172.16–31.x, 192.168.x, 169.254.x, CGNAT), weil der Payload Absender, Empfänger und Betreff enthält und das über das Internet nichts unverschlüsselt zu suchen hat.
Ereignisse
| Ereignis | Wann |
|---|---|
delivery.failed | Eine Mail konnte nach allen Wiederholungsversuchen nicht zugestellt werden |
relay.paused | Microsoft Graph ist nicht erreichbar, der Versand pausiert |
relay.resumed | Der Versand läuft wieder |
certificate.expiring | Das STARTTLS-Zertifikat läuft in 30 Tagen oder weniger ab |
secret.expiring | Das Azure-Client-Secret läuft demnächst ab |
test | Manuell über den Test-Knopf ausgelöst |
Aufbau des Aufrufs
POST mit Content-Type: application/json, dazu die Header X-Smtply-Event (Ereignisname) und, falls ein Geheimnis hinterlegt ist, X-Smtply-Signature.
{
"event": "delivery.failed",
"timestamp": "2026-07-31T08:45:13+02:00",
"server": "SRV-RELAY01",
"version": "1.7.16",
"data": {
"from": "drucker@example.com",
"to": "buchhaltung@example.com",
"subject": "Scan vom 31.07.2026",
"error": "HTTP 403 Forbidden",
"tenant": "Hauptmandant",
"attempts": 5
}
}
Die Felder in data unterliegen Ihren Datenschutz-Einstellungen: Ist die Maskierung aktiv, kommen Adressen und Betreff bereits maskiert an.
Signatur prüfen
Ist ein Geheimnis hinterlegt, enthält X-Smtply-Signature einen HMAC-SHA256 über den exakten Request-Body im Format sha256=<hex>. Der Empfänger bildet denselben HMAC nach und weiß damit, dass der Aufruf wirklich von dieser Installation stammt und unterwegs nicht verändert wurde:
# PowerShell-Beispiel für den Empfänger
$secret = "IhrSignaturGeheimnis"
$body = $request.Body # exakt wie empfangen, nicht neu formatieren
$hmac = [System.Security.Cryptography.HMACSHA256]::new([Text.Encoding]::UTF8.GetBytes($secret))
$hash = $hmac.ComputeHash([Text.Encoding]::UTF8.GetBytes($body))
$expected = "sha256=" + ([BitConverter]::ToString($hash) -replace '-','').ToLower()
if ($expected -ne $request.Headers["X-Smtply-Signature"]) { throw "Ungueltige Signatur" }
Wichtig: über den unveränderten Body rechnen. Wer das JSON erst parst und neu serialisiert, bekommt eine andere Zeichenfolge und damit eine andere Signatur.
Bei Teams- und Slack-Webhooks können Sie das Geheimnis weglassen — dort schützt die nicht erratbare URL.
Zustellverhalten
Bis zu drei Versuche im Abstand von 2 und 6 Sekunden. Antwortet der Empfänger mit einem 4xx-Fehler (außer 408 und 429), wird nicht wiederholt, weil das ein Konfigurationsfehler ist und ein erneuter Versuch nichts ändern würde. Ein Webhook ist eine Benachrichtigung, keine garantierte Zustellung — der verlässliche Nachweis bleibt der Mail-Tracker. Der Versand läuft nebenläufig: Ein langsamer oder nicht erreichbarer Empfänger bremst den Mail-Betrieb nicht aus. Das Ergebnis des letzten Versuchs steht in den Einstellungen unter „Letzter Zustellversuch".
Wie binde ich SMTPly an mein Monitoring an (PRTG, Zabbix, CheckMK, Prometheus)?
Ab Version 1.7.13 bringt SMTPly einen HTTP-Monitoring-Endpoint mit (Business/Enterprise). Aktivierung in den Einstellungen unter Monitoring (Checkbox + Port, Standard 8025), danach den Dienst neu starten. Der Endpoint ist standardmäßig deaktiviert und antwortet nur auf 127.0.0.1 — die Antworten enthalten ausschließlich Zähler und Statuswerte, keine Adressen, Betreffe oder Mail-Inhalte.
GET /health — für HTTP-Sensoren
Liefert HTTP 200, solange der Relay arbeitsfähig ist, und HTTP 503, wenn der Versand pausiert (Microsoft Graph nicht erreichbar, Circuit-Breaker offen). Ein simpler HTTP-Sensor genügt also: 200 = grün, alles andere = Alarm.
{
"status": "ok", // "ok" oder "degraded"
"version": "1.7.13",
"uptimeSeconds": 86400, // Sekunden seit Dienststart
"queueLength": 0, // Mails in Warteschlange/Retry
"circuitBreaker": "Closed", // Closed | Open | HalfOpen
"today": { "sent": 312, "failed": 1, "pending": 0 }
}
Die Tageszähler beziehen sich auf den lokalen Kalendertag des Servers — dieselben Werte wie die Dashboard-Kacheln.
GET /metrics — Prometheus-Textformat
smtply_up 1
smtply_uptime_seconds 86400
smtply_queue_length 0
smtply_circuit_breaker_open 0
smtply_mails_sent_today 312
smtply_mails_failed_today 1
smtply_mails_pending_today 0
Sinnvolle Alarme: smtply_up fehlt (Dienst weg), smtply_circuit_breaker_open == 1 (Versand pausiert), smtply_queue_length wächst dauerhaft, smtply_mails_failed_today steigt sprunghaft.
Anbindung typischer Systeme
PRTG: Sensor „HTTP" oder „HTTP Advanced" auf http://<server>:8025/health — Statuscode 200 als OK-Bedingung reicht. Wer Werte als Kanäle möchte, nimmt „EXE/Script Advanced" mit dem PowerShell-Skript unten. Zabbix: HTTP-Agent-Item auf /health, Werte per JSONPath-Preprocessing (z. B. $.queueLength); alternativ nativ /metrics über den Prometheus-Support. CheckMK: aktiver HTTP-Check auf /health oder ein Local Check auf Basis des Skripts unten. Prometheus/Grafana: Scrape-Job direkt auf /metrics.
RMM-Plattformen: In N-able N-sight das Skript unten als „Script Check" hinterlegen (Exit-Code ≠ 0 = Alarm), in N-able N-central als Automation-Policy (AMP) bzw. benutzerdefinierten Dienst-Check. Auch Octoja und vergleichbare RMM-Lösungen mit Skript-Sensoren binden SMTPly über genau dieses Muster an — da der Agent lokal auf dem Server läuft, genügt der Standard-Bind auf 127.0.0.1, ohne Firewall-Freigabe.
PowerShell-Beispiel
Universeller Health-Check — als Task-Scheduler-Prüfung, Zabbix-UserParameter oder PRTG-„EXE/Script Advanced" (Exit-Code 0 = OK, 1 = Warnung, 2 = Fehler):
# smtply-healthcheck.ps1 — Beispiel, Port ggf. anpassen
$url = "http://127.0.0.1:8025/health"
try {
$h = Invoke-RestMethod -Uri $url -TimeoutSec 5
if ($h.circuitBreaker -eq "Open") {
Write-Output "CRITICAL: Versand pausiert (Circuit-Breaker offen), Queue=$($h.queueLength)"
exit 2
}
if ($h.queueLength -gt 50) {
Write-Output "WARNING: Queue-Rueckstau ($($h.queueLength) Mails)"
exit 1
}
Write-Output "OK: v$($h.version), heute $($h.today.sent) gesendet, $($h.today.failed) fehlgeschlagen, Queue=$($h.queueLength)"
exit 0
}
catch {
Write-Output "CRITICAL: SMTPly-Endpoint nicht erreichbar ($($_.Exception.Message))"
exit 2
}
Abfrage aus dem LAN: Standardmäßig antwortet der Endpoint nur lokal. Für Remote-Polling in %ProgramData%\Smtply\appsettings.json unter Monitoring die BindAddress auf die LAN-IP oder 0.0.0.0 setzen, Dienst neu starten und den Port in der Windows-Firewall gezielt für den Monitoring-Server freigeben. Der Endpoint hat bewusst keine Authentifizierung — die Firewall-Regel ist die Zugriffskontrolle.
Läuft SMTPly auch ohne Windows-Dienst?
Ja — Sie können Smtply.exe einfach als Desktop-Anwendung starten. Der Relay läuft dann solange die GUI offen ist. Für produktiven 24/7-Betrieb ist die Dienst-Variante aber besser: kein angemeldeter Benutzer nötig, Auto-Start mit Windows.
Kann ich mehrere Tenants mit einer SMTPly-Installation bedienen?
Ja, ab der Business-Edition. Business (249 €) bedient bis zu 5 Microsoft-365-Tenants gleichzeitig auf einem Windows-Server, Enterprise (auf Anfrage) 10+. Routing wahlweise per Sender-Domain (Mail von alice@firma1.de geht über Tenant „Firma 1") oder per AUTH-User-Bindung (ein konfigurierter AUTH-User ist fest an einen Tenant gebunden).
In der Starter-Edition (149 €) wird genau ein Tenant unterstützt. Wer von Starter auf Business upgraden möchte: Business-Lizenz kaufen, in den Einstellungen auf der Lizenz-Seite den neuen Schlüssel aktivieren — Multi-Tenant-UI wird sofort freigeschaltet, vorhandene Single-Tenant-Konfig bleibt als „Hauptmandant" erhalten.
Kann ich SMTP-Sender mit Benutzername und Passwort authentifizieren?
Ja. SMTPly unterstützt seit v1.5.4 AUTH LOGIN und AUTH PLAIN auf dem Listener. Passwörter werden als PBKDF2-SHA256-Hash mit per-User-Salt gespeichert — nicht rückgewinnbar, auch nicht vom Admin. Drei Sub-Modi:
- AUTH aus (Default): Sender werden ausschließlich über die IP-Whitelist geprüft.
- AUTH anbieten: AUTH wird im EHLO beworben. Sender mit AUTH werden bevorzugt zugeordnet, Sender ohne AUTH fallen auf die IP-/Domain-Whitelist zurück.
- AUTH erzwingen: Unauthentifizierte MAIL FROM werden mit SMTP 530 abgelehnt.
Für Klartextpasswörter ist standardmäßig STARTTLS Voraussetzung; ein expliziter „Plaintext-AUTH ohne TLS erlauben"-Toggle existiert für Legacy-Geräte, die kein STARTTLS beherrschen — bewusst opt-in und mit deutlicher Warnung versehen.
Mein Gerät verlangt eine „SSL"-Verbindung, aber SMTPly bietet nur STARTTLS an — was tun?
Ältere Geräte (z.B. Industriesteuerungen, Räucherkammer- oder Kühlanlagen-Controller) sprechen oft eine Verschlüsselungsvariante, die in ihrer Bedienoberfläche schlicht „SSL" heißt: implizites TLS. Dabei ist die Verbindung ab dem ersten Byte verschlüsselt, ohne die Klartext-Phase, die STARTTLS voraussetzt. Passt das nicht zusammen, scheitert das Gerät typischerweise mit einer Fehlermeldung wie SSL23_GET_SERVER_HELLO:unknown protocol.
Seit Version 1.7.5 unterstützt SMTPly genau diesen Fall: In den Einstellungen unter SMTP-Listener → TLS/SSL steht neben STARTTLS auch „Implizites TLS/SSL" als Modus zur Auswahl. Beide Modi teilen sich dieselbe Zertifikatsauswahl (selbstsigniert, PEM oder PFX) und schließen sich gegenseitig aus — ein Listener-Port bedient immer nur einen der beiden Modi.
Haben Sie sowohl alte „SSL"-Geräte als auch neuere STARTTLS-Geräte gleichzeitig im Einsatz, muss das kein Widerspruch sein: Ab der Business-Edition lassen sich mehrere SMTP-Listener-Ports parallel betreiben, jeder mit eigenem TLS-Modus. Die alten Geräte zeigen dann einfach auf den einen Port (implizites TLS), die neueren auf einen anderen (STARTTLS) — ganz ohne Einzelkonfiguration pro Gerät.
Gibt es eine Linux-Version?
Aktuell nein — SMTPly ist Windows-nativ (DPAPI, Windows-Dienst, WPF). Eine Linux-Variante steht nicht auf der Roadmap. Für gemischte Umgebungen ist der Windows-Server als dedizierter Relay-Host die unkomplizierte Lösung.
Beim Download / Start warnt Windows „nicht häufig heruntergeladen" — ist die Datei unsicher?
Nein, das ist eine SmartScreen-Reputationswarnung, keine Malware-Erkennung. Microsoft Defender SmartScreen blockiert standardmäßig alle Dateien, die noch keine ausreichende Download-Reputation aufgebaut haben — bei einem brandneuen Release ist das jede Datei mit neuem Hash. Die Warnung verschwindet automatisch, sobald genug Nutzer dieselbe Datei heruntergeladen und ausgeführt haben.
Seit Version 1.7.18 ist der Installer digital signiert, ausgestellt auf IT-Beratung - Andreas Hähnel. Das ändert zwei Dinge sofort: Die Benutzerkontensteuerung nennt beim Start den Herausgeber im Klartext statt „Unbekannter Herausgeber", und die Herkunft der Datei lässt sich unabhängig von der Downloadquelle prüfen. Die SmartScreen-Warnung selbst verschwindet dadurch nicht sofort — die Reputationsbewertung hängt weiter an den Downloadzahlen der konkreten Datei. Die Signatur ist die Voraussetzung dafür, dass Reputation überhaupt aufgebaut werden kann, nicht der Schalter, der die Warnung abstellt.
So führen Sie die Installation trotzdem aus:
- Browser-Download: „Behalten" → „Trotzdem behalten".
- Beim Start: „Windows hat Ihren PC geschützt" → „Weitere Informationen" → „Trotzdem ausführen".
Signatur prüfen: Rechtsklick auf die EXE → Eigenschaften → Digitale Signaturen → Eintrag markieren → Details. Als Signaturgeber muss IT-Beratung - Andreas Hähnel stehen, die Kette führt über Microsoft ID Verified CS EOC CA zur Microsoft Identity Verification Root Certificate Authority 2020. Per PowerShell:
Get-AuthenticodeSignature SMTPly-Setup-latest.exe | Format-List Status, SignerCertificate
SHA-256 vergleichen: Die Prüfsumme gilt unverändert weiter und ist nach wie vor die schärfste Kontrolle. Sie steht auf der Download-Seite und in jedem GitHub-Release:
Get-FileHash SMTPly-Setup-latest.exe -Algorithm SHA256
Stimmen die Hashes überein, ist die Datei bit-identisch mit dem, was wir gebaut und veröffentlicht haben. SmartScreen-Reputation ist nur ein Heuristik-Signal — SHA-256 ist kryptographisch eindeutig.
Wie signiert wird: über Azure Artifact Signing. Der private Schlüssel liegt nicht auf unserer Build-Maschine, sondern verlässt Microsofts Hardware-Sicherheitsmodul nie; der Build reicht nur den Hash zum Signieren ein. Die ausgestellten Zertifikate sind absichtlich extrem kurzlebig, deshalb trägt jede Signatur einen Zeitstempel und bleibt auch nach Ablauf des Zertifikats gültig.
Wie aktualisiere ich auf eine neue Version?
Einfach den neuen Installer starten. Er erkennt die bestehende Installation, ersetzt die Binaries und behält Konfiguration, Lizenz und Logs unter %ProgramData%\Smtply\ unverändert bei. Ab Version 1.3.0 weist SMTPly Sie selbständig auf verfügbare Updates hin — einmal täglich wird die öffentliche Release-API geprüft und die Release-Notes werden direkt in der „Über"-Seite angezeigt.
Werde ich automatisch gewarnt, wenn das Azure Client Secret abläuft?
Ja, wenn Sie in den Einstellungen unter Microsoft 365 → E-Mail-Benachrichtigungen eine Empfänger-Adresse hinterlegen. SMTPly sendet dann eine Warn-Mail an diese Adresse, sobald das Ablaufdatum näher rückt. Versendet wird über dieselbe E-Mail-Adresse, die auch für den Mail-Relay konfiguriert ist.
Standardmäßig startet die Warnung 14 Tage vor Ablauf (konfigurierbar). Weitere automatische Warnungen folgen bei 7, 3, 1 und 0 Tagen Restlaufzeit — jede Schwelle wird genau einmal gesendet. Nach dem Ablauf werden keine E-Mails mehr versendet, weil die Microsoft-365-Authentifizierung dann nicht mehr funktioniert; der farblich hervorgehobene Warnhinweis in den Microsoft-365-Einstellungen der GUI bleibt aber bestehen.
Kann ich regelmäßig einen Nutzungs-Bericht per E-Mail erhalten?
Ja. In den Einstellungen unter Microsoft 365 → E-Mail-Benachrichtigungen können Sie zusätzlich zur Secret-Ablauf-Warnung einen Report-Rhythmus wählen: täglich, wöchentlich oder monatlich. Der Bericht wird an dieselbe Benachrichtigungs-Adresse geschickt und enthält Gesamtzahlen (versandt / fehlgeschlagen / abgelehnt), durchschnittliche Versanddauer, Top-Absender, Top-Empfänger-Domänen und die häufigsten Fehlerursachen für den jeweiligen Zeitraum.
Der Versand respektiert Ihre Privacy-Einstellungen — bei aktivem Masking zeigt der Report maskierte Adressen, bei deaktiviertem „Adressen loggen" werden Top-Listen weggelassen. Ausschalten lässt sich der Report jederzeit mit der Option „Keine Berichte".
Werden E-Mail-Inhalte gespeichert?
Nein. SMTPly speichert ausschließlich Metadaten (Zeitstempel, Adressen, Betreff, Größe, Status) im Mail-Tracker — Body und Anhänge werden nach erfolgreicher Weiterleitung oder endgültigem Fehlschlag sofort verworfen (DSGVO-Grundsatz der Datenminimierung).
Wie unterstütze ich den Support bei der Fehlersuche, ohne sensible Daten weiterzugeben?
Unter Hilfe / FAQ → Diagnose-Paket erstellen baut SMTPly ein ZIP-Archiv, das Sie z.B. per E-Mail an den Support schicken können. Enthalten sind die letzten System-Log-Dateien, eine maskierte Übersicht der zuletzt versendeten E-Mails (Absender, Empfänger und Betreff sind geschwärzt — unabhängig von Ihrer sonst eingestellten Masking-Stufe, weil das Paket Ihre Maschine verlässt), die öffentlichen Zertifikatsdaten (Gültigkeit, Aussteller, Thumbprint — niemals der private Schlüssel) sowie eine Zusammenfassung der nicht-geheimen Konfiguration (Listener, TLS-Modi, Lizenz-Edition). Die Absender-IP-Adresse bleibt bewusst im Klartext, weil sie für Netzwerk- und Firewall-Diagnosen gebraucht wird.
Passwörter, Client Secrets, Lizenzschlüssel und private Zertifikatsschlüssel sind niemals enthalten. Vor der Erstellung erscheint ein deutlicher Warnhinweis — das Paket wird nur lokal erzeugt, ein Versand erfolgt ausschließlich, wenn Sie es aktiv an eine vertrauenswürdige Stelle weitergeben.
Gibt es einen Selbsttest, um das Setup zu prüfen?
Ja. Unter Hilfe / FAQ → Selbsttest durchführen prüft SMTPly den eigenen Zustand in einem Klick: Windows-Dienst läuft, Schreibrechte im Konfigurationsverzeichnis, Port-Belegung, eine echte Verbindung zum eigenen Listener (inklusive TLS-Handshake bei implizitem TLS), Zertifikat-Gültigkeit, Entschlüsselung des Client Secrets sowie Erreichbarkeit von Microsoft Graph. Jeder Punkt wird als grün/gelb/rot markiertes Ergebnis mit Klartext-Erklärung angezeigt.
Wichtig: Diese Prüfungen laufen über 127.0.0.1 (localhost) — die Windows-Firewall filtert Loopback-Verkehr grundsätzlich nicht. Ein grünes Ergebnis beweist also, dass der Listener lokal sauber arbeitet, aber nicht, dass ein externes Gerät (z.B. der Drucker oder das ERP-System) tatsächlich durch die Firewall kommt. Für genau diesen Fall bietet die Seite einen fertigen Test-NetConnection-Befehl zum Kopieren, den Sie auf dem sendenden Gerät ausführen können, um die echte Erreichbarkeit zu verifizieren.
Was passiert, wenn Microsoft Graph ausfällt — oder der Server neu startet?
Empfangene Mails landen zuerst in einer lokalen, persistenten Warteschlange (queue.db) und erst danach in der In-Memory-Versand-Queue. Fällt Graph kurz aus, greift Exponential-Backoff; startet der Windows-Dienst neu (oder der ganze Server), lädt SMTPly die Wartenden beim Hochfahren automatisch wieder nach und stellt sie zu. Erst nach erfolgreichem Versand — oder nach endgültigem Fehlschlag — wird der Rohinhalt gelöscht.
Die GUI zeigt während eines Graph-Ausfalls einen Warnbanner im Dashboard; der Circuit-Breaker verhindert, dass sinnlose Retries den Token verbrennen.
Darf ich SMTPly in regulierten Branchen einsetzen (Gesundheit, Recht, Finanzen)?
Ja — SMTPly wurde bewusst so entworfen, dass keine Daten an Dritte fließen. Die Verarbeitung bleibt innerhalb Ihrer bestehenden M365-Vertragsbeziehung. Prüfen Sie trotzdem Ihre interne Compliance (z.B. ob Legacy-Geräte überhaupt personenbezogene Daten versenden dürfen).
Kontakt
Support-Anfragen, Feature-Wünsche oder Angebote für Enterprise-Editionen:
- E-Mail: mail@smtply.app
- Web: www.it-consulting.com
- Post: IT Beratung – Andreas Hähnel, Neukircher Str. 3, 74357 Bönnigheim

