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.
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.
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).
| Befehl | Was er bewirkt |
|---|---|
HELO domain | Veraltete Begrüßung. Identifiziert den verbindenden Host anhand seines Namens. Der Server antwortet mit 250. |
EHLO domain | Moderne 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). |
DATA | Beginnt 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.) |
RSET | Setzt die aktuelle Transaktion zurück (vergisst MAIL FROM / RCPT TO), ohne die Verbindung zu schließen. |
VRFY user | Fordert 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 list | Fordert den Server auf, eine Mailingliste in ihre Mitglieder aufzulösen. Wie VRFY aus demselben Datenschutzgrund fast überall deaktiviert. |
STARTTLS | Rü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 / PLAIN | Authentifiziert einen Benutzer (erforderlich, um Post über Submission-Ports zu senden, nicht für die Verifizierung). |
NOOP | Tut nichts; der Server antwortet mit 250. Nützlich, um eine Verbindung am Leben zu halten oder die Reaktionsfähigkeit zu testen. |
HELP | Fordert den Server auf, die von ihm unterstützten Befehle aufzulisten. |
QUIT | Beendet die Sitzung höflich. Der Server antwortet mit 221 und schließt die Verbindung. |
Die erste Ziffer verrät Ihnen die Kategorie, sodass Sie jede Antwort lesen können, selbst wenn Sie den genauen Code nicht kennen:
354 nach DATA).| Code | Bedeutung |
|---|---|
220 | Dienst bereit (das Begrüßungsbanner). |
221 | Verbindung wird geschlossen (Antwort auf QUIT). |
250 | OK — Befehl akzeptiert (die gewünschte Antwort nach RCPT TO). |
251 / 252 | Benutzer nicht lokal, wird aber weitergeleitet / kann nicht verifiziert werden, es wird aber versucht zuzustellen. |
354 | Beginnen Sie mit dem Senden des Nachrichtentextes (nach DATA). |
421 | Dienst nicht verfügbar, wird geschlossen — oft Ratenbegrenzung. |
450 / 451 / 452 | Temporäres Problem (Postfach belegt, lokaler Fehler, wenig Speicher). Greylisting taucht häufig hier auf. |
502 | Befehl nicht implementiert (typische Antwort auf VRFY / EXPN). |
550 | Postfach nicht verfügbar / kein solcher Benutzer — die Adresse existiert nicht. |
551 / 552 / 553 / 554 | Benutzer nicht lokal / Kontingent überschritten / ungültiger Postfachname / Transaktion fehlgeschlagen. |
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
4xx-Code zurück und bittet Sie, später wiederzukommen. Ein 4xx bedeutet nicht, dass die Adresse ungültig ist.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.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.