SMTP Auth 365 Connector – SMTP-/POP3-Anbindung für Microsoft 365
SMTP Auth 365 Connector
ZweckSMTP- und POP3-Anbindung für Microsoft 365
Überblick
SMTP Auth 365 Connector ermöglichtverbindet einerältere älterenAnwendungen und Mailprogramme mit
Microsoft 365. Die angebundene Anwendung kann weiterhin klassisches SMTP AUTH
für den MailversandVersand überund POP3 für den Abruf verwenden. Die Kommunikation mit
Microsoft 365 underfolgt den Abruf des Posteingangssicher über POP3, obwohl die Anwendung
selbst kein OAuth2 unterstützt.und Microsoft Graph.
AlteÄltere Anwendung
│
├── SMTP AUTH LOGIN/PLAIN
▼──► SMTP Auth 365 Connector Windows-Dienst
│ persistente lokale Warteschlange
▼──► Microsoft Graph mit──► App-only-OAuth2Versand
│
klein:└── /users/{Postfach}/sendMailPOP3 │ groß: Entwurf + Anhänge + /send
▼
Exchange Online
Für den Abruf gilt die umgekehrte Richtung:
Alter POP3-Client
│ USER = vollständige Postfachadresse
│ PASS = gemeinsames lokales Kennwort
▼◄────── SMTP Auth 365 Connector Windows-Dienst
│◄── Microsoft Graph:Graph Inbox◄── auflisten und MIME über /$value abrufen
▼
Exchange OnlinePosteingang
Es wird keine SMTP-Verbindung zuoder ExchangePOP3-Anmeldung Onlinemit aufgebaut.einem Microsoft-365-Kennwort
durchgeführt. Der AusgangConnector erfolgtverwendet ausschließlichstattdessen übereine HTTPSeigene undAnwendung in
Microsoft Graph.Entra ID.
SystemvoraussetzungenLeistungsumfang
WindowsSMTPServerAUTHbeziehungsweisemitRDS-ServerAUTH LOGINundAUTH PLAIN
From:-Adresse
Ablage versendeter Nachrichten im richtigen Ordner Gesendete Elemente
Versand großer Nachrichten und Anhänge
Persistente Warteschlange mit automatischen Wiederholungsversuchen
Optionales STARTTLS für SMTP und POP3
Freigabe nach Client-IP, Absenderadresse, Absenderdomain und POP3-Postfach
Verschlüsselte Speicherung von Kennwort und Client Secret
Windows-Dienst für den unbeaufsichtigten Betrieb
Grafische Oberfläche für Konfiguration, Status und Live-Protokoll
Voraussetzungen
login.microsoftonline.com,graph.microsoft.com outlook.office.com
outlook.office.com wird
Funktionsweiseinsbesondere derfür Warteschlange
von Nachrichten werden zuerst dauerhaft gespeichert:
<Programmordner>\Queue
├── Incoming
├── Pending
└── DeadLetter
Erst danach erhält die alte Anwendung 250 Queued. IstMicrosoft Graph kurzzeitigbereitgestellte
nichtUpload-Adressen erreichbarbei odergroßen antwortetAnhängen mit 429 Too Many Requests, erfolgt ein späterer
Versuch. Ein von Graph gesendeter Retry-After-Wert wird berücksichtigt.
Nach dauerhaften Graph-Fehlern oder zu vielen Versuchen wird die Nachricht nach
DeadLetter verschoben. Dieser Ordner muss überwacht werden.benötigt.
1. AnwendungVorbereitung in Microsoft Entra365
App-Registrierung anlegen
- Öffnen Sie das Microsoft Entra Admin Center
öffnen.. - Wechseln Sie zu Identität → Anwendungen → App-Registrierungen
öffnen.. EineErstellenmandanteninterneSieAnwendungeine neue, nur für den eigenen Mandanten vorgesehene Anwendung.
SMTP Auth 365 ConnectorDasDer ClientSecret-Wert Secretkann wirdim Microsoft-Portal später DPAPI-verschlüsseltnicht gespeicherterneut undangezeigt niemalswerden.
inHinterlegen Sie App.configeingetragen.außerdem einen internen Termin zur rechtzeitigen Erneuerung vor
dem Ablaufdatum.
2. Globale
Microsoft-Graph-BerechtigungBerechtigungen vergeben
InFügen derSie Entra-App:
Mail.Send
Mail.ReadWrite
Erteilen Sie anschließend die Administratorzustimmung für den Mandanten.
erteilen.
kann Mail.Senderlaubtder denConnector Versand ohne angemeldeten Benutzer. Mail.ReadWrite ist
für den Großnachrichtenweg und den POP3-Abruf erforderlich: Der Dienst legt
Entwürfe an, liest MIME-Nachrichten, setztnicht auf Wunschdie den Gelesen-Status und
führt bestätigte POP3-Löschungen aus. Beide globalen
Anwendungsberechtigungen gelten standardmäßig für alle Postfächer. Der Dienst
verwendet jedoch nur Absender aus AllowedSenderAddresses beziehungsweise der
optionalen Domänenfreigabe und POP3-Postfächer
aus AllowedPop3Mailboxes oder
AllowedPop3MailboxDomains.zugreifen.
DerMicrosoft-Dokumentation zu Graph-Aufruf erfolgt immer exakt über dieses Postfach:Berechtigungen
From:Zugriff test@kunde.deauf →Postfächer POST /users/test@kunde.de/sendMail
begrenzen
Die ausGraph-Anwendungsberechtigungen können From:gelesenestandardmäßig Adresse wird als Graph-Zielpostfach verwendet und erneut
als MIME-Absender eingesetzt. Microsoft Graph speichert die versendete Nachricht
automatisch im Ordner Gesendete Elemente dieses Postfachs.
Microsoft: Graph-Berechtigungen – Mail.Send und Mail.ReadWrite
3. Empfohlene EinschränkungZugriff auf einalle
Postfach
Postfächer Diedes globaleMandanten Entra-Berechtigungermöglichen. ist einfach einzurichten, besitzt aberFür einen sehrmöglichst großenkleinen
Berechtigungsumfang. Für eine zukunftsorientierte Least-Privilege-
KonfigurationBerechtigungsumfang empfiehlt Microsoftsich Role Based Access Control for Applications
in Exchange Online. Dieses Verfahren ersetzt die älteren Application Access
Policies.
Microsoft:Microsoft-Dokumentation zu Application RBAC for Applications in Exchange Online
Wichtig:Die BerechtigungenEinrichtung ausvon Entra und Exchange-RBAC wirken additiv. Wenn du eine
echte Postfachbeschränkung überExchange Application RBAC verwendest,sollte müssendurch die globalenzuständige
Mail.Send-Microsoft-365-Administration erfolgen. Wichtig ist, dass die für SMTP und Mail.ReadWrite-AnwendungsberechtigungenPOP3
in Entra anschließend
entfernt werden. Im Exchange-RBAC-Scope müssen dann beide Rollen vergeben sein.
Schematisches Beispiel:
Connect-MgGraph -Scopes "Application.Read.All"
Connect-ExchangeOnline
$clientId = "CLIENT-ID-DER-APP"
$mailbox = "smtp@firma.at"
$entraServicePrincipal = Get-MgServicePrincipal `
-Filter "appId eq '$clientId'"
New-ServicePrincipal `
-AppId $clientId `
-ObjectId $entraServicePrincipal.Id `
-DisplayName "SMTP Auth 365 Connector"
Set-Mailbox -Identity $mailbox -CustomAttribute15 "SMTPAuth365Connector"
New-ManagementScope `
-Name "SMTPAuth365Connector-Mailbox" `
-RecipientRestrictionFilter "CustomAttribute15 -eq 'SMTPAuth365Connector'"
New-ManagementRoleAssignment `
-Name "SMTPAuth365Connector-Mail.Send" `
-App $entraServicePrincipal.Id `
-Role "Application Mail.Send" `
-CustomResourceScope "SMTPAuth365Connector-Mailbox"
New-ManagementRoleAssignment `
-Name "SMTPAuth365Connector-Mail.ReadWrite" `
-App $entraServicePrincipal.Id `
-Role "Application Mail.ReadWrite" `
-CustomResourceScope "SMTPAuth365Connector-Mailbox"
Test-ServicePrincipalAuthorization `
-Identity $entraServicePrincipal.Id `
-Resource $mailbox
Prüfe vorher, ob CustomAttribute15 bereits anderweitig verwendet wird.
RBAC-Änderungen können wegen Zwischenspeicherung verzögert wirksam werden.
Bei mehreren erlaubten Absendepostfächern muss das gewählte Attribut bei jedem
dieserbenötigten Postfächer gesetzt werden, damit allevollständig im Managementgewählten ScopeBereich enthalten sind.
Sicherheitshinweis: Berechtigungen aus Microsoft Entra ID und Exchange Application RBAC können additiv wirken. Lassen Sie die endgültige Berechtigungskonfiguration durch die Microsoft-365-Administration prüfen.
4.Installation
Programmdateien bereitstellen
C:\SMTPAuth365Connector
SMTPAuth365Connector.exe für die erstmalige Einrichtung mit
Als Administrator ausführen.
Die Dienstinstallation verwendet genau die EXE am aktuellen Speicherort. Eine
zusätzliche Kopie der Anwendung konfigurierenwird nicht angelegt.
Verhalten beim ersten Start
InBeim ersten App.configmindestensStart anpassen:öffnet sich die grafische Oberfläche. Da noch keine
Zugangsdaten hinterlegt sind, kann die lokale Instanz zunächst einen
Konfigurationsfehler anzeigen. Bestätigen Sie diese Meldung und tragen Sie
anschließend unter Einstellungen die benötigten Werte ein.
<addDie key="TenantId"Oberfläche value="TENANT-ID"besteht />aus <adddrei key="ClientId"Bereichen:
Konfiguration
Registerkarte Allgemein
10 Sekunden
Maximale Versandversuche
Höchstzahl der Versuche vor dem Verschieben nach DeadLetter
50
Verbindungs-Timeout
Maximale Dauer einer Verbindung zu Microsoft 365
30 Sekunden
Ausführliche Debugprotokollierung
Schreibt zusätzliche Diagnoseinformationen
Nur zur Fehlersuche aktivieren
Bei leerem Datenpfad DataPathliegenverwendet die DatenAnwendung standardmäßigfolgende direkt im Programmordner:Ordner:
<Programmordner>
├── Logs
├── Pop3State
├── Queue
└── Secrets
Ein explizitabweichender eingetragener abweichenderlokaler Pfad bleibtoder weiterhinUNC-Pfad möglich.kann Beiangegeben derwerden. DienstinstallationDas richtetKonto dasdes
ProgrammWindows-Dienstes benötigt dort die erforderlichen Zugriffsrechte. Bei einem
UNC-Pfad benötigt das Computerkonto des Connector-Computers, beispielsweise
FIRMA\MAILSERVER$, passende Freigabe- und NTFS-Rechte am Zielserver. Außerdem
müssen Netzwerkverbindung und Namensauflösung bereits beim Start des
Windows-Dienstes verfügbar sein. Ein lokaler Datenpfad ist für daseinen Dienstkontobesonders
ein.ausfallsicheren SchreibrechteBetrieb erhältvorzuziehen.
Registerkarte gezieltSMTP
127.0.0.1
SMTP-Port
Port für die ältere Anwendung
2525
Erlaubte Client-IP-Adressen
Geräte, die den Connector verwenden dürfen
127.0.0.1,::1
SMTP-Benutzername
Gemeinsamer lokaler Benutzername
alte-anwendung
Gemeinsames SMTP/POP3-Kennwort
Gemeinsames lokales Kennwort
Sicheres, eigenes Kennwort
Kennwortdatei
Optionaler abweichender Speicherort
Leer lassen
SMTP STARTTLS erzwingen
Erfordert eine verschlüsselte Verbindung vor der Anmeldung
Für LAN-Zugriffe aktivieren
TLS-Zertifikat-Thumbprint
Fingerabdruck des Windows-Zertifikats
Nur bei STARTTLS erforderlich
Erlaubte Absender
Vollständige Adressen erlaubter Absendepostfächer
rechnung@firma.at
Erlaubte Absender-Domains
Alternative Freigabe einer vollständigen Domain
firma.at
Maximale Nachrichtengröße
Grenze der kompletten SMTP-/MIME-Nachricht in Byte
26214400
Maximale Empfänger
Höchstzahl der Empfänger pro Nachricht
100
Mehrere Werte werden mit Komma oder Semikolon getrennt.
Wichtig: Sobald mindestens eine vollständige Adresse unter Erlaubte Absender eingetragen ist, wird ausschließlich diese Adressliste verwendet. Die Domainfreigabe dient nur
aufals Alternative, wenn die Adressliste leer ist.
Registerkarte POP3
<add key="Pop3Enabled" value="true" /> <add key="Pop3ListenAddress" value="127.0.0.1"1/>
2110
eingang@firma.at
firma.at
1000
Maximale POP3-Mailgröße
Maximale MIME-Größe einer Nachricht in Byte
52428800
Nach RETR als gelesen markieren
Markiert vollständig abgerufene Nachrichten in Outlook als gelesen
Nach Bedarf
Übertragene Nachrichten bei QUIT löschen
Löscht erfolgreich übertragene Nachrichten nach sauberem Sitzungsende
Nur nach bewusster Entscheidung aktivieren
Der POP3-Benutzername ist immer die vollständige Mailadresse des gewünschten
Postfachs. DasAls Kennwort istwird dasselbedas gemeinsame lokale SMTP/POP3-Kennwort wieverwendet.
beimDas SMTP-persönliche Eingang.Microsoft-365-Kennwort Esist handelt sichdafür nicht um das Microsoft-365-Kennwort.erforderlich.
Ein Postfach ist erlaubt, wenn entweder seine vollständige Adresse in
AllowedPop3Mailboxes steht oder seine
Domain in
AllowedPop3MailboxDomains enthaltenfreigegeben ist. MehrereEine EinträgeDomain werden durch Komma
getrennt. Domains werdenwird ohne @ eingetrageneingetragen. und gelten nur exakt; dieDie Freigabe von
schließt kunde.defirma.atbeispielsweise tochter. nicht automatisch ein.kunde.defirma.at
Beispiel:Sicherheitshinweis:AlleEinePOP3-Domainfreigabe erlaubt jedem berechtigten Client, mit dem gemeinsamen Kennwort auf alle PostfächervondieserDomainkunde.deerlauben:zuzugreifen, soweit auch die Microsoft-365-App Zugriff besitzt. Einzelne Postfachfreigaben sind daher vorzuziehen.
Registerkarte Microsoft Graph
<addhttps://graph.microsoft.com/v1.0
https:/>/graph.microsoft.com/.default
EinzeladressenKennwort und DomainsClient könnenSecret auchwerden gemeinsamverschlüsselt verwendetfür werden:
<addlokalen key="AllowedPop3Mailboxes"Computer
value="sonderpostfach@firma.at"gespeichert. />
<add key="AllowedPop3MailboxDomains" value="kunde.de,kunde.com" />
Nach dem KompilierenSpeichern heißtzeigt die aktive DateiOberfläche an. Dies
bedeutet, dass bereits ein Wert vorhanden ist. Der Platzhalter wird nicht als
Kennwort gespeichert.SMTPAuth365Connector.exe.config********
Einstellungen speichern
Läuft der Windows-Dienst bereits, übernimmt er Änderungen erst nach einem Neustart über Übersicht → Dienst neu starten.
Netzwerkbetrieb und TLS
BetriebAnwendung und Connector auf demselben RDS-ServerComputer
Verwenden Sie vorzugsweise:
<addAdresse: key="ListenAddress" value="127.0.0.1"1
/>Erlaubte <addClient-IP-Adressen: key="ListenPort" value="2525" />
<add key="AllowedClientAddresses" value="127.0.0.1,::1" />
<add key="RequireStartTls" value="false" />1
Damit sind SMTP und POP3 nur lokal erreichbar.
Zugriff aus dem LANlokalen Netzwerk
Für den Zugriff von einem anderen Computer:
<add key="ListenAddress" value="0.0.0.0"0 Das Zertifikat muss miteinschließlich privatem Schlüssel unterim Zertifikatsspeicher
LocalMachine\MyLokaler Computer\Persönlichliegen.vorhanden sein. Das Dienstkonto NETWORK SERVICE
benötigt Leserechte auf den privaten Schlüssel.
Unterstützt wirdwerden STARTTLS,SMTP aberSTARTTLS keinund implizitesPOP3 STLS. Implizites SMTPS auf Port 465.
5. Absender465
und Empfänger
implizites Microsoft Graph ermittelt Empfänger aus den MIME-Kopfzeilen, klassisches SMTP
dagegen aus RCPT TO. Der Proxy gleicht beide Verfahren an:
From:From:AllowedSenderAddressesRCPT TOToCcBccFrom:Wichtig:
Beispiel:From: rechnung@kunde.de → POST /users/rechnung@kunde.de/sendMail → Gesendete Elemente von rechnung@kunde.de
IstAllowedSenderAddressesnicht leer, hat diese Liste Vorrang. Nur wenn sie leer ist, wirdAllowedSenderDomainsals weniger strenger Fallback verwendet.
6. Größenlimit und große Anhänge
Die Standardgrenze für die komplette eingehende SMTP-/MIME-Nachricht beträgt 25 MiB:<add key="MaxMessageBytes" value="26214400" />
Der Versandweg wird automatisch gewählt:Bis einschließlich 2.800.000 Byte: direkter Graph-MIME-Versand.Darüber: MIME-Zerlegung, Graph-Entwurf, einzelne Anhänge und anschließendes Senden des Entwurfs.Anhänge bis 2.800.000 Byte werden direkt am Entwurf angelegt.Größere Anhänge werden in Blöcken über eine Graph Upload Session übertragen.
Schlägt ein Anhang-Upload fehl, wird ein noch nicht gesendeter Entwurf nach Möglichkeit entfernt. Der normale Warteschlangenmechanismus startet beim nächsten Versuch einen neuen Entwurf und lädt die Anhänge erneut hoch.
MaxMessageBytesdarf in dieser Version zwischen 1 KiB und 100 MiB liegen. Die Einstellung ist die Größe der gesamten SMTP-Nachricht, nicht nur eines Anhangs. Base64 und MIME-Header verursachen zusätzlichen Platzbedarf. Zusätzlich gelten die Größenlimits von Exchange Online und dem jeweiligen Postfach. Microsoft Graph unterstützt über Upload Sessions einzelne Anhänge bis 150 MB; das Standardlimit des Dienstes ist bewusst niedriger.
Für den Großnachrichtenweg sindMail.ReadWriteundMail.Sendals Anwendungsberechtigungen erforderlich. Microsoft weist außerdem auf ein bekanntes Problem bei großen Anhängen in freigegebenen oder delegierten Postfächern hin. Dieser Fall sollte mit dem tatsächlich verwendeten Postfach getestet werden.
Der Großnachrichtenweg übernimmt Betreff, HTML- oder Textinhalt, To, Cc, Bcc, Reply-To, normale Dateianhänge und eingebettete CID-Inhalte. Kryptografisch signierte oder verschlüsselte S/MIME-Nachrichten sollten unterhalb der direkten MIME-Grenze bleiben und müssen gesondert getestet werden.
Microsoft: Große Anhänge mit Upload Sessions
7. Kompilieren und installieren
Schneller Test mit Klartextparametern
Für Tests stehtTestConfiguration.vbzur Verfügung. Dort zuerst aktivieren:Public Const Enabled As Boolean = True
Anschließend können alle relevanten Werte direkt im Modul eingetragen werden:Public Const SmtpUsername As String = "alte-anwendung" Public Const SmtpPassword As String = "lokales-testkennwort" Public Const AllowedSenderAddresses As String = "test@kunde.de,rechnung@kunde.de" Public Const Pop3Enabled As Boolean = True Public Const Pop3ListenPort As Integer = 2110 Public Const AllowedPop3Mailboxes As String = "test@kunde.de,rechnung@kunde.de" Public Const AllowedPop3MailboxDomains As String = "" Public Const Pop3DeleteTransferredMessages As Boolean = False Public Const TenantId As String = "Tenant-ID" Public Const ClientId As String = "Client-ID" Public Const ClientSecret As String = "Client-Secret" Public Const DebugLogging As Boolean = True
Bei aktiviertem Testmodus werden die entsprechenden Werte ausApp.configund die DPAPI-Dateien nicht verwendet. Der Datenpfad liegt standardmäßig im Ordner der laufendenSMTPAuth365Connector.exe:<Programmordner>
Das Programm kann in Visual Studio gestartet oder direkt im Konsolenmodus ausgeführt werden:.\SMTPAuth365Connector.exe --console
Ein normaler Start öffnet grundsätzlich die Windows-Oberfläche.--consolebleibt aus Kompatibilitätsgründen gleichbedeutend mit einem normalen GUI-Start. Nur--noguistartet den Connector als unsichtbaren lokalen Prozess. Der bei der Dienstregistrierung eingetragene Parameter--serviceist ausschließlich für den Windows-Dienst bestimmt.
Der bisherige Text-Konsolenmodus wurde durch eine Windows-Oberfläche ersetzt. Das Produkticon wird als Programmsymbol, im Fenstertitel, in der Taskleiste und links im Kopfbereich der Oberfläche angezeigt.Stellen Siebesteht aus drei Bereichen:Übersicht:Zustand der lokalen Testinstanz und des installierten Dienstes, Endpunkte, Datenpfad und verwendete Konfigurationsdatei.Einstellungen:Allgemeine, POP3-,die SMTP- undMicrosoft-Graph-Parameter.POP3-PortsEinniemalsneuöffentlicheingegebenesimSMTP/POP3-KennwortInternetbeziehungsweisebereit.Client
Windows-Dienst wirdeinrichten
********AufSie derunter Übersichtsseite stehen zusätzlichÜbersicht die AktionenAktion Dienst installieren,.
Die Installation erfolgt direkt durch die Anwendung. Es solltewerden einkeine eigenerexternen
ProgrammordnerInstallationsskripte verwendetbenötigt. werden,Der weilDienst dasstartet Programmautomatisch mit Windows und
läuft unter dem DienstkontoKonto dortNETWORK .die erforderlichen Lese- und Ausführungsrechte erteilt.SERVICE
Wenn der Windows-Dienst bereits läuft, startet die Oberfläche keine zweite lokale Instanz auf
denselben Ports. Änderungen werden zunächst in
SMTPAuth365Connector.exe.config gespeichert. Der Dienst übernimmt sie nach Betätigung
von Windows-Dienst neu starten. Unter Program Files sind dafür in der Regel
Administratorrechte erforderlich.
Hinweis zum Klartext-Testmodus:BeiTestConfiguration.Enabled=Truehaben die einkompilierten Werte Vorrang. Die Oberfläche zeigt in diesem Modus die tatsächlich verwendeten Werte ausTestConfiguration.vban. Das Speichern in der GUI ist deaktiviert, weil diese fest einkompilierten Werte zur Laufzeit nicht geändert werden können. Für die Konfiguration über die Oberfläche mussEnabled=FalsegesetztStatus unddas Programm neu kompiliert werden.
Während des Starts erscheint eine Warnung und im Log wird der unsichere
Testmodus vermerkt.
Wichtig:Das Client Secret und die Kennwörter stehen im Klartext im Quellcode und auch in der kompilierten EXE. Vor der produktiven KompilierungEnabledwieder aufFalsesetzen und alle echten Geheimnisse ausTestConfiguration.vbentfernen.
Produktive Kompilierung und Installation
SMTPAuth365Connector.slnReleaseAny CPUSMTPAuth365Connector.exeDie Dienstinstallation erfolgt vollständig im Programm über die native
Windows-Dienstverwaltung. PowerShell und InstallUtil.exe werden nicht
verwendet. Das gemeinsame lokale SMTP/POP3-Kennwort und das Entra Client Secret
werden über die GUI erfasst und mit Windows DPAPI verschlüsselt gespeichert:
<Programmordner>\Secrets\smtp-password.bin
<Programmordner>\Secrets\oauth-client-secret.bin
Die Speicherung ist fehlersicher ausgeführt: Vor dem Ändern hält das Programm
den bisherigen Stand der Konfiguration und der betroffenen Geheimnisdateien im
Speicher. Schlägt das Schreiben oder die anschließende vollständige Prüfung
fehl, wird der vorherige Stand wiederhergestellt und die lokale Instanz mit
diesem Stand erneut gestartet. Eine fehlgeschlagene Dienstinstallation entfernt
einen eventuell nur teilweise angelegten Dienst ebenfalls wieder.
Fehler beim erneuten Start der lokalen Instanz
Die Meldung
Diese Instanz hat bereits mindestens eine Anforderung gestartet.
EigenschaftenLive-Protokoll können nurtrotzdem vor dem Senden der ersten Anforderung geändert werden.
stammte in älteren Projektständen von einem gemeinsam wiederverwendeten
HTTP-Client. Nach der ersten OAuth- oder Graph-Anfrage durfte dessen Timeout beim
Neustart nicht erneut geändert werden. Ab Version 2.3.1 besitzt jede gestartete
Proxy-Instanz einen eigenen, genau einmal konfigurierten HTTP-Client. Bei einem
Startfehler werden SMTP, POP3, Warteschlangenverarbeitung und HTTP-Verbindungen
vollständig freigegeben. Das Programm muss deshalb nach einem normalen
Startfehler nicht mehr beendetangezeigt werden.
8. Alte Anwendung einstellenkonfigurieren
SMTP-Versand
| Einstellung im alten Programm | Wert |
|---|---|
| SMTP-Server | IP-Adresse oder DNS-Name des Connector-Computers |
| SMTP-Port | Standardmäßig 2525 |
| Authentifizierung | SMTP AUTH LOGIN oder PLAIN |
Wert aus SMTP-Benutzername |
|
| Kennwort | |
STARTTLS entsprechend der Connector-Konfiguration |
Die Mail muss genau eine gültige From:-Adresse enthalten. Diese Adresse
bestimmt das Microsoft-365-Absendepostfach und muss im Connector erlaubt sein.
From: rechnung@firma.at
→ Versand über das Postfach rechnung@firma.at
→ Ablage in Gesendete Elemente von rechnung@firma.at
POP3-Abruf
| Einstellung im alten Mailclient | Wert |
|---|---|
| POP3-Server | IP-Adresse oder DNS-Name des Connector-Computers |
127.0.0.12110
2110Vollständige Pop3ListenPorttest@kunde.deMicrosoft-365-Mailadresse
Kennwort
Pop3RequireStartTlsder Falls derein altealter Client ausschließlich Port 110 unterstützt, kann der POP3-Port
auf Pop3ListenPort110 gesetztgeändert werden. BeiPrüfen ZugriffSie ausvorher, demob LANdieser müssenPort Listen-Adresse,bereits AllowedClientAddresses,verwendet
Windows-Firewallwird und TLSob entsprechendfür abgesichertdas werden.Binden des Ports ausreichende Rechte vorhanden sind.
Verhalten des POP3-Abrufs
- Beim Anmelden wird der aktuelle
Graph-PosteingangalsüberSitzungslisteMicrosoft Graph geladen. - Pro Postfach ist gleichzeitig nur eine POP3-Sitzung
zugelassen, damit zwei Clients nicht widersprüchliche Löschungen ausführen.zulässig. - Neue Nachrichten erscheinen bei der nächsten POP3-Anmeldung.
UIDLbasiert auf unveränderlichen Graph-Nachrichten-IDs und bleibt für die Lebensdauer einer Nachricht im Postfach stabil.
RETR /$valueSTATTOP liefert nur den gewünschten Teil und gilt nicht als vollständiger Abruf.
LISTUIDL QUIT gelöscht.
Ein Verbindungsabbruch vor QUIT RSET hebt Löschvormerkungen der aktuellen Sitzung auf.
Der lokale Übertragungsstatus befindet sich standardmäßig unter:
<Programmordner>\Pop3State
Löschen Sie diesen Ordner nicht unbedacht. Andernfalls können bereits übertragene und in Microsoft 365 belassene Nachrichten erneut angeboten werden.
Nachrichtengröße und Anhänge
Die Standardgrenze für die vollständige SMTP-Nachricht beträgt 25 MiB. Dazu gehören Nachrichtentext, MIME-Kopfzeilen, Anhänge und die durch Base64 entstehende Vergrößerung.
Der Connector wählt den Versandweg automatisch:
Zusätzlich gelten immer die Größen- und Empfängergrenzen von Exchange bereitgestellteOnline ungefähreund
MAPI-Nachrichtengrößedes (PidTagMessageSize,betreffenden 0x0E08).Postfachs.
Microsoft-Dokumentation zu RETRverwendetgroßen Anhängen
Warteschlange und Wiederholungsversuche
Eine SMTP-Nachricht wird zunächst dauerhaft in der lokalen Warteschlange
gespeichert. Erst danach bestätigt der Connector die laufendeAnnahme Sitzunggegenüber dieder
exaktealten GrößeAnwendung.
<Datenpfad>\Queue
übertragenen├── MIME-Inhalts.Incoming
├── Pending
└── DeadLetter
Incoming
Nachricht wird gerade übernommen
Pending
Nachricht wartet auf Versand oder einen erneuten Versuch
DeadLetter
Nachricht konnte dauerhaft nicht versendet werden
Bei vorübergehenden Fehlern versucht der Connector den Versand erneut. Von
Microsoft Graph vorgegebene Wartezeiten werden berücksichtigt. Ohne eine solche
Vorgabe wird der Abstand schrittweise erhöht. Unerwartete Fehler werden
standardmäßig nach einer Minute erneut versucht.Pop3MarkAsReadOnRetrieval=true
Nach Erreichen der maximalen Versuchszahl wird die Nachricht nach erfolgreichem
RETRDeadLetterinverschoben. MicrosoftDieser 365 als gelesen markiert. TOP markiert sie nicht gelesen.
Pop3DeleteTransferredMessages=falseRETR<Programmordner>\Pop3StateDataPathPop3DeleteTransferredMessages=trueRETRDELEQUITQUITRSETTOPPop3MaxMessagesPop3MaxMessageBytesMicrosoft: MIME-Inhalt einer Nachricht abrufen
Microsoft: Unveränderliche Outlook-IDs
Lokaler Anmeldungstest ohne TLS:
.\Test-Pop3Proxy.ps1 -Mailbox "test@kunde.de"
Das Skript zeigt STAT und die UIDL-Liste an, ruft aber keine Mail ab und
löscht nichts. Es ist für einen lokalen Funktionstest gedacht. Für LAN-Betrieb
mit erzwungenem STLS verwendest du anschließend den tatsächlichen alten Client.werden.
Sicherheitshinweis:Hinweis:Wer das gemeinsame Kennwort kennt und von einer freigegebenen Client-IP zugreift, kann jedes inAllowedPop3Mailboxeseingetragene Postfach und jedes Postfach einer inAllowedPop3MailboxDomainseingetragenen Domain öffnen, sofern die Entra-App darauf zugreifen darf. Halte die Freigaben deshalb so klein wie möglich und aktiviere im LAN zwingend STLS. Eine Domainfreigabe ist deutlich weitreichender als die Freigabe einzelner Adressen.
9. Testnachricht
.\Test-SmtpProxy.ps1 `
-From "smtp@firma.at" `
-To "empfaenger@firma.at"
Bei lokal aktiviertem STARTTLS zusätzlich -EnableSsl verwenden.
Test mit einem oder mehreren Anhängen:
.\Test-SmtpProxy.ps1 `
-From "smtp@firma.at" `
-To "empfaenger@firma.at" `
-AttachmentPath "C:\Temp\Test-10MB.pdf"
Protokollierung und Zustellstatus
<Programmordner>\Logs
Mit der Einstellung
<add key="DebugLogging" value="true" />
werden zusätzliche Diagnoseinformationen geschrieben, unter anderem
angenommene Verbindungen, SMTP-/POP3-Befehlsnamen, Queue-Prüfungen,
Graph-HTTP-Statuswerte, OAuth-Ablaufzeit und bei Fehlern Stacktraces. Kennwörter,
SMTP-AUTH-Inhalte, Nachrichtentexte, Client Secrets und OAuth-Tokens werden auch
im Debugmodus nicht protokolliert. Nach einer Änderung muss die lokale Instanz
oder der Windows-Dienst neu gestartet werden.
Graph bestätigt sendMail mit 202 Accepted. Das bedeutet Annahme, aber noch
keine endgültige Zustellbestätigung. Exchange-Transportregeln, Spamprüfung und
Empfängergrenzen gelten weiterhin.
Nach der Annahme wird eine Kopie im Ordner Gesendete Elemente des dynamisch
aus From: ermittelten Postfachs gespeichert. Für kleine Nachrichten genügt
hierfür Mail.Send; der implementierte Großnachrichtenweg benötigt zusätzlich
Mail.ReadWrite zum Anlegen und Bearbeiten des Entwurfs.
In einem seltenen Grenzfall kann eine Nachricht doppelt versendet
werden, wenn Microsoft sie annimmt, aber365 die HTTP-AntwortNachricht angenommen hat, die Bestätigung den
ProxyConnector aber nicht mehr erreicht.
SicherheitProtokollierung
Das Live-Protokoll befindet sich in der Oberfläche unter Live-Protokoll. Die Protokolldateien liegen zusätzlich unter:
<Datenpfad>\Logs
Das Protokoll enthält unter anderem:
SMTP-PortStartniemalsundöffentlichEndeinsdesInternetConnectors
AllowedClientAddresses=*OAuth2- und Microsoft-Graph-Fehler
Wiederholungsversuche und Dead-Letter-Vorgänge
Der Debugmodus ergänzt technische Diagnoseinformationen. Kennwörter, Client
Secrets, OAuth-Tokens und Nachrichtentexte werden auch im Debugmodus nicht
produktivprotokolliert. verwenden.Aktivieren Sie den Debugmodus nur während der Fehlersuche und
starten Sie danach die lokale Instanz oder den Dienst neu.
Funktionstest
SMTP testen
Im Programmordner befindet sich das Testskript Test-SmtpProxy.ps1.
.\Test-SmtpProxy.ps1 `
-From "rechnung@firma.at" `
-To "empfaenger@firma.at"
Test mit Anhang:
.\Test-SmtpProxy.ps1 `
-From "rechnung@firma.at" `
-To "empfaenger@firma.at" `
-AttachmentPath "C:\Temp\Test.pdf"
Kontrollieren Sie anschließend:
POP3 testen
Im Programmordner befindet sich das Testskript .AllowedPop3MailboxDomainsTest-Pop3Proxy.ps1
.\Test-Pop3Proxy.ps1 verwenden,-Mailbox wenn"eingang@firma.at"
wirklich
Das PostfächerSkript derzeigt betreffendenden DomainPostfachstatus überund die UIDL-Liste an. Es ruft keine
Nachricht vollständig ab und löscht keine Nachricht.
Fehlerbehebung
Lokale Instanz startet nicht
Prüfen Sie:
Öffnen Sie anschließend das Live-Protokoll und aktivieren Sie bei Bedarf vorübergehend den Debugmodus.
Windows-Dienst startet nicht
Prüfen Sie zusätzlich:
NETWORK SERVICE Zugriff auf Programm- und Datenpfad?
Ist ein konfigurierter UNC-Pfad beim Systemstart erreichbar?
Kann der Computer die Microsoft-Endpunkte über HTTPS erreichen?
OAuth2-Anmeldung schlägt fehl
Typische Ursachen sind:
login.microsoftonline.com
Erstellen Sie bei einem abgelaufenen Secret ein neues Secret in Microsoft Entra ID und speichern Sie den neuen Wert anschließend in der Oberfläche.
Microsoft Graph antwortet mit 403 Forbidden
Prüfen Sie:
Mail.Send und Mail.ReadWrite POP3 meldet „mailbox is temporarily unavailable“
Prüfen Sie:
Mail.ReadWrite für dieses Postfach?
Ist das gemeinsame lokale Kennwort korrekt?
Die konkrete Microsoft-Graph-Fehlermeldung steht im Live-Protokoll.
Nachricht bleibt in Pending
Der Connector versucht vorübergehend fehlgeschlagene Nachrichten automatisch erneut zu senden. Prüfen Sie im Protokoll den letzten Fehler und die Warteschlangen-ID. Bei einem dauerhaften Fehler müssen Absenderfreigabe, Microsoft-365-Berechtigungen, Nachrichtengröße und Empfänger geprüft werden.
Nachricht liegt in DeadLetter
Beheben Sie zuerst die im Protokoll angegebene Ursache. Verschieben oder
verarbeiten Sie die Dateien im Ordner DeadLetter nur nach Rücksprache mit dem
zuständigen Support, damit keine Nachricht beschädigt oder doppelt versendet
wird.
Betrieb und Wartung
DeadLetter.
Kontrollieren Sie den freien Speicherplatz des Datenpfads.
Sichern Sie Konfiguration, Warteschlange, POP3-Status und Geheimnisdateien.
Erneuern Sie das Client Secret rechtzeitig vor dessen Ablauf.
Prüfen Sie nach Änderungen in Microsoft 365 den SMTP- und POP3-Zugriff.
Halten Sie die Listen erlaubter IP-Adressen und Postfächer möglichst klein.
Deaktivieren Sie die Debugprotokollierung nach abgeschlossener Fehlersuche.
Datensicherung
Für eine vollständige Sicherung sollten folgende Daten gemeinsam gesichert werden:
SMTPAuth365Connector.exe.config
<Datenpfad>\Queue
<Datenpfad>\Pop3State
<Datenpfad>\Secrets
Die Geheimnisdateien sind über Windows DPAPI an den lokalen Computer gebunden. Eine reine Kopie auf einen anderen Computer reicht daher nicht aus. Auf einem neuen Computer müssen das gemeinsame Kennwort und das Client Secret erneut über die Oberfläche gespeichert werden.
Deinstallation
In
SMTPAuth365Connector.exe mit Administratorrechten.
Öffnen Sie Übersicht.
Die Deinstallation entfernt ausschließlich die Registrierung des
Windows-AdministratorabfrageDienstes. bestätigen.
Programmdateien, Einstellungen,Konfiguration, Warteschlange, POP3-Status,
verschlüsselte Geheimnisse, WarteschlangeGeheimnisse und LogsProtokolle werdenbleiben nichterhalten automatischund gelöscht.können nach einer
abschließenden Datensicherung manuell entfernt werden.
Supportinformationen
Stellen Sie bei einer Supportanfrage möglichst folgende Informationen bereit:
Übermitteln Sie niemals das gemeinsame SMTP/POP3-Kennwort, das Client Secret oder OAuth-Tokens per unverschlüsselter E-Mail.