SMTP-Prüfung mit telnet

Ein praktischer Leitfaden zum manuellen Testen eines E-Mail-Servers. Erfahren Sie, was jeder SMTP-Befehl bewirkt, wie der Server antwortet und wie Sie eine vollständige Verifizierungssitzung mit telnet oder openssl durchführen.

SMTP (Simple Mail Transfer Protocol) ist ein zeilenbasiertes Klartextprotokoll. Das bedeutet, dass Sie direkt von einem Terminal aus mit einem Mailserver sprechen und genau lesen können, was er antwortet — ohne spezielle Software. Dies ist die transparenteste Methode, um zu prüfen, ob ein Postfach existiert, ob ein Server erreichbar ist und wie er konfiguriert ist.

1. Verbindung zu einem Mailserver herstellen

Ermitteln Sie zunächst den Mailserver (MX-Host) für die Domain und öffnen Sie dann eine TCP-Verbindung zu seinem SMTP-Port. Der klassische Port ist 25. Die Submission-Ports 587 und 2525 werden mit STARTTLS verwendet; Port 465 ist implizites TLS (SMTPS).

Einfache Verbindung (Port 25):

telnet mail.example.com 25

STARTTLS-Port (587 oder 25) — telnet beherrscht kein TLS, verwenden Sie openssl:

openssl s_client -connect mail.example.com:587 -starttls smtp -crlf

Port mit implizitem TLS (465):

openssl s_client -connect mail.example.com:465 -crlf

Hinweis: Viele Heim- und Mobilfunk-Provider blockieren den ausgehenden Port 25, um Spam zu bekämpfen. Wenn telnet ... 25 einfach hängt, liegt das in der Regel an Ihrem Provider, nicht am Mailserver. Testen Sie von einem Server/VPS aus, wo Port 25 offen ist, oder verwenden Sie Submission-Ports.

2. SMTP-Befehle erklärt

Sie geben Befehle ein (Groß-/Kleinschreibung wird ignoriert); der Server antwortet mit einem 3-stelligen Code und Text. Beenden Sie jeden Befehl mit Enter (CRLF).

BefehlWas er bewirkt
HELO domainVeraltete Begrüßung. Identifiziert den verbindenden Host anhand seines Namens. Der Server antwortet mit 250.
EHLO domainModerne Begrüßung (Extended HELO). Wie HELO, aber der Server listet zusätzlich die unterstützten Erweiterungen auf (STARTTLS, AUTH, SIZE, PIPELINING…).
MAIL FROM:<addr>Beginnt eine neue Nachricht und legt den Umschlag-Absender fest (den “Return-Path”). Antwort 250, falls akzeptiert.
RCPT TO:<addr>Der entscheidende Befehl für die Verifizierung. Fordert den Server auf, einen Empfänger zu akzeptieren. 250 = das Postfach wird akzeptiert; 550 = kein solcher Benutzer; 4xx = später erneut versuchen (z. B. Greylisting).
DATABeginnt den Nachrichtentext. Der Server antwortet mit 354; Sie senden Header + Text und schließen mit einem einzelnen Punkt . in einer eigenen Zeile ab. (Bei einer Verifizierungsprüfung erreichen Sie diesen Schritt nie.)
RSETSetzt die aktuelle Transaktion zurück (vergisst MAIL FROM / RCPT TO), ohne die Verbindung zu schließen.
VRFY userFordert den Server auf, einen Benutzernamen/eine Adresse zu verifizieren. Genau dafür gedacht, heute aber fast immer deaktiviert (gibt 252 oder 502 zurück), weil es gültige Adressen an Spammer verrät.
EXPN listFordert den Server auf, eine Mailingliste in ihre Mitglieder aufzulösen. Wie VRFY aus demselben Datenschutzgrund fast überall deaktiviert.
STARTTLSRüstet eine einfache Verbindung auf verschlüsseltes TLS auf (an den Ports 25/587). Wird nur angeboten, wenn es in der EHLO-Antwort aufgeführt ist.
AUTH LOGIN / PLAINAuthentifiziert einen Benutzer (erforderlich, um Post über Submission-Ports zu senden, nicht für die Verifizierung).
NOOPTut nichts; der Server antwortet mit 250. Nützlich, um eine Verbindung am Leben zu halten oder die Reaktionsfähigkeit zu testen.
HELPFordert den Server auf, die von ihm unterstützten Befehle aufzulisten.
QUITBeendet die Sitzung höflich. Der Server antwortet mit 221 und schließt die Verbindung.

