Deliverability

Was sind SMTP-Befehle und was müssen Sie darüber wissen?

Dieser Artikel behandelt, was SMTP-Befehle sind und wie Sie mit Ihrem SMTP-Server kommunizieren. Anschließend stellen wir Ihnen einige wichtige SMTP-Befehle und Antwortcodes vor.
Bild für Was sind SMTP-Befehle und was müssen Sie darüber wissen?

Warum benötigen wir SMTP-Befehle und was bewirken sie? Wir verwenden SMTP-Befehle (Simple Mail Transfer Protocol), um mit E-Mail-Servern zu kommunizieren. Diese Befehle sind essenziell, um den E-Mail-Versand zu initiieren und zu verwalten. Durch das Senden von Befehlen wie „EHLO“ (initiiert die Verbindung), „MAIL FROM“ (gibt die E-Mail-Adresse des Absenders an) und anderen weisen wir E-Mail-Server an, wie sie die zu versendenden E-Mails behandeln sollen. Ohne diese Befehle wüsste der E-Mail-Server nicht, wie er unsere Nachrichten verarbeiten und zustellen soll.

Was ist SMTP?

Bevor eine E-Mail überhaupt im Posteingang landet, passiert im Hintergrund einiges. Es beginnt mit TLS (Transport Layer Security), das aktiviert wird, um die Verbindung zu verschlüsseln und Ihre Daten vor neugierigen Blicken zu schützen. Dann übernimmt das SMTP-Protokoll das Steuer und legt die Regeln dafür fest, wie diese Nachricht zugestellt wird. Jede Nachricht enthält zudem eine Kopfzeile – im Grunde das Wer, Was und Wann Ihrer E-Mail. Möchten Sie den Prozess in Aktion sehen? Öffnen Sie Ihre Kommandozeile. Mit nur wenigen SMTP-Befehlen vollziehen Sie den gesamten Weg vom Absender zum Server nach und erkennen Probleme bei der Zustellbarkeit, bevor sie überhaupt entstehen.

Was ist also SMTP? Das Simple Mail Transfer Protocol (SMTP) ist lediglich ein Regelwerk, das den Versand, Empfang und die Weiterleitung von E-Mails steuert.

Hier eine Übersicht:

  1. Die SMTP-Methode stellt eine Verbindung zwischen Ihrem E-Mail-Client (dem des Absenders) und Ihrem SMTP-Server her.
  2. Der SMTP-Server führt eine Reihe von Verifizierungen durch.
  3. Der SMTP-Server nutzt SMTP, um Ihre E-Mail an den E-Mail-Anbieter des Empfängers, wie Microsoft Outlook oder Gmail, weiterzuleiten.
  4. Danach trennt SMTP die Verbindung zwischen Ihrem E-Mail-Client und dem SMTP-Server.

Um den E-Mail-Versand- und -Empfangsprozess abzuschließen, verwendet der E-Mail-Client des Empfängers IMAP (ein weiteres Protokoll), um Nachrichten vom empfangenden IMAP-E-Mail-Server herunterzuladen, wenn Ihr Abonnent beschließt, seine E-Mails abzurufen. IMAP hilft bei der Verwaltung von E-Mails, sodass Ihre Empfänger in der Benutzeroberfläche ihres Postfachs mit ihnen interagieren können.

Möchten Sie mehr über SMTP und dessen Funktionsweise erfahren? Wenn Sie sich genauso für E-Mails begeistern wie wir, lautet die Antwort ja. Lesen Sie unseren Beitrag Was ist SMTP und wie funktioniert es?, um mehr zu erfahren.

Was ist ESMTP?

Halten Sie durch, nur noch ein Akronym, bevor wir zu den Befehlen kommen. ESMTP (Extended Simple Mail Transfer Protocol) erweitert die Funktionen von SMTP, um das Teilen von Multimedia-Dateien wie Bildern, Audiodateien und Videos zu ermöglichen. ESMTP enthält zusätzliche Befehle, die folgende Funktionen ermöglichen:

  • Authentifizierung des Absenders
  • Verschlüsselung von E-Mails mit SSL
  • Anhängen von Multimedia-Dateien
  • Begrenzung der E-Mail-Größe basierend auf Server-Spezifikationen
  • Gleichzeitige Übertragung an mehrere Empfänger

Im Folgenden gehen wir sowohl auf ESMTP- als auch auf SMTP-Befehle ein.

Was ist ein SMTP-Befehl?

