E-Mailversand über Exchange 2010 via TLS

Letzte Aktualisierung am 22.09.2019, 15:09:34 Uhr

Wer kennt es nicht: Ein Skript soll eine E-Mail an bestimmte Emfpänger verschicken. Um nicht lange mit der Authentifizierung am Mailserver zu kämpfen wird einfach die IP-Adresse des Servers, auf dem das Skript läuft, als Relay freigeschalten. Bequem – schnell – funktioniert.

Nach den jüngsten Zwischenfällen wird nach und nach das Sicherheitsbewusstein steigen. Zwar denken nach wie vor viele, warum es gerade mich erwischen soll. Aber das ist aus meiner Sicht nur eine Frage Zeit. Ich verbringe seit einigen Wochen damit diese IP-Freischaltungen nach und nach auf SMTP-over-TLS mit Authentifizierung umzustellen. Das ganze in Verbindung mit Exchange Server 2010.

Diese Woche war ein Powershellskript an der Reihe. Bisher reichte dieser Befehl um eine E-Mail zu verschicken:

Send-MailMessage -To "$strEmailEmpfaenger" -From "$strEmailAbsender" -Subject "$strEmailSubject" -Body "$strEmailBody" -SmtpServer "$strEmailServer" -Encoding "UTF8"

Um den E-Mailverand über SMTP-over-TLS mit Auth durchzuführen, wird der Onliner etwas umfangreicher:

[string] $strExchangeFQDN = "fqdn-of-exchange-server"
[int] $intExchangePort = 587
[string] $strExchangeAuthUser = "username"
[string] $strExchangeAuthUserPw = "password"

$smtp = New-Object System.Net.Mail.SmtpClient($strExchangeFQDN, $intExchangePort);

$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($strExchangeAuthUser, $strExchangeAuthUserPw);
$smtp.Send($strEmailAbsender, $strEmailEmpfaenger, $strEmailSubject, $strEmailBody);

Läuft unter Windows Server 2012R2 mit Powershell 4.0 problemlos. Wer versucht, den den Credentials den Domänen-Admin (administrator@deinedomäne.de) nutzen, fällt auf die Schnauze. Mit diesem Benutzer ist (Grund bisher unbekannt) kein Versand von E-Mails möglich.

Achja, beim Verschicken wird dauch das SSL-Zertifikat des Exchange-Servers geprüft. Falls dieses abgelaufen ist oder nicht auf Gültigkeit geprüft werden kann, wird eine Fehlermeldung ausgegeben:

Send-MailMessage : Das Remotezertifikat ist laut Validierungsverfahren ungültig.
In Zeile:1 Zeichen:1
+ Send-MailMessage -SmtpServer "exchange01" -Port "587" -Subject "test" -Credentia ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], AuthenticationException
    + FullyQualifiedErrorId : AuthenticationException,Microsoft.PowerShell.Commands.SendMailMessage

Viel Spaß damit!

Abonnieren
Benachrichtige mich bei
0 Comments
Inline Feedbacks
View all comments