3. Antwortcodes

Die erste Ziffer verrät Ihnen die Kategorie, sodass Sie jede Antwort lesen können, selbst wenn Sie den genauen Code nicht kennen:

  • 2xx — Erfolg (Befehl akzeptiert).
  • 3xx — Zwischenstufe, der Server möchte weitere Eingaben (z. B. 354 nach DATA).
  • 4xx — temporärer Fehler: später erneut versuchen. Die Adresse kann dennoch gültig sein.
  • 5xx — dauerhafter Fehler: der Befehl oder die Adresse wurde abgelehnt.
CodeBedeutung
220Dienst bereit (das Begrüßungsbanner).
221Verbindung wird geschlossen (Antwort auf QUIT).
250OK — Befehl akzeptiert (die gewünschte Antwort nach RCPT TO).
251 / 252Benutzer nicht lokal, wird aber weitergeleitet / kann nicht verifiziert werden, es wird aber versucht zuzustellen.
354Beginnen Sie mit dem Senden des Nachrichtentextes (nach DATA).
421Dienst nicht verfügbar, wird geschlossen — oft Ratenbegrenzung.
450 / 451 / 452Temporäres Problem (Postfach belegt, lokaler Fehler, wenig Speicher). Greylisting taucht häufig hier auf.
502Befehl nicht implementiert (typische Antwort auf VRFY / EXPN).
550Postfach nicht verfügbar / kein solcher Benutzer — die Adresse existiert nicht.
551 / 552 / 553 / 554Benutzer nicht lokal / Kontingent überschritten / ungültiger Postfachname / Transaktion fehlgeschlagen.

4. Ein vollständig durchgespieltes Beispiel

Prüfung, ob john@example.com existiert. Zeilen, die Sie eingeben, sind mit > gekennzeichnet; alles übrige stammt vom Server:

$ telnet mail.example.com 25 220 mail.example.com ESMTP ready > EHLO checkemail.test 250-mail.example.com Hello checkemail.test 250-STARTTLS 250-SIZE 52428800 250 PIPELINING > MAIL FROM:<probe@checkemail.test> 250 2.1.0 Ok > RCPT TO:<john@example.com> 250 2.1.5 Ok ← Postfach EXISTIERT > RSET 250 2.0.0 Ok > QUIT 221 2.0.0 Bye

Falls der Empfänger stattdessen nicht existiert, würden Sie etwa Folgendes sehen:

> RCPT TO:<nosuchuser@example.com> 550 5.1.1 <nosuchuser@example.com>: Recipient address rejected: User unknown

5. Dinge, die Ergebnisse unsicher machen

  • Greylisting — der Server gibt beim ersten Versuch absichtlich einen temporären 4xx-Code zurück und bittet Sie, später wiederzukommen. Ein 4xx bedeutet nicht, dass die Adresse ungültig ist.
  • Catch-all-Domains — einige Server akzeptieren jeden Empfänger mit 250 und sortieren es später aus. Dann kann RCPT TO nicht beweisen, dass ein bestimmtes Postfach existiert. Um ein Catch-all zu erkennen, versuchen Sie eine eindeutig zufällige Adresse: Wird sie ebenfalls akzeptiert, handelt es sich um eine Catch-all-Domain.
  • Missbrauchsschutz — Server können verzögern, den tatsächlichen Status verbergen oder wiederholte Prüfungen von einer IP blockieren. Testen Sie höflich und überlasten Sie keinen Server.
  • VRFY / EXPN deaktiviert — verlassen Sie sich nicht auf sie; RCPT TO ist das praktikable Signal.

Möchten Sie das automatisch erledigt haben, einschließlich MX-Abfrage, Catch-all-Erkennung und einem klaren Urteil? Verwenden Sie unseren E-Mail-Checker auf der Startseite.