Ein SMTP-Befehl ist eine spezifische Anweisung, die von einem E-Mail-Client an einen E-Mail-Server gesendet wird und ihm mitteilt, welche Aktion ausgeführt werden soll – wie das Senden einer Nachricht, das Festlegen eines Absenders oder Empfängers oder das Starten einer sicheren Verbindung.

Muss ich SMTP-Befehle überhaupt kennen?

Ja: Wenn Sie in der E-Mail-Entwicklung tätig sind, müssen Sie SMTP-Befehle kennen. Wenn Sie jedoch ein normales Gmail-Konto nutzen, können Sie sich diesen Platz im Kopf wahrscheinlich für zufälliges Game-of-Thrones-Wissen aufsparen.

SMTP-Befehle werden in einer bestimmten Reihenfolge verwendet, um die Kommunikation zwischen zwei Servern für die Zustellung einer E-Mail zu erleichtern. Hier sind einige Szenarien, in denen es hilfreich sein kann, SMTP-Befehle zu kennen:

  • Sie möchten SMTP auf Ihrem Computer oder im Netzwerk konfigurieren
  • Sie müssen eine Fehlerbehebung bei Ihrem E-Mail-Service durchführen
  • Sie müssen Ihren SMTP-Server kontaktieren
  • Okay, das ist ziemlich spezifisch, aber was ist, wenn Sie mitten in einer Telnet-Sitzung auf E-Mails zugreifen möchten? Telnet ermöglicht Ihnen den virtuellen Zugriff auf einen Computer und die Implementierung eines bidirektionalen Remote-Zugriffs für die Zusammenarbeit
  • Ebenfalls spezifisch: Sie versuchen, E-Mails aus einer Linux-Shell heraus zu versenden
  • Sie möchten einen SMTP-Test durchführen

Falls Ihnen einer dieser Anwendungsfälle bekannt vorkommt, lesen Sie weiter.

Wie sollte eine SMTP-Sitzung ablaufen?

Stellen Sie sich eine SMTP-Sitzung als Dialog zwischen Ihrem Client und einem SMTP-Server vor. Sie senden Befehle mit alphabetischen Zeichen und der Server antwortet mit numerischen Codes.

Was ist ein Client, fragen Sie sich? Clients können Ihr E-Mail-Client sein, wie z. B. Gmail, der in Ihrem Namen Befehle erteilt. Oder es kann ein Terminal sein, das Sie verwenden, um Befehle einzugeben.

Normalerweise folgen SMTP-Sitzungen einem Standardablauf:

  1. Handshake: Der Client und der Server stellen eine TCP-Verbindung (Transmission Control Protocol) her
  2. E-Mail-Übertragung: Der Client übergibt Ihre E-Mail-Nachricht an den SMTP-Server, und der Server führt Authentifizierungsprüfungen durch
  3. Beendigung: Der Client und der Server schließen die TCP-Verbindung

Was sind einige wesentliche SMTP-Befehle?

Da wir nun wissen, wie eine SMTP-Sitzung aussieht, gehen wir einige wesentliche SMTP- und ESMTP-Befehle. durch. Wir haben diese in der Reihenfolge aufgelistet, in der sie verwendet werden könnten:

  1. Der Befehl HELO oder ELHO
  2. Der Befehl AUTH
  3. Der Befehl MAIL FROM
  4. Der Befehl RCPT TO
  5. Der Befehl DATA
  6. Der Befehl BDAT
  7. Der Befehl VRFY
  8. Der Befehl RSET
  9. Der Befehl QUIT
  10. Der Befehl HELP

1. Der Befehl HELO oder EHLO

Der erste Befehl, den Sie kennen müssen, ist der Befehl HELO. HELO startet die SMTP-Sitzung und ermöglicht es dem Client, den Server zu begrüßen und sich vorzustellen. Der Befehl akzeptiert den Domain-Namen oder die IP-Adresse des SMTP-Clients als Argument, wie unten dargestellt.

                                

                                    HELO mailgun.net
                                
                            

Der Befehl HELO gilt größtenteils als veraltet, aber SMTP-Clients und -Mechanismen müssen ihn als Fallback für die Kommunikation mit älteren Implementierungen unterstützen.

