SMTP/Analyse: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „= SMTP mit telnet oder openssl testen = top Manchmal muss ich testen, ob ein bestimmter Rechner in der Lage ist, E-Mails über einen SMTP-Server zu versenden. Die Verwendung von [https://en.wikipedia.org/wiki/Telnet Telnet ]oder [https://www.openssl.org/ Openssl ]ist eine gute Möglichkeit, um Verbindungsprobleme zu testen und zu beheben. Wir verwenden [https://sendgrid.com/ Sendgrid ]für den Versand von Mails in den meisten unsere…“ |
K Textersetzung - „<div style="column-count:3">“ durch „<div style="column-count:2">“ |
||
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''{{BASEPAGENAME}}''' - SMTP mit telnet und openssl testen | |||
[[ | == Beschreibung == | ||
Testen, ob ein bestimmter Rechner in der Lage ist, E-Mails über einen SMTP-Server zu versenden | |||
* Die Verwendung von [https://en.wikipedia.org/wiki/Telnet Telnet] oder [https://www.openssl.org/ Openssl ]ist eine gute Möglichkeit, um Verbindungsprobleme zu testen und zu beheben | |||
== Installation == | |||
sudo apt-get install telnet openssl | |||
== | |||
== Verbinden mit dem SMTP-Server == | == Verbinden mit dem SMTP-Server == | ||
; Telnet | |||
Um eine Verbindung zu | Um eine Verbindung zu mail.foxtom.de herzustellen, geben Sie den folgenden Befehl ein: | ||
$ telnet smtp.domain.com 25 | |||
Wenn die Verbindung hergestellt ist, erhalten Sie eine Ausgabe ähnlich der folgenden zurück: | Wenn die Verbindung hergestellt ist, erhalten Sie eine Ausgabe ähnlich der folgenden zurück: | ||
Versucht 159.122.219.43...Verbunden mit smtp.sendgrid.net.Escape-Zeichen ist '^]'.220 SG ESMTP-Dienst bereit unter ismtpd0001p1lon1.sendgrid.net | |||
Es ist wichtig zu wissen, dass wir eine unverschlüsselte Verbindung aufgebaut haben | Es ist wichtig zu wissen, dass wir eine unverschlüsselte Verbindung aufgebaut haben | ||
* Das bedeutet, dass alle Informationen im Klartext an den Server gesendet werden | |||
* Da wir uns authentifizieren und Passwörter senden müssen, empfehle ich eine Verbindung über SSL oder TLS, wenn Ihr Server dies unterstützt | |||
; Openssl | |||
Um eine Verbindung über das TLS-Protokoll an Port 587 herzustellen, verwenden Sie: | Um eine Verbindung über das TLS-Protokoll an Port 587 herzustellen, verwenden Sie: | ||
$ openssl s_client -starttls smtp -connect mail.foxtom.de:587 | |||
Um SSL auf Port 465 zu verwenden: | Um SSL auf Port 465 zu verwenden: | ||
$ openssl s_client -connect mail.foxtom.de:465 | |||
Sie erhalten eine Vielzahl von Ausgaben zur SSL-Sitzung und den verwendeten Zertifikaten, aber danach sehen Sie eine ähnliche Bestätigung wie beim Telnet-Befehl (einen 220- oder 250-Statuscode mit einer Meldung) | |||
Beispiel | |||
220 SG ESMTP-Dienst bereit unter mx10.foxtom.de | |||
== Mit dem Server sprechen == | |||
Nun müssen wir uns identifizieren und die SMTP-Konversation mit dem Befehl EHLO einleiten | |||
= | * Dieser Befehl benötigt eine IP-Adresse oder einen Domänennamen als Argument: | ||
EHLO foxtom.de | |||
Nun müssen wir uns identifizieren und die SMTP-Konversation mit dem Befehl EHLO einleiten | |||
Auf den meisten SMTP-Servern erhalten Sie eine Liste von Befehlen zurück, wenn Sie den Befehl ''Extended Hello ''(EHLO) verwenden: | Auf den meisten SMTP-Servern erhalten Sie eine Liste von Befehlen zurück, wenn Sie den Befehl ''Extended Hello ''(EHLO) verwenden: | ||
250-smtp.sendgrid.net250-8BITMIME250-PIPELINING250-SIZE 31457280250-AUTH EINFACHE ANMELDUNG250 AUTH=EINFACHE ANMELDUNG | |||
== Authentifizieren Sie sich == | == Authentifizieren Sie sich == | ||
Zeit, sich anzumelden! In der vorherigen Ausgabe wurden der AUTH-Befehl und die verfügbaren Mechanismen aufgeführt | |||
Zeit, sich anzumelden! In der vorherigen Ausgabe wurden der AUTH-Befehl und die verfügbaren Mechanismen aufgeführt | * In diesem Fall PLAIN und LOGIN | ||
=== PLAIN verwenden === | === PLAIN verwenden === | ||
Der PLAIN-Mechanismus erwartet eine base64-kodierte Zeichenfolge, die sowohl den Benutzernamen als auch das Kennwort enthält, denen jeweils ein NULL-Byte vorangestellt ist | |||
Führen Sie diesen Befehl aus, um diese Zeichenfolge unter Verwendung der base64-Binärdatei zu erzeugen | |||
$ echo -ne "\0Benutzername\0Passwort" | base64 | |||
AHVzZXJuYW1lAHBhc3N3b3Jk | |||
''Beachten Sie, dass ''bei Sendgrid der Benutzername apikey und das Passwort der API-Schlüssel ist, den Sie generiert haben (wie in der [https://sendgrid.com/docs/API_Reference/SMTP_API/integrating_with_the_smtp_api.html Dokumentation ]beschrieben) | |||
''Beachten Sie, dass ''bei Sendgrid der Benutzername apikey und das Passwort der API-Schlüssel ist, den Sie generiert haben (wie in der [https://sendgrid.com/docs/API_Reference/SMTP_API/integrating_with_the_smtp_api.html Dokumentation ]beschrieben) | |||
Nun können Sie diese base64-kodierte Zeichenfolge an den AUTH-Befehl in Ihrer Openssl- oder Telnet-Sitzung übergeben: | Nun können Sie diese base64-kodierte Zeichenfolge an den AUTH-Befehl in Ihrer Openssl- oder Telnet-Sitzung übergeben: | ||
AUTH PLAIN AHVzZXJuYW1lAHBhc3N3b3Jk | |||
AUTH PLAIN AHVzZXJuYW1lAHBhc3N3b3Jk | |||
Das Ergebnis sollte sein: | Das Ergebnis sollte sein: | ||
235 Authentifizierung erfolgreich | |||
=== LOGIN verwenden === | === LOGIN verwenden === | ||
Der LOGIN-Mechanismus erwartet ebenfalls einen base64-kodierten Benutzernamen und ein Passwort, allerdings separat | |||
Erzeugen Sie zunächst die base64-kodierten Zeichenketten | |||
$ echo -ne "benutzername" | base64 | |||
dXNlcm5hbWU= | |||
echo -ne "Passwort" | base64 | |||
cGFzc3dvcmQ= | |||
und authentifizieren Sie sich beim SMTP-Server: | und authentifizieren Sie sich beim SMTP-Server: | ||
AUTH LOGIN | |||
Sie werden zuerst nach dem Benutzernamen und dann nach dem Passwort gefragt | |||
* Die gesamte Konversation wird so aussehen: | |||
Sie werden zuerst nach dem Benutzernamen und dann nach dem Passwort gefragt | 334 VXNlcm5hbWU6dXNlcm5hbWU=334 UGFzc3dvcmQ6cGFzc3dvcmQ=235 Authentifizierung erfolgreich | ||
== E-Mail senden == | |||
Jetzt geht es ans Eingemachte! Wir brauchen mindestens diese Angaben, um eine E-Mail versenden zu können: | |||
* Der Absender (MAIL FROM) | |||
* Der Empfänger (RCPT TO) | |||
* und den Nachrichtentext (DATA) | |||
Sie müssen immer mit dem Befehl MAIL FROM beginnen, da dies dem SMTP-Server mitteilt, dass eine neue Mail-Transaktion gestartet wird | |||
Danach folgen die Adresse des Empfängers und schließlich der Betreff und der Text der Nachricht | |||
* Sowohl die Betreffzeile als auch der Nachrichtentext werden über den DATA-Befehl übergeben | |||
* Ich empfehle auch, den From: Header immer wieder in den DATA-Befehl aufzunehmen | |||
Sobald wir bereit sind, unsere Nachricht zu senden, beenden wir sie mit einem einzelnen Punkt (.) | |||
So sieht das aus, wenn Sie alles zusammensetzen: | |||
MAIL FROM: from@domain.com | |||
250 Absenderadresse akzeptiert | |||
rcpt an: john@doe.com | |||
250 Empfängeradresse akzeptiert | |||
DATEN | |||
354 Fortfahren | |||
Von: from@domain.com | |||
Betreff: Testnachricht! | |||
Dies ist eine Testmeldung! | |||
. | |||
250 Ok: in der Warteschlange als bazLUK4DEBqH25dH6iZuNg | |||
Sie sollten am Ende eine Bestätigung (250 Ok) erhalten, dass die Nachricht angenommen wurde | |||
; Hinweis | |||
:* Wenn Sie die Verbindung mit openssl statt mit telnet hergestellt haben, müssen Sie darauf achten, dass Sie den Befehl rcpt to in '''Kleinbuchstaben '''eingeben | |||
:* Wenn Sie in der Client-Sitzung R drücken, wird openssl angewiesen, die TLS-Verbindung neu auszuhandeln | |||
Geben Sie QUIT ein, um die Sitzung zu beenden | |||
<noinclude> | |||
== Anhang == | |||
=== Siehe auch === | |||
<div style="column-count:2"> | |||
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree> | |||
</div> | |||
---- | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}/}} | |||
=== Links === | |||
==== Weblinks ==== | |||
# https://www.foxtom.de/2018/12/test-smtp-with-telnet-or-openssl/ | |||
[[Kategorie:SMTP]] | |||
</noinclude> |
Aktuelle Version vom 28. Juni 2025, 11:11 Uhr
SMTP/Analyse - SMTP mit telnet und openssl testen
Beschreibung
Testen, ob ein bestimmter Rechner in der Lage ist, E-Mails über einen SMTP-Server zu versenden
- Die Verwendung von Telnet oder Openssl ist eine gute Möglichkeit, um Verbindungsprobleme zu testen und zu beheben
Installation
sudo apt-get install telnet openssl
Verbinden mit dem SMTP-Server
- Telnet
Um eine Verbindung zu mail.foxtom.de herzustellen, geben Sie den folgenden Befehl ein:
$ telnet smtp.domain.com 25
Wenn die Verbindung hergestellt ist, erhalten Sie eine Ausgabe ähnlich der folgenden zurück:
Versucht 159.122.219.43...Verbunden mit smtp.sendgrid.net.Escape-Zeichen ist '^]'.220 SG ESMTP-Dienst bereit unter ismtpd0001p1lon1.sendgrid.net
Es ist wichtig zu wissen, dass wir eine unverschlüsselte Verbindung aufgebaut haben
- Das bedeutet, dass alle Informationen im Klartext an den Server gesendet werden
- Da wir uns authentifizieren und Passwörter senden müssen, empfehle ich eine Verbindung über SSL oder TLS, wenn Ihr Server dies unterstützt
- Openssl
Um eine Verbindung über das TLS-Protokoll an Port 587 herzustellen, verwenden Sie:
$ openssl s_client -starttls smtp -connect mail.foxtom.de:587
Um SSL auf Port 465 zu verwenden:
$ openssl s_client -connect mail.foxtom.de:465
Sie erhalten eine Vielzahl von Ausgaben zur SSL-Sitzung und den verwendeten Zertifikaten, aber danach sehen Sie eine ähnliche Bestätigung wie beim Telnet-Befehl (einen 220- oder 250-Statuscode mit einer Meldung)
Beispiel
220 SG ESMTP-Dienst bereit unter mx10.foxtom.de
Mit dem Server sprechen
Nun müssen wir uns identifizieren und die SMTP-Konversation mit dem Befehl EHLO einleiten
- Dieser Befehl benötigt eine IP-Adresse oder einen Domänennamen als Argument:
EHLO foxtom.de
Auf den meisten SMTP-Servern erhalten Sie eine Liste von Befehlen zurück, wenn Sie den Befehl Extended Hello (EHLO) verwenden:
250-smtp.sendgrid.net250-8BITMIME250-PIPELINING250-SIZE 31457280250-AUTH EINFACHE ANMELDUNG250 AUTH=EINFACHE ANMELDUNG
Authentifizieren Sie sich
Zeit, sich anzumelden! In der vorherigen Ausgabe wurden der AUTH-Befehl und die verfügbaren Mechanismen aufgeführt
- In diesem Fall PLAIN und LOGIN
PLAIN verwenden
Der PLAIN-Mechanismus erwartet eine base64-kodierte Zeichenfolge, die sowohl den Benutzernamen als auch das Kennwort enthält, denen jeweils ein NULL-Byte vorangestellt ist
Führen Sie diesen Befehl aus, um diese Zeichenfolge unter Verwendung der base64-Binärdatei zu erzeugen
$ echo -ne "\0Benutzername\0Passwort" | base64 AHVzZXJuYW1lAHBhc3N3b3Jk
Beachten Sie, dass bei Sendgrid der Benutzername apikey und das Passwort der API-Schlüssel ist, den Sie generiert haben (wie in der Dokumentation beschrieben)
Nun können Sie diese base64-kodierte Zeichenfolge an den AUTH-Befehl in Ihrer Openssl- oder Telnet-Sitzung übergeben:
AUTH PLAIN AHVzZXJuYW1lAHBhc3N3b3Jk
Das Ergebnis sollte sein:
235 Authentifizierung erfolgreich
LOGIN verwenden
Der LOGIN-Mechanismus erwartet ebenfalls einen base64-kodierten Benutzernamen und ein Passwort, allerdings separat
Erzeugen Sie zunächst die base64-kodierten Zeichenketten
$ echo -ne "benutzername" | base64 dXNlcm5hbWU=
echo -ne "Passwort" | base64 cGFzc3dvcmQ=
und authentifizieren Sie sich beim SMTP-Server:
AUTH LOGIN
Sie werden zuerst nach dem Benutzernamen und dann nach dem Passwort gefragt
- Die gesamte Konversation wird so aussehen:
334 VXNlcm5hbWU6dXNlcm5hbWU=334 UGFzc3dvcmQ6cGFzc3dvcmQ=235 Authentifizierung erfolgreich
E-Mail senden
Jetzt geht es ans Eingemachte! Wir brauchen mindestens diese Angaben, um eine E-Mail versenden zu können:
- Der Absender (MAIL FROM)
- Der Empfänger (RCPT TO)
- und den Nachrichtentext (DATA)
Sie müssen immer mit dem Befehl MAIL FROM beginnen, da dies dem SMTP-Server mitteilt, dass eine neue Mail-Transaktion gestartet wird
Danach folgen die Adresse des Empfängers und schließlich der Betreff und der Text der Nachricht
- Sowohl die Betreffzeile als auch der Nachrichtentext werden über den DATA-Befehl übergeben
- Ich empfehle auch, den From: Header immer wieder in den DATA-Befehl aufzunehmen
Sobald wir bereit sind, unsere Nachricht zu senden, beenden wir sie mit einem einzelnen Punkt (.)
So sieht das aus, wenn Sie alles zusammensetzen:
MAIL FROM: from@domain.com 250 Absenderadresse akzeptiert rcpt an: john@doe.com 250 Empfängeradresse akzeptiert DATEN 354 Fortfahren Von: from@domain.com Betreff: Testnachricht! Dies ist eine Testmeldung! . 250 Ok: in der Warteschlange als bazLUK4DEBqH25dH6iZuNg
Sie sollten am Ende eine Bestätigung (250 Ok) erhalten, dass die Nachricht angenommen wurde
- Hinweis
-
- Wenn Sie die Verbindung mit openssl statt mit telnet hergestellt haben, müssen Sie darauf achten, dass Sie den Befehl rcpt to in Kleinbuchstaben eingeben
- Wenn Sie in der Client-Sitzung R drücken, wird openssl angewiesen, die TLS-Verbindung neu auszuhandeln
Geben Sie QUIT ein, um die Sitzung zu beenden
Anhang
Siehe auch
Links
Weblinks