SMTP TLS Powershell
Hi,
ich informiere meine Linux Kollegen via via Email, wenn ihr AD Passwort abgeändert werden muss. Dafür benutze ich ein Powershellscript. Ich habe vor kurzem auf unserem internen SMTP Server TLS (auf Port25) aktiviert. Seitdem funktioniert das tolle Script nicht mehr.
Habe im Script selbst Use SSL und Port 25 eingegeben
Das Script läuft ohne Fehler durch.
Auf dem SMTP Server in den Logs erhalte ich folgende Meldung:
Könnt ihr mir weiterhelfen?
Gruß
ich informiere meine Linux Kollegen via via Email, wenn ihr AD Passwort abgeändert werden muss. Dafür benutze ich ein Powershellscript. Ich habe vor kurzem auf unserem internen SMTP Server TLS (auf Port25) aktiviert. Seitdem funktioniert das tolle Script nicht mehr.
Habe im Script selbst Use SSL und Port 25 eingegeben
Send-Mailmessage -smtpServer $smtpServer -UseSSL -Port 25 -from $from -to $emailaddress -subject $subject -body $body -bodyasHTML -priority High -Encoding $textEncoding
Das Script läuft ohne Fehler durch.
Auf dem SMTP Server in den Logs erhalte ich folgende Meldung:
EHLO - +smtpserver 250 0 231 15 0 SMTP - - - -
2021-01-11 12:58:28 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 STARTTLS - - 220 0 0 8 0 SMTP - - - -
2021-01-11 12:58:28 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 STARTTLS - - 220 0 29 8 0 SMTP - - - -
2021-01-11 12:58:28 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 QUIT - server 240 32 29 8 32 SMTP - - - -
2021-01-11 13:01:29 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 EHLO - +server 250 0 231 15 0 SMTP - - - -
2021-01-11 13:01:29 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 STARTTLS - - 220 0 0 8 0 SMTP - - - -
2021-01-11 13:01:29 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 STARTTLS - - 220 0 29 8 0 SMTP - - - -
2021-01-11 13:01:29 192.168.10.12 SMTPSVC1 smtpserver 192.168.10.10 0 QUIT - server 240 15 29 8 15 SMTP - - - -
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 11.01.2021 um 15:15:52 Uhr
Formatierung hinzugefügt.
Content-ID: 639664
Url: https://administrator.de/contentid/639664
Ausgedruckt am: 04.11.2024 um 22:11 Uhr
26 Kommentare
Neuester Kommentar
Moin,
welches Produkt setzt ihr als E-Mailserver (Exchange Server, Postfix, etc...)? Je nach dem wird für SSL/TLS ein dedizierte Port 465/587 genutzt und muss auch angegeben werden.
Kann es sein, dass durch die Aktivierung von TLS auf dem E-Mail-Server (keine) älteren SSL Protokolle als auch Cipher Suites nutzbar sind? Je nachdem kannst du das mit [System.Net.ServicePointManager]::SecurityProtocol innerhalb des PowerShell Skripts steuern.
Ich bin mir gerade auch nicht sicher, ob du bei Port 25/SMTP überhaupt explizit UseTls angegeben werden muss...
Gruß,
Dani
welches Produkt setzt ihr als E-Mailserver (Exchange Server, Postfix, etc...)? Je nach dem wird für SSL/TLS ein dedizierte Port 465/587 genutzt und muss auch angegeben werden.
Kann es sein, dass durch die Aktivierung von TLS auf dem E-Mail-Server (keine) älteren SSL Protokolle als auch Cipher Suites nutzbar sind? Je nachdem kannst du das mit [System.Net.ServicePointManager]::SecurityProtocol innerhalb des PowerShell Skripts steuern.
Ich bin mir gerade auch nicht sicher, ob du bei Port 25/SMTP überhaupt explizit UseTls angegeben werden muss...
Gruß,
Dani
Zitat von @Dani:
Ich bin mir gerade auch nicht sicher, ob du bei Port 25/SMTP überhaupt explizit angegeben werden muss...
Ich bin mir gerade auch nicht sicher, ob du bei Port 25/SMTP überhaupt explizit angegeben werden muss...
Nein müssen nicht. Ich nutze einige PS-Skripte ohne den Port-Parameter über SMTP.
Wohl eher was für die Rubrik "Batch & Shell" hier ?!
Ggf. hilft das weiter:
Powershell: S-MIME verschlüsselte und signierte E-Mail inkl. sicherem Anhang verschicken (Mailkit-Bibliothek)
Powershell - Versenden von EML Dateien
Ggf. hilft das weiter:
Powershell: S-MIME verschlüsselte und signierte E-Mail inkl. sicherem Anhang verschicken (Mailkit-Bibliothek)
Powershell - Versenden von EML Dateien
Zitat von @sniggls:
Wir nutzen Exchange 365, die SMTP Benachrichtung ist ausschließlich von internen Maschinen die ich zugelassen habe für anonymes versenden.
Zitat von @Dani:
Moin,
welches Produkt setzt ihr als E-Mailserver (Exchange Server, Postfix, etc...)? Je nach dem wird für SSL/TLS ein dedizierte Port 465/587 genutzt und muss auch angegeben werden.
Moin,
welches Produkt setzt ihr als E-Mailserver (Exchange Server, Postfix, etc...)? Je nach dem wird für SSL/TLS ein dedizierte Port 465/587 genutzt und muss auch angegeben werden.
Wir nutzen Exchange 365, die SMTP Benachrichtung ist ausschließlich von internen Maschinen die ich zugelassen habe für anonymes versenden.
Das liest sich aufgrund der IP Adressen des Logfileauszuges nicht so. Welches System wird also vom PowerShell Script angesprochen?
Ok, dann eine andere Frage direkt auf den Port bezogen: Wieso nimmst du Port 25. 25 ist (standardmäßig) für SMTP Nachrichten. SMTP mit TLS (auch TSMTP genannt) ist normalerweise Port 465.
Was ist schon normal Meine SMTP Server sprechen hervorragend verschlüsseltes SMTP über Port 25.
Zitat von @mbehrens:
Was ist schon normal Meine SMTP Server sprechen hervorragend verschlüsseltes SMTP über Port 25.
Was ist schon normal Meine SMTP Server sprechen hervorragend verschlüsseltes SMTP über Port 25.
Deswegen hab ich ja nachgefragt. Er schreibt dann ja irgendwo, dass Exchange 365 genutzt wird und nichts konfiguriert wurde. Klar kannst du SMTP auch auf Port 25 legen. Theoretisch kannst du auch Port 80 und 443 tauschen, aber wenn man das macht, dann gibt es Gründe dafür. Wenn nichts konfiguriert wurde, dann passt Port 25 bei TLS nicht.
Zitat von @Doskias:
Wenn nichts konfiguriert wurde, dann passt Port 25 bei TLS nicht.
Zitat von @mbehrens:
Was ist schon normal Meine SMTP Server sprechen hervorragend verschlüsseltes SMTP über Port 25.
Was ist schon normal Meine SMTP Server sprechen hervorragend verschlüsseltes SMTP über Port 25.
Wenn nichts konfiguriert wurde, dann passt Port 25 bei TLS nicht.
Dem muss ich Wiedersprechen. Natürlich passt das sehr gut zusammen und ist gängige Praxis beim Betrieb von Mailservern. In der Regel benutzen diese untereinander nur Port 25 und verschlüsseln den Datenverkehr zunehmend auch via TLS.
DIe Verbindung zweieer Mailserver ist aber was anderes als die Verbindung eines CLients (in dem Fall das PS-Skript) zum eigenen Mailserver.
Nein, dies macht aus Sicht des SMTP Protokolles keinen Unterschied.
ich habe einen internen smtp-relay-server, den verwende ich für interne Maschinen (Storage, Backup) und in dem Fall auch für mein Powershell Script, welches ich auf meinem Domaincontroller ausführen lasse. Der SMTP Relay Server benötigt keine Authentifizierung, ich mach das über die IP Freigabe in der Konfig des SMTP Servers. Einen Exchangeserver selbst habe ich nicht, sondern O365.
Dann erhöhe bitte den Loglevel des Relay Servers. Das gezeigte Protokoll ist nicht aussagefähig genug.
Moin,
Beschreibe doch einmal, wie du SSL/TLS auf Port 25 im IIS konfiguiert hast?!
Gruß,
Dani
Deine Frage zu IIS und SMTP bzw. Schlussfolgerung ist korrekt.
damit ist klar, warum Ports wie 465 oder 587 nicht funktionieren.Beschreibe doch einmal, wie du SSL/TLS auf Port 25 im IIS konfiguiert hast?!
Windows Server mit SMTP Relay aka IIS (6.0)
Windows Server 2003? Wenn dem so ist, werden SSL Protokolle TLS 1.1/TLS1.2 meines Wissens nach nicht unterstützt. Damit dürfte auch eine Kommunikation mit Exchange Online nicht mehr möglich sein. Denn dort wurden schwache und alte SSL Protokoll SSLv2, SSLv3, TLS 1.0 und TLS 1.1 deaktiviert.Gruß,
Dani
Habe ich gerade mal auf einem Server 2012R2 gestestet, funktioniert hier einwandfrei, korrekte Relay-Einstellungen und korrektes Zertifikat das auf den Common-Name des SMTPServers ausgestellt ist für den SMTP-Server vorausgesetzt, klappt SSL auch auf Port 25 mit dem SMTP-Server des IIS. Fehler liegt also an deiner Config.
Mail kommt erfolgreich an!
Würde aber für die Zukunft auf Mailkit migrieren, die SMTP-Client Klasse wird von MS nicht mehr weiterentwickelt wird und moderne Ciphers und Auth Verfahren nicht mehr unterstützt.
Was du leider komplett verschweigst ist die Fehlermeldung der Powershell ...
Gruß bw.
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::GetNames([System.Net.SecurityProtocolType])
Send-MailMessage -From 'user@domain.tld' -to 'user2@domain.tld' -SmtpServer serverX.domain.tld -Port 25 -UseSSL
Würde aber für die Zukunft auf Mailkit migrieren, die SMTP-Client Klasse wird von MS nicht mehr weiterentwickelt wird und moderne Ciphers und Auth Verfahren nicht mehr unterstützt.
Was du leider komplett verschweigst ist die Fehlermeldung der Powershell ...
Gruß bw.
Dann ist deine SMTP-Server Config für das Weiterleiten fehlerhaft und nicht die Powershell, denn wenn die nichts meldet wurde die Mail erfolgreich beim SMTP-Server des IIS abgeliefert! Checke die verfügbaren TLS Protokolle deines Smarthosts/Relayhosts an die der SMTP-Server weiterleitet, beide müssen sich auf eine TLS-Version einigen können die beide unterstützen. Ein Wireshark-Trace sollte dir das ebenfalls zeigen.
Mehr Details dazu hier
https://www.emailarchitect.net/eatls/kb/iis_smtp_opportunistic_tls.aspx
Ich habe das hier mit GMAIL als Smarthost erfolgreich getestet.
Checke auch die Mail-Queue (Default C:\inetpub\mailroot\....) wo die abgelieferten Mails landen.
Mehr Details dazu hier
https://www.emailarchitect.net/eatls/kb/iis_smtp_opportunistic_tls.aspx
Ich habe das hier mit GMAIL als Smarthost erfolgreich getestet.
Checke auch die Mail-Queue (Default C:\inetpub\mailroot\....) wo die abgelieferten Mails landen.