SMTP/Analyse: Unterschied zwischen den Versionen
K Textersetzung - „<div style="column-count:3">“ durch „<div style="column-count:2">“ |
|||
(13 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 | sudo apt-get install telnet openssl | ||
== Verbinden mit dem SMTP-Server == | == Verbinden mit dem SMTP-Server == | ||
Um eine Verbindung zu | ; Telnet | ||
Um eine Verbindung zu mail.foxtom.de herzustellen, geben Sie den folgenden Befehl ein: | |||
$ telnet smtp.domain.com 25 | $ telnet smtp.domain.com 25 | ||
Zeile 14: | Zeile 17: | ||
Versucht 159.122.219.43...Verbunden mit smtp.sendgrid.net.Escape-Zeichen ist '^]'.220 SG ESMTP-Dienst bereit unter ismtpd0001p1lon1.sendgrid.net | 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 | $ 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 | $ 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) | 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) | ||
220 SG ESMTP-Dienst bereit unter | 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 | Nun müssen wir uns identifizieren und die SMTP-Konversation mit dem Befehl EHLO einleiten | ||
EHLO | * 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: | Auf den meisten SMTP-Servern erhalten Sie eine Liste von Befehlen zurück, wenn Sie den Befehl ''Extended Hello ''(EHLO) verwenden: | ||
Zeile 34: | Zeile 42: | ||
== 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 | 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 | $ echo -ne "\0Benutzername\0Passwort" | base64 | ||
AHVzZXJuYW1lAHBhc3N3b3Jk | 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: | ||
Zeile 50: | Zeile 61: | ||
=== LOGIN verwenden === | === LOGIN verwenden === | ||
Der LOGIN-Mechanismus erwartet ebenfalls einen base64-kodierten Benutzernamen und ein Passwort, allerdings separat | 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 | $ echo -ne "benutzername" | base64 | ||
dXNlcm5hbWU= | dXNlcm5hbWU= | ||
Zeile 60: | Zeile 73: | ||
AUTH LOGIN | AUTH LOGIN | ||
Sie werden zuerst nach dem Benutzernamen und dann nach dem Passwort gefragt | 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 | 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: | Jetzt geht es ans Eingemachte! Wir brauchen mindestens diese Angaben, um eine E-Mail versenden zu können: | ||
* Der Absender (MAIL FROM) | * Der Absender (MAIL FROM) | ||
* Der Empfänger (RCPT TO) | * Der Empfänger (RCPT TO) | ||
* und den Nachrichtentext (DATA) | * 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 | 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 | 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 (.) | 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 | MAIL FROM: from@domain.com | ||
250 Absenderadresse akzeptiert | 250 Absenderadresse akzeptiert | ||
Zeile 87: | Zeile 105: | ||
Betreff: Testnachricht! | Betreff: Testnachricht! | ||
Dies ist eine Testmeldung! | Dies ist eine Testmeldung! | ||
. | . | ||
Zeile 98: | Zeile 111: | ||
250 Ok: in der Warteschlange als bazLUK4DEBqH25dH6iZuNg | 250 Ok: in der Warteschlange als bazLUK4DEBqH25dH6iZuNg | ||
Sie sollten am Ende eine Bestätigung (250 Ok) erhalten, dass die Nachricht angenommen wurde | Sie sollten am Ende eine Bestätigung (250 Ok) erhalten, dass die Nachricht angenommen wurde | ||
; Hinweis | ; 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 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