getestet unter: Windows 7,10 Windows Server 2012 R2 ab PowerShell V3, .NET 4.5.x
Da ich bisher kein Tool unter Windows gefunden habe, welches die Auswahl von TLS-Protokollen im SMTP-Kontext ermöglicht, habe ich nun auf Basis von PowerShell und der nativen .NET Mail-Klasse ein kleines Skript gebaut. Es handelt sich hierbei nur um StartTLS-basierte TLS-Verbindungen, d. h. die Verbindung wird erst nachträglich verschlüsselt, zu Beginn ist die Verbindung unverschlüsselt.
Die folgenden Protokolle werden gegen SMTP-Test getestet:
Keine Verschlüsselung (None)
TLS 1.3 (Tls13)
TLS 1.2 (Tls12)
TLS 1.1 (Tls11)
TLS 1.0 (Tls)
SSL 3.0 (Ssl3)
Der Zielserver kann mittels IP oder FQDN angesprochen werden
Der SMTP-Port kann gewählt werden
Die Absenderadresse und die Zieladresse können angegeben werden
Anmeldedaten für die SMTP-Sitzung werden unterstützt
Das Rückgabeobjekt ist ein PSCustomObject, welches problemlos weiterverarbeitet werden kann (z. B. Export via CSV etc.)
Betreff der Testnachricht kann angepasst werden
Selbstsignierte Zertifikate am Server werden unterstützt
Voraussetzungen
PowerShell ab Version 3.0
.NET Framework 4.5.x
Funktionsweise des Scripts
Zunächst werden die zu testenden TLS-Protokolle im Array aufgelistet. Für den jeweiligen Test wird nachher immer ein bestimmtes TLS-Protokoll aktiviert und dem "System.Net.ServicePointManager" als SecurityProtocol (System.Net.SecurityProtocolType) zugewiesen.
Die einzelnen Array-Elemente werden nun in einer Foreach-Schleife abgearbeitet.
Der letzte Teil des Strings des Arrayelements wird mittels einer Regex-Expression extrahiert und in der Folge verwendet, um anzuzeigen, welches Protokoll gerade getestet wird.
Mittels der Klasse "Net.Mail.SmtpClient" wird ein Objekt erstellt.
Die als Scriptparameter übergebenen Werte werden nun als Attribute entsprechend in dem Objekt gepflegt
Sofern der Parameter "MailServerUsername" gesetzt wurde, wird dieses entweder gemeinsam mit dem Passwort über den Parameter "MailServerPassword" als Credentials hinterlegt oder das Script fordert zur Eingabe des Passworts auf.
Wenn das aktuelle Array-Element "None" entspricht, wird der Verschlüsselungsanteil des Scripts übersprungen, andernfalls wird TLS für das Mailobjekt aktiviert.
Sofern der Parameter "MailIgnoreTLSValidation" auf true gesetzt wurde, wird der ServicePointManager angewiesen invalide Zertifikate zu akzeptieren.
Das Mailobjekt wird abschließend veranlasst den Sendevorgang durchzuführen.
Die Ergebnisse werden zunächst in einer Hashtable und anschließend als PowerShell-Objekt in ein Array geschrieben. Dies ermöglicht eine einfache Weiterverarbeitung und Filterung.
Anwendung des Scripts
Bei dem nachfolgenden Beispiel versucht das Script die TLS-Tests mit dem Server "mail01.domain.local" unter Verwendung des TCP-Ports 25. Der Absender ist "yourname@yourdomain.com" und der Empfänger "anothername@yourdomain.com". Eine Authentifizierung wird mit dem Benutzernamen "yourname@yourdomain.com" durchgeführt:
Thomas Windscheif arbeitet bei excITe Consulting und ist langjähriger Berater im Bereich IT-Infrastruktur und Groupware. Sowohl Kleinunternehmen z. B. im Handwerk als auch der größere fertigende Mittelstand gehören zu seinem Projektumfeld. Im Wesentlichen gehören die Planung von Infrastruktur-Migrationen, Cloud-Lösungen (Microsoft 365), Groupware-Umgebungen (z. B. Exchange) und deren Umsetzung zu seinen Aufgaben. Insbesondere im Umfeld hybrider Identitätsumgebungen mit Entra Connect und den Möglichkeiten zur Härtung der IT-Landschaft konnte er in vielen Projekten Erfahrungen sammeln. Neues begeistert ihn aber ebenso und so unterstützt Thomas Windscheif auch bei themenfremden IT-Systemen, überall da wo er helfen kann.
Sein Ziel: Die Mehrwerte der heutigen IT-Lösungen für einfacheres und modernes Arbeiten beim Kunden einbringen.
Login
Sie haben ein ungelöstes Problem in Ihrer Exchange Server oder Microsoft-Infrastruktur? Treten Sie gerne mit mir in Kontakt.
Sowohl bei einfachen Exchange Installationen, als auch bei hochverfügbaren, lastverteilten Mehrstandort-DAG-Topologien mit Loadbalancern
unterstütze ich Sie -auch kurzfristig- sehr gerne.
Das bereits seit 2013 bereitgestellte Script zur Vererbung von Postfachordnerberechtigungen unter Exchange wurde nun für Exchange Online und Exchange Server 2019 "ertüchtigt". Einige Funktionen sind hinzugefügt worden.