In der Welt der E-Mails gibt es viele Facetten des Testens, aber einer der grundlegendsten Tests, den Sie durchführen können, besteht darin, einfach einen Telnet-Befehl in einen bestimmten SMTP-Server einzugeben. Dieser SMTP-Check ist nützlich, um festzustellen, ob die grundlegendsten Probleme existieren oder nicht.
Ist der Server online?
Blockiert eine Firewall die Kommunikation?
Erlaubt der Mailserver das Relaying einer bestimmten Domain/E-Mail-Adresse?
Welche SMTP-Befehle unterstützt der Mailserver?
Antwortet der Server mit dem korrekten Hostnamen?
Funktioniert die Verbindung außerhalb von Drittanbieter-Software oder APIs?
All diese Fragen und mehr können mit einem einfachen Telnet-Test beantwortet werden.
Bevor wir beginnen, stellen Sie sicher, dass Sie unser Begleitstück zu diesem Beitrag öffnen: Wohin werden Bounce-Nachrichten gesendet? in einem neuen Tab, damit Sie es lesen können, nachdem Sie mit diesem Blog fertig sind.
Als Hinweis: Die in den folgenden Beispielen verwendeten Befehle (sowie zusätzliche Befehle) sind in Abschnitt 4.1 von RFC 2821 behandelt.
Wie sende ich eine E-Mail mit Telnet?
Das Senden von E-Mails über Telnet kann Ihnen helfen, Zustellprobleme in Ihrer aktuellen Konfiguration zu identifizieren.
Bevor Sie eine E-Mail mithilfe von Telnet senden, bestätigen Sie, dass Telnet sowohl installiert als auch auf Ihrem Computer aktiviert ist. Die meisten Computer sind mit einem Telnet-Client vorinstalliert. Für diejenigen Windows-Versionen, die dies nicht tun, kann einer installiert werden, indem Sie den Abschnitt „Programme und Funktionen“ im Kontrollpanel öffnen und „Windows-Funktionen ein- oder ausschalten“ auswählen. Wenn dieses Fenster geöffnet ist, wählen Sie „Telnet-Client“ und klicken Sie dann auf OK.
Sobald ein Telnet-Client auf dem Server installiert wurde, öffnen Sie das Terminalfenster, in das Sie Ihre Eingabeaufforderungsbefehle eingeben werden. Unter Windows verwenden Sie Windows + R, geben „cmd“ ein und drücken die Eingabetaste. Mac-Benutzer finden das Terminal-Symbol, indem sie den Finder öffnen und auf der Anwendungsseite nach „Dienstprogramme“ suchen, oder indem sie „Terminal“ in die Suchfunktion von Launchpad eingeben.
Als nächstes müssen wir einen Mailserver finden, in den wir uns einloggen können. Dazu benötigen wir den DNS-MX-Eintrag für eine bestimmte Domain. Dieser kann mit folgendem Befehl gefunden werden (für dieses Beispiel wird port25.com verwendet, aber jede Domain kann ersetzt werden):
Windows:
nslookup -type=mx port25.com
Nicht-autorisierte Antwort:
port25.com MX Präferenz = 100, Mail-Exchanger = mail.port25.com
Linux:
nslookup -type=mx port25.com
Nicht-autorisierte Antwort:
port25.com Mail-Exchanger = 100 mail.port25.com.
SMTP verwendet einen von drei Ports — 25, 465 oder 587, die Microsoft Outlook häufig verwendet. Wenn Ihr SMTP-Relay einen anderen Port als 25 verwendet, wie im Beispiel gezeigt, verwenden Sie den vom Mailexchange-Server in der Antwort auf das nslookup angegebenen Port. Sie können auch den Port, auf den Ihr SMTP angewiesen ist, überprüfen, indem Sie Ihren Administrator fragen oder sich in den Mailexchange-Server einloggen und die Protokolle überprüfen.
Als nächstes benötigen wir den DNS-PTR für die IP, die wir verwenden werden. Zunächst müssen wir wissen, welche IP-Adresse das Internet sieht, als ob wir sie hätten. Um dies zu finden, können wir eine Website wie:
Mit der IP-Adresse führen Sie den folgenden Befehl aus, wobei A.B.C.D die IP-Adresse ist.
Windows:
nslookup -type=ptr A.B.C.D
Nicht-autorisierte Antwort:
D.C.B.A.in-addr.arpa Name = server.example.com
Linux:
nslookup -type=ptr A.B.C.D
Nicht-autorisierte Antwort:
D.C.B.A.in-addr.arpa Name = server.example.com
server.example.com ist nur ein Beispiel, und Ihre Ergebnisse werden unterschiedlich sein.
Nun, da wir den MX-Eintrag für port25.com und den PTR für die IP, die wir verwenden wollen, haben, ist es an der Zeit, sich im SMTP-Server anzumelden. Dazu verwenden Sie den folgenden Befehl:
telnet mail.port25.com 25
Etwas Ähnliches wie das folgende sollte jetzt angezeigt werden:
Versuche 69.63.149.30... Verbunden mit mail.port25.com (69.63.149.30). Escape-Zeichen ist '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP-Dienst bereit
Wenn Sie an diesem Punkt eine Fehlermeldung wie „Kann nicht verbinden“ erhalten, ist entweder die Portnummer falsch oder der Mailserver hat Probleme.
Der erste Befehl, den wir an den Mailserver für unseren SMTP-E-Mail-Tester senden müssen, ist EHLO oder HELO. Dies ist eine grundlegende Begrüßung, die die Kommunikation zwischen dem Telnet-Client und dem SMTP-Server startet. Außerdem wird der DNS-PTR für die IP-Adresse übermittelt, von der aus wir uns verbinden, wie zuvor bestimmt.
EHLO server.example.com
Etwas Ähnliches wie das folgende sollte zurückgegeben werden:
250-mail.port25.com sagt hallo 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN
Dies zeigt die SMTP-Befehle an, die der SMTP-Server akzeptiert. Nicht alle SMTP-Server unterstützen die gleichen Befehlsgruppen. Zum Beispiel zeigt Yahoo nur Folgendes an:
250-8BITMIME 250-SIZE 41943040 250 PIPELINING
Und AOL zeigt nur eines mit:
250 DSN
Der nächste Befehl, den wir senden müssen, ist der MAIL FROM-Befehl. Dieser bestimmt die Adresse, an die Bounces gesendet werden. Dies ist nicht dasselbe wie der From-Header, der die in einem E-Mail-Client angezeigte E-Mail-Adresse ist.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Stellen Sie sicher, dass Sie den Domainnamen verwenden, der mit der Domain Ihres Mailservers übereinstimmt. Wenn beispielsweise die Domain Ihrer E-Mail anycompany.com ist, sollten Sie you@anycompany.com verwenden, anstatt eine externe E-Mail wie you@free-mail-provider.com. Unterschiede in den Domainnamen können eine Fehlermeldung auslösen.
Jetzt, da der MAIL FROM Befehl gesendet wurde, können wir den RCPT TO Befehl senden. Dieser Befehl sagt dem SMTP-Mailserver, an wen die Nachricht gesendet werden soll. Dies kann dasselbe oder anders sein als der To-Header, der die in dem E-Mail-Client angezeigte E-Mail-Adresse ist.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Überprüfen Sie die Adresse Ihres Empfängers, bevor Sie den RCPT TO-Befehl senden — eine hier angezeigte Fehlermeldung kann auf eine falsch geschriebene oder blockierte E-Mail-Empfängeradresse hinweisen.
Der letzte Befehl, den Sie ausführen müssen, bevor Sie mit dem Hauptteil der Nachricht beginnen, ist der DATA Befehl. Dieser Befehl informiert den SMTP-Mailserver, dass alles andere, das gesendet wird, der Hauptteil der Nachricht ist (der auch die Header enthält).
DATA 354 Nachricht senden
Es ist wichtig zu beachten, dass, wenn ein Mailserver PIPELINING unterstützt, wie mail.port25.com, der SMTP-Mailserver möglicherweise wartet, bis der DATA-Befehl ausgegeben wird, bevor er auf andere Befehle nach dem EHLO/HELO reagiert. In diesem Fall geben Sie die Befehle MAIL FROM, RCPT TO und DATA ein, bevor Sie auf eine Antwort warten.
Nun, da der DATA Befehl gesendet wurde, können wir beginnen, den Nachrichteninhalt zu senden. Dies beginnt mit den verschiedenen Headern. Mindestens sollte eine Nachricht einen To-, From-, Subject- und Date-Header enthalten. Die hier eingegebenen Header werden dem Benutzer in seinem E-Mail-Client angezeigt.
Von: "John Smith" <jsmith@port25.com> An: "Jane Doe" <jdoe@port25.com> Betreff: Testnachricht, die aus einer manuellen Telnet-Sitzung gesendet wurde Datum: Mi., 11. Mai 2011 16:19:57 -0400
Mit den eingestellten Headern fügen wir nun eine leere Zeile mit einem Zeilenumbruch/Zeilenwechsel hinzu (einfach zweimal die Eingabetaste drücken) und dann beginnen wir mit dem eigentlichen Hauptteil der Nachricht.
Hallo Welt, dies ist eine Testnachricht, die aus einer manuellen Telnet-Sitzung gesendet wurde. Mit freundlichen Grüßen, SMTP-Administrator
Mit der vollständigen Nachricht müssen wir dem SMTP-Server sagen, dass wir mit der Nachricht fertig sind und möchten, dass der SMTP-Mailserver sie akzeptiert. Dies geschieht mit einem Punkt in einer eigenen Zeile. Wenn während des Schreibens einer Nachricht ein Punkt in einer eigenen Zeile benötigt wird, müssen Sie zwei Punkte setzen; der erste entschärft den zweiten.
. 250 2.6.0 Nachricht empfangen
Wenn Sie stattdessen eine Fehlermeldung anstelle der „empfangen“-Benachrichtigung erhalten, protokollieren Sie die relevanten Details und wenden Sie sich an Ihren E-Mail-Anbieter, um weitere Unterstützung zu erhalten.
Schließlich wird der QUIT Befehl gesendet, um die Verbindung zu schließen:
QUIT 221 2.0.0 mail.port25.com sagt auf Wiedersehen
Damit hat der Mailserver die Nachricht jetzt zur Zustellung akzeptiert, Ihr Telnet-E-Mail-Test ist abgeschlossen, und es sollte im Posteingang der RCPT TO-Adresse warten!!!
Hier sind alle Befehle ohne Unterbrechung:
telnet mail.port25.com 25 Versuche 69.63.149.30... Verbunden mit mail.port25.com (69.63.149.30). Escape-Zeichen ist '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP-Dienst bereit EHLO server.example.com 250-mail.port25.com sagt hallo 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 Nachricht senden Von: "John Smith" <jsmith@port25.com> An: "Jane Doe" <jdoe@port25.com> Betreff: Testnachricht, die aus einer manuellen Telnet-Sitzung gesendet wurde Datum: Mi., 11. Mai 2011 16:19:57 -0400 Hallo Welt, dies ist eine Testnachricht, die aus einer manuellen Telnet-Sitzung gesendet wurde. Mit freundlichen Grüßen, SMTP-Administrator . 250 2.6.0 Nachricht empfangen QUIT 221 2.0.0 mail.port25.com sagt auf Wiedersehen
Das Senden einer E-Mail mit Telnet ermöglicht es Ihnen, die Verbindungsfähigkeiten schnell und kostengünstiger als mit robusten Diagnosetechnik oder Software zu testen.
Wie teste ich SMTP mit Telnet-Authentifizierung?
Jetzt, da Sie wissen, wie Sie eine SMTP-Verbindung mit Telnet überprüfen können, werden wir die Authentifizierungsverfahren besprechen. SMTP-Authentifizierung hilft, große Mengen an Spam zu verhindern, die die Postfächer der Leser erreichen, obwohl nicht alle Mail-Exchange-Server dies erfordern.
Der Hauptunterschied bei modernen Authentifizierungsprotokollen ist die Anwesenheit einer Base64-Codierung. Base64 wandelt Binärdaten in das für Mailserver erforderliche ASCII-Textformat um, um eine erfolgreiche Datenübertragung zu gewährleisten. Es ist eine Möglichkeit, Ihre Anmeldeinformationen — eine Kombination aus Text — in einem numerischen Format darzustellen, das der Computer verstehen kann.
Sie können Ihre Base64 mit Software oder kostenlosen Online-Tools generieren. Sobald Sie die Informationen an den Mailserver kommunizieren, vergleicht dieser diese Daten mit seinen Aufzeichnungen, um die Authentifizierung festzustellen.
Um die SMTP-Authentifizierung über Telnet zu testen, führen Sie die folgenden Schritte aus:
Öffnen Sie das Terminal und verbinden Sie sich mit dem Mailserver, indem Sie den Telnet-Servernamen und den Zugriffsbefehl verwenden — mail.port25.com im obigen Beispiel.
Begrüßen Sie den Server mit EHLO oder HELO, geben Sie AUTH LOGIN ein und warten Sie auf die Antwort des Computers.
Geben Sie den Base64-codierten Benutzernamen ein und lassen Sie den Server antworten.
Geben Sie das Passwort in Base64-codiert ein, und Sie sollten eine Antwort wie „Authentifizierung erfolgreich.“ erhalten.
Fahren Sie mit MAIL FROM, RCPT TO, DATA und QUIT fort, um Ihre authentifizierte E-Mail zu senden.