Erinnern Sie sich daran, wie wir oben erwähnt haben, dass ESMTP SMTP erweitert hat? Dementsprechend hat ESMTP manchmal andere Befehle als SMTP. EHLO ist die ESMTP-Alternative zu SMTP HELO für Server, die ESMTP unterstützen. Der SMTP-Server antwortet mit einem SMTP-Fehlercode, wenn er ESMTP nicht unterstützt. In diesem Fall müssen Sie den Handshake-Prozess von vorn beginnen. Sehen Sie sich den folgenden ESMTP-Beispielbefehl an.

                                

                                    EHLO mailgun.net
                                
                            

2. Der Befehl AUTH

Der Befehl AUTH ist ein ESMTP-Befehl, der den SMTP-Client gegenüber dem SMTP-Server authentifiziert. Er kann je nach Sicherheitsstufe und Anmeldemethode verschiedene Keywords annehmen: PLAIN, LOGIN und CRAM-MD5. Ihre Sitzung ist authentifiziert, sobald der Server eine positive Antwort gibt. Sehen Sie sich den Befehl AUTH unten an.

                                

                                    AUTH CRAM-MD5
                                
                            

Erfahren Sie mehr über Keywords für den Befehl AUTH .

3. Der Befehl MAIL FROM

Nachdem Sie den Client-Server-Handshake mit einem Befehl HELO oder EHLO initiiert haben, können Sie den Befehl MAIL FROM verwenden, um eine E-Mail-Übertragung zu starten. Genauer gesagt geben Sie (als Absender) die E-Mail-Adresse des Absenders im „From“-Feld an. Der Befehl MAIL FROM nimmt die „From“-E-Mail-Adresse als Argument an, wie im SMTP-Beispielcode unten dargestellt.

                                

                                    MAIL FROM "test@mailgun.net"
                                
                            

4. Der Befehl RCPT TO

Verwenden Sie den Befehl RCPT TO, um den Empfänger als Argument anzugeben. Wenn Sie mehr als einen Empfänger haben, verwenden Sie RCPT TO, um jeden Empfänger einzeln anzugeben. Sehen Sie sich den folgenden RCPT TO-Beispielbefehl an.

                                

                                    RCPT TO "subscriber@recipientsinbox.com"
                                
                            

5. Der Befehl DATA

Mit dem Befehl DATA bittet Ihr SMTP-Client den SMTP-Server um die Erlaubnis, Ihre E-Mail-Nachricht (die Daten) zu übertragen. Sobald der Server mit dem Code 354 geantwortet hat, um die Erlaubnis zu erteilen, liefert der Client Ihren E-Mail-Inhalt Zeile für Zeile aus. Verwenden Sie eine abschließende Zeile mit einem Punkt („.“) um die Datenübertragung zu beenden.

Sehen Sie sich den folgenden DATA-Beispielbefehl an.

                                

                                    DATA
354 (server response code)
Date: Wed, 30 July 2022 06:04:34
From: test@mailgun.net
Subject: SMTP session tutorial
To: subscriber@recipientsinbox.com
Body text
.
                                
                            

6. Der Befehl BDAT

Der Befehl BDAT ist die ESMTP-Version des Befehls DATA , der E-Mail-Inhalte überträgt. BDAT akzeptiert zwei Argumente:

  • Die Länge des Datenblocks (in Oktetten)
  • Einen Indikator, dass der Datenblock endet

Sehen Sie sich den folgenden BDAT-Beispielbefehl an.

                                

                                    BDAT 67 LAST
To: subscriber@recipientsinbox.com
From: test@mailgun.net
Subject: SMTP session tutorial
250 Message OK, 67 octets received
                                
                            

BDAT wird im Microsoft Exchange Server verwendet.

7. Der Befehl VRFY

Senden Sie den Befehl VRFY , um den Server um eine Bestätigung zu bitten, dass ein bestimmter Benutzername oder ein Postfach auf dem Localhost existiert. Beachten Sie, dass einige SMTP-E-Mail-Server den Befehl VRFY ignorieren, da er eine Sicherheitslücke darstellen kann, die Hacker ausnutzen, um E-Mail-Adressen auszuspähen. Sehen Sie sich unten einen VRFY-Beispielbefehl an.

                                

                                    VRFY user2
250 Jada Jonesjadaj@mailgun.net
                                
                            

8. Der Befehl RSET

Möchten Sie Ihre SMTP-Verbindung in den Anfangszustand zurücksetzen, ohne die Verbindung zu trennen? Verwenden Sie den Befehl RSET. Dieser Befehl nimmt keine Argumente an. Sehen Sie sich den folgenden Beispielbefehl an.

                                

                                    RSET
                                
                            

9. Der Befehl QUIT

