• Bewerte uns auf OMR Reviews: Klick

  • 25Reports geht live, schaut es euch an: Klick

  • Achtet bitte in den Beiträgen darauf, dass ihr keine Informationen teilt, die der DSGVO unterliegen können. Verpixelt bitte die entsprechenden Stellen in Screenshots, postet hier auf keinen Fall Messagatracks ohne Rücksprache und auch in den Log Files können persönliche oder sensible Daten enthalten sein.

    Macht uns auch bitte per PN darauf aufmerksam wenn ihr etwas seht. Schreibt mich (@sören) einfach direkt an. 

  • Zertifikate vom Deutschen Forschungsnetz beziehen (Harica CA)? Klick

SMTP Auth mit Powershell testen

Christian Kirsch

New member
Registriert
3 November 2025
Beiträge
4
Reaktionspunkte
0
Moin, in die Runde.

Ich habe einen Account für SMTP Auth unter "E-Mail-Server des Unternehmens" eingerichtet (User/Passwort).
Der Empfangs Konnektor steht auf "Erlaube STARTTLS".
Das ganze möchte ich testen mit Powershell:

Code:
# Get the credential
$password = ConvertTo-SecureString 'yyyy' -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ('xxxx', $password)

## Define the Send-MailMessage parameters
$mailParams = @{
    SmtpServer                 = 'relay.xxxx.local'
    Port                       = '25' # or '25' if not using TLS
    UseSSL                     = $true ## or not if using non-TLS
    Credential                 = $credential
    From                       = 'servicedesk@xxxxx.de'
    To                         = 'test@xxxx.de'
    Subject                    = "SMTP Client Submission - $(Get-Date -Format g)"
    Body                       = 'This is a test email using SMTP Client Submission'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Send the message
Send-MailMessage @mailParams


Das Ergebnis ist immer: Send-MailMessage : Fehler bei Authentifizierung.
Nach Exchange Online funktioniert das Skript mit Authentifizierung (Postfach User) problemlos.
 
Hey =)

Mit Send-MailMessage wirst du es nicht ans laufen bekommen.
Damit ist SMTP AUTH PLAIN gar nicht möglich und SMTP AUTH LOGIN soweit ich weiß nur per NTLM -> hier nutzlos.
Der einfachste Weg für Skripte wäre Mailkit zu verwenden oder eine native Nutzung von "system.net.mail".
Bin mir nicht sicher ob ich da mal ein Beispiel für gebaut hatte, aber meine damit war zumindest SMTP AUTH PLAIN machbar.
TLS setzen wir ja eh Voraus, muss also sowieso drumherum gemacht werden :)


LG
Jan
 
Code:
$EmailTo = "myself@gmail.com"
$EmailFrom = "me@mydomain.com"
$Subject = "Test"
$Body = "Test Body"
$SMTPServer = "smtp.gmail.com"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($SMTPMessage)

Hallo @JanJäschke der Code bringt das gleiche Ergebnis.
 
@JanJäschke kannst du mir vielleicht verraten ob es ein Log gibt in das ich schauen kann um auf dem NSP zu sehen was an der Authentifizierung "hackelt" ?
 
Das NSP Log hilft dir hier nicht, aber du kannst es im Troubleshooting Bereich aktivieren.
Proxy System sollte als Kategorie reichen.

Das Problem sind die Windows Komponenten deines Clients, es ist nicht stabil - ich schaue mal ob ich meinen alten Ansatz noch wo habe, aber überall wird auf MailKit verwiesen da es als einziges stabil ist.
 
Das NSP Log hilft dir hier nicht, aber du kannst es im Troubleshooting Bereich aktivieren.
Proxy System sollte als Kategorie reichen.

Das Problem sind die Windows Komponenten deines Clients, es ist nicht stabil - ich schaue mal ob ich meinen alten Ansatz noch wo habe, aber überall wird auf MailKit verwiesen da es als einziges stabil ist.
Es geht darum das ich einem Kunden "Beweisen" muss das nicht NSP kein Auth kann, sondern seine Software nicht.
Dazu muss ich halt zeigen das das Authentifizieren mit genau den gleichen Anmeldedaten auch funktioniert.
 
Ahh, dann haben wir ja ein paar andere Möglichkeiten:

1. Tool welches das ganze sauber implementiert hat
2. OpenSSL unter Windows:
Code:
openssl s_client -connect gateway:25 -starttls smtp

Base64 String erstellen:
$data =[System.Text.Encoding]::UTF8.GetBytes("`0USERNAME`0PASSWORD")
[convert]::ToBase64String($data)

`0 - muss bestehen bleiben
 
Zurück
Oben