In der heutigen digitalen Landschaft ist die Sicherheit von E-Mails von größter Bedeutung. Transport Layer Security (TLS) ist ein Protokoll, das die Kommunikation im Internet absichert, insbesondere bei der Übertragung von sensiblen Daten wie E-Mails. TLS ermöglicht eine sichere Kommunikation zwischen E-Mail-Servern und schützt vor potenziellen Abhörversuchen und Datenmanipulation. Das Testen der TLS-Verbindung ist daher von entscheidender Bedeutung, um sicherzustellen, dass Ihre E-Mail-Kommunikation sicher und geschützt ist. In diesem Beitrag werden wir lernen, wie man eine TLS-Test-Mail sowohl über PowerShell als auch über Telnet senden kann.
PowerShell ist eine leistungsstarke Befehlszeilen- und Skriptsprache von Microsoft, die eine Vielzahl von Automatisierungsaufgaben ermöglicht. Mit PowerShell können Sie nicht nur Systemverwaltungsaufgaben automatisieren, sondern auch E-Mails senden. Das Senden von E-Mails über PowerShell ist besonders nützlich, da es eine integrierte Unterstützung für SMTP (Simple Mail Transfer Protocol) bietet. In diesem Abschnitt werden wir sehen, wie Sie PowerShell verwenden können, um eine TLS-Test-Mail zu senden und damit die Sicherheit Ihrer E-Mail-Kommunikation zu gewährleisten.
# Erlaube der Gegenstelle ungültige bzw. selbst-signierte Zertifikate zu verwenden
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
# Setze selbst den Usernamen und Passwort. Wenn keine Authentification benötigt wird,
# dann entferne den Parameter "Crendential" im Objekt `sendMailParams`
$password = ConvertTo-SecureString '<USERNAME>' -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ('<PASSWORD>', $password)
# Bereite die Mail vor
$sendMailParams = @{
From = 'sender@domain.de'
To = 'recipient@domain.de'
Subject = '(TEST)'
Body = '<my super amazing message>'
SMTPServer = '192.168.0.10'
Port = 587
UseSsl = $true
Credential = $credential
}
# Sende die Mail
Send-MailMessage @sendMailParams
Telnet ist ein Netzwerkprotokoll, das verwendet wird, um eine Verbindung zu einem entfernten System herzustellen und eine bidirektionale Interaktion zu ermöglichen. Obwohl Telnet heutzutage weniger verbreitet ist, wird es immer noch verwendet, um mit bestimmten Servern zu kommunizieren, insbesondere mit E-Mail-Servern. In diesem Abschnitt werden wir sehen, wie Telnet verwendet werden kann, um eine TLS-Test-Mail zu senden. Dieser Ansatz bietet eine alternative Möglichkeit, die TLS-Verbindung zu überprüfen und sicherzustellen, dass Ihre E-Mail-Kommunikation geschützt ist.
telnet hostname.domain.de 25
Folgender Block erstellt nun die E-Mail. Der „Punkt“ beendet die Nachricht und führt zur Verarbeitung. Entweder erfolgreich (Ausgabe der Message-ID) oder abgelehnt:
HELO sender.domain.de
MAIL FROM: sender@domain.de
RCPT TO: recipient@domain.de
DATA
Subject: Stay alive
Yeah, this is party.
.
Für das Senden und Testen von ausgehenden Mails über einen Server, der TLS erfordert kann der Request auch mit `curl` durchgeführt werden.
## Configuration
HOST_NAME="ziel.server.com"
SENDER_NAME="Freibier GmbH"
SENDER_MAIL="noreply@meinedomain.de"
RECIPIENT_NAME="Martina Auerbach"
RECIPIENT_MAIL="mail@adresse.de"
SUBJECT="Vielen Dank..."
BODY="... für die Blumen"
SMTP_USER="SMTP_USER"
SMTP_PASS="SMTP_PASS"
## AUSFUEHREN
curl \
--ssl-reqd \
--url "smtp://${HOST_NAME}:587" \
--user "${SMTP_USER}:${SMTP_PASS}" \
--mail-from ${SENDER_MAIL} \
--mail-rcpt ${RECIPIENT_MAIL} \
--upload-file - <<EOF
From: ${SENDER_NAME} <${SENDER_MAIL}>
To: ${RECIPIENT_NAME} <${RECIPIENT_MAIL}>
Subject: ${SUBJECT}
Date: $(date +'%a, %-d %b %Y %H:%M:%S %z')
Message-ID: <$(tr -dc 0-9 </dev/urandom | head -c 13; echo)@$(echo $SENDER_MAIL | awk -F '@' '{print $NF}')>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
${BODY}
EOF
Erstelle base64 string und löse ihn rückwärts wieder auf:
echo -n 'test123' | base64
echo 'dGVzdDEyMw==' | base64 -d
Benutze nun Usernamen und Passwort als base64 via Telnet:
telnet domain.de 25
EHLO domain.de
AUTH LOGIN
<USERNAME_BASE64>
<PASSWORD_BASE64>
Ergebnis sollte nun sein:
235 Authentication succeeded