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/Microsoft-Infrastruktur oder unter Microsoft 365? Treten Sie gerne mit mir in Kontakt.
Sowohl bei einfachen Umgebungen, als auch bei komplexen Multisite/Cloud-Topologien
unterstütze ich Sie -auch kurzfristig- sehr gerne.
- Spontaner Administrationsverlust unter Exchange Online - Und wie man es behebt! -
Zweimal in diesem Jahr hatte ich bei Kunden das Phänonem, dass spontan bestimmte Administrationsrechte unter Exchange Online fehlten, trotz der Rollenmitgliedschaft "Globaler Administrator" bzw. "Exchange Administrator".
Aus ungeklärten Gründen waren verschiedene RBAC-Rechte unter Exchange Online für "Organization Management" spontan verschwunden.
Im folgenden Artikel löse ich das Problem mit Skripten und erläutere das Vorgehen