Zum Inhalt springen

SMTP/Analyse: Unterschied zwischen den Versionen

Aus Foxwiki
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:
= SMTP mit telnet oder openssl testen =
'''{{BASEPAGENAME}}''' - SMTP mit telnet und openssl testen


[[Image:Bild1.png|top]]
== 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


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.
== Installation ==
 
sudo apt-get install telnet openssl
Wir verwenden [https://sendgrid.com/ Sendgrid ]für den Versand von Mails in den meisten unserer Webanwendungen, daher werde ich ihren [https://www.stevenrombauts.be/docs/API_Reference/SMTP_API/integrating_with_the_smtp_api.html SMTP-Server ]als Beispiel verwenden.
 
== Anforderungen ==
 
Bevor wir anfangen können, müssen Sie sicherstellen, dass Sie telnet oder openssl installiert haben. Beide werden bei den meisten Linux-Distributionen standardmäßig installiert. Wenn sie nicht installiert sind, können Sie sie mit Ihrem Standard-Paketmanager holen:
 
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">sudo apt-get install telnet openssl</span></div>
 
 
<span style="color:#f8f8f2;">sudo yum install telnet openssl</span>
 
Auf dem Mac können Sie es mit [https://brew.sh/ Homebrew ]installieren:
 
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">brew install telnet openssl</span></div>


== Verbinden mit dem SMTP-Server ==
== Verbinden mit dem SMTP-Server ==
 
; Telnet
Um eine Verbindung zu smtp.sendgrid.com herzustellen, geben Sie den folgenden Befehl ein:
Um eine Verbindung zu mail.foxtom.de herzustellen, geben Sie den folgenden Befehl ein:
 
$ telnet smtp.domain.com 25
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">$ telnet smtp.domain.com </span><span style="color:#ae81ff;">25</span></div>


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:


<div style="margin-left:1cm;margin-right:1cm;">Versucht 159.122.219.43...Verbunden mit smtp.sendgrid.net.Escape-Zeichen ist '^]'.220 SG ESMTP-Dienst bereit unter ismtpd0001p1lon1.sendgrid.net</div>
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.
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
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">$ openssl s_client -starttls smtp -connect smtp.sendgrid.com:587</span></div>


Um SSL auf Port 465 zu verwenden:
Um SSL auf Port 465 zu verwenden:
$ openssl s_client -connect mail.foxtom.de:465


<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">$ openssl s_client -connect smtp.sendgrid.com:465</span></div>
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). Zum Beispiel:
Beispiel
220 SG ESMTP-Dienst bereit unter mx10.foxtom.de


<div style="margin-left:1cm;margin-right:1cm;">220 SG ESMTP-Dienst bereit unter ismtpd0002p1lon1.sendgrid.net</div>
== Mit dem Server sprechen ==
 
Nun müssen wir uns identifizieren und die SMTP-Konversation mit dem Befehl EHLO einleiten
== Initiieren Sie das Gespräch ==
* 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. Dieser Befehl benötigt eine IP-Adresse oder einen Domänennamen als Argument:
 
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">EHLO stevenrombauts.be</span></div>


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
<div style="margin-left:1cm;margin-right:1cm;">250-smtp.sendgrid.net250-8BITMIME250-PIPELINING250-SIZE 31457280250-AUTH EINFACHE ANMELDUNG250 AUTH=EINFACHE ANMELDUNG</div>


== 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.
* 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:
Führen Sie diesen Befehl aus, um diese Zeichenfolge unter Verwendung der base64-Binärdatei zu erzeugen
 
$ echo -ne "\0Benutzername\0Passwort" | base64
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">$ echo -ne </span><span style="color:#e6db74;">"\0Benutzername\0Passwort" </span><span style="color:#f8f8f2;">| base64</span></div>
AHVzZXJuYW1lAHBhc3N3b3Jk


<span style="color:#f8f8f2;">AHVzZXJuYW1lAHBhc3N3b3Jk</span>
''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
<div style="margin-left:1cm;margin-right:1cm;">235 Authentifizierung erfolgreich</div>


=== 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:
Erzeugen Sie zunächst die base64-kodierten Zeichenketten
 
$ echo -ne "benutzername" | base64
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">$ echo -ne </span><span style="color:#e6db74;">"benutzername" </span><span style="color:#f8f8f2;">| base64</span></div>
dXNlcm5hbWU=
 
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">dXNlcm5hbWU</span><span style="color:#f92672;"><nowiki>=</nowiki></span></div>


<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">$ echo -ne </span><span style="color:#e6db74;">"Passwort" </span><span style="color:#f8f8f2;">| base64</span></div>
echo -ne "Passwort" | base64
 
cGFzc3dvcmQ=
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">cGFzc3dvcmQ</span><span style="color:#f92672;"><nowiki>=</nowiki></span></div>


und authentifizieren Sie sich beim SMTP-Server:
und authentifizieren Sie sich beim SMTP-Server:
AUTH LOGIN


<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#f8f8f2;">AUTH LOGIN</span></div>
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. Die gesamte Konversation wird so aussehen:
334 VXNlcm5hbWU6dXNlcm5hbWU=334 UGFzc3dvcmQ6cGFzc3dvcmQ=235 Authentifizierung erfolgreich
 
<div style="margin-left:1cm;margin-right:1cm;">334 VXNlcm5hbWU6dXNlcm5hbWU=334 UGFzc3dvcmQ6cGFzc3dvcmQ=235 Authentifizierung erfolgreich</div>
 
== Senden Sie eine E-Mail ==
 
Jetzt geht es ans Eingemachte! Wir brauchen mindestens diese Angaben, um eine E-Mail versenden zu können:* <div style="margin-left:1.251cm;">Der Absender (MAIL FROM) </div>
* <div style="margin-left:1.251cm;">Der Empfänger (RCPT TO) </div>
* <div style="margin-left:1.251cm;">und den Nachrichtentext (DATA) </div>
 
 
 
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!
 
 
Hallo,


== 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


Dies ist eine Testmeldung!
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 (.)


Das Beste,
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


Steven
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


250 Ok: in der Warteschlange als bazLUK4DEBqH25dH6iZuNg
Geben Sie QUIT ein, um die Sitzung zu beenden


Sie sollten am Ende eine Bestätigung (250 Ok) erhalten, dass die Nachricht angenommen wurde.
<noinclude>


''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.
== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


Geben Sie QUIT ein, um die Sitzung zu beenden.
=== Links ===
==== Weblinks ====
# https://www.foxtom.de/2018/12/test-smtp-with-telnet-or-openssl/


[[Kategorie:SMTP]]


Quelle: https://www.stevenrombauts.be/2018/12/test-smtp-with-telnet-or-openssl/
</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

  1. https://www.foxtom.de/2018/12/test-smtp-with-telnet-or-openssl/