Nehmen wir an, Sie haben Ihre SMTP-Sitzung beendet. Sie möchten die Daten löschen und Ihre Sitzung beenden. Verwenden Sie einfach den Befehl QUIT. Sobald der Server mit dem Code 221 antwortet, schließt Ihr Client die Verbindung. Sehen Sie sich den folgenden QUIT-Beispielbefehl an.

                                

                                    QUIT
                                
                            

10. Der Befehl HELP

Dies ist wahrscheinlich der nützlichste Befehl. Benötigen Sie Hilfe, wissen aber nicht, an wen Sie sich wenden sollen? Versuchen Sie es zuerst mit dem Befehl HELP. Dieser Befehl ruft eine Liste der möglichen Befehle ab, die der SMTP-Server unterstützt. Sie können bestimmte Befehle als Argument an den Befehl HELP übergeben, um Hilfe zu spezifischen Befehlen zu erhalten. Sehen Sie sich den folgenden HELP-Beispielbefehl an.

                                

                                    HELP
                                
                            

Was sind die SMTP-Antwortcodes?

Wenn Sie über SMTP-Befehle mittels eines E-Mail-Clients mit einem SMTP-Server kommunizieren, wie spricht dann der SMTP-Server mit Ihnen? Das ist einfach: über SMTP-Antwortcodes.

SMTP-Antwortcodes sind dreistellige Ziffernfolgen. Jede Ziffer verrät Ihnen etwas anderes. Betrachten wir den Antwortcode 250:

  • Die erste Ziffer („2“) gibt an, ob Ihr Befehl erfolgreich, fehlerhaft oder unvollständig war
  • Die zweite Ziffer („5“) teilt Ihnen mit, welche Art von Antwort gesendet wurde
  • Die dritte Ziffer („0“) liefert zusätzliche Informationen zu Ihrem Befehl

Wie Sie sich vorstellen können, ist die erste Ziffer am wichtigsten, da sie einen Hinweis darauf gibt, ob Ihr Befehl funktioniert hat oder nicht. Sehen Sie sich die folgende Tabelle aus RFC 5321 (Simple Mail Transfer Protocol) an, die erklärt, was die verschiedenen ersten Ziffern bedeuten:

Antwortcode Bedeutung
2.y.z Der gesendete Befehl wurde auf dem Remote-Server erfolgreich abgeschlossen. Der Remote-Server ist bereit für den nächsten Befehl.
3.y.z Der Befehl wurde akzeptiert, aber der Remote-Server benötigt weitere Informationen, bevor der Vorgang abgeschlossen werden kann. Der sendende Server muss einen neuen Befehl mit den erforderlichen Informationen senden.
4.y.z Der Befehl wurde vom Remote-Server aus einem Grund abgelehnt, der vorübergehend sein könnte. Der sendende Server sollte später erneut versuchen, eine Verbindung herzustellen, um zu prüfen, ob der Remote-Server den Befehl erfolgreich akzeptieren kann. Der sendende Server wird weiterhin versuchen, die Verbindung wiederherzustellen, bis entweder eine erfolgreiche Verbindung zustande kommt (angezeigt durch einen 2.y.z-Code) oder dauerhaft fehlschlägt (angezeigt durch einen 5.y.z-Code). Ein Beispiel für einen temporären SMTP-Fehler ist geringer Speicherplatz auf dem Remote-Server. Sobald mehr Speicherplatz verfügbar ist, sollte der Remote-Server in der Lage sein, den Befehl erfolgreich zu akzeptieren.
5.y.z Der Befehl wurde vom Remote-Server aus einem nicht behebbaren Grund abgelehnt. Der sendende Server wird keinen weiteren Verbindungsversuch unternehmen und stattdessen einen Unzustellbarkeitsbericht (Non-Delivery Report) an den Absender der Nachricht zurücksenden. Ein Beispiel für einen nicht behebbaren Fehler ist eine Nachricht, die an eine nicht existierende E-Mail-Adresse gesendet wird.

Zusammenfassung

Und das war’s. Wir wissen, das sind absolut leichte und unkomplizierte Informationen. Ob Sie nun nach einer SMTP-Serverlösung für Ihren E-Mail-Versand suchen, oder ob Sie Details dazu benötigen, welchen SMTP-Port Sie verwenden sollten (25? 587? 2525?) – bei Mailgun sind Sie bestens aufgehoben.

Zögern Sie wie immer nicht, uns zu kontaktieren. Lassen Sie uns Ihnen noch heute beim E-Mail-Versand helfen.