Att SMTP Server - Das SMTP-Protokoll

Elektronische Post gibt es in der einen oder anderen Form bereits seit den 1960er Jahren. Die Menschen hinterließen sich gegenseitig Nachrichten mit verschiedenen Methoden auf Großrechnern, aber erst im August 1982, als das Information Sciences Institute das Simple Mail Transfer Protocol (SMTP; RFC 821) veröffentlichte, wurde eine standardisierte Methode zum Senden und Empfangen von E-Mails vorgeschlagen.

SMTP wurde im ARPANET schnell populär und ersetzte ältere, kompliziertere Methoden, um Post von einem Großrechner zu einem anderen zu übertragen, und wurde erstmals Ende 1982 vom frühen Mail Transfer Agent Sendmail in BSD 4.1c unterstützt.
Das Protokoll wurde seither regelmäßig überarbeitet und erweitert, aber die grundlegende Methode für den Postversand ist weitgehend unverändert geblieben.

Das Protokoll ist textbasiert und unterstützte ursprünglich nicht die Übertragung von Binärdaten. Da es jedoch textbasiert ist, war das Protokoll leicht zu implementieren und zu pflegen. MIME (Multipurpose Internet Mail Extensions) wurde in den späten 80er Jahren für die Kodierung und den Versand von Binärdaten über SMTP populär. Heute ist SMTP das vorherrschende Protokoll für den Versand und Empfang von E-Mails im Internet, und die Kenntnis dieses Protokolls ist für jeden Netzwerkadministrator unerlässlich.

Da SMTP textbasiert ist, ist das Erlernen des Protokolls wesentlich einfacher als bei vielen anderen Protokollen. Ein Programm, das in der Lage ist, ASCII-Daten über den TCP/IP-Port 25 zu senden, wie z. B. Telnet, ist alles, was für die direkte Kommunikation mit einem SMTP-Server erforderlich ist.

E-Mails werden über SMTP in einer Transaktion versendet, d. h. wenn der Versand der Nachricht nicht vollständig und ohne Fehler abgeschlossen wird, wird die Nachricht verworfen. RFC 821 beschreibt eine Transaktion als dreistufig: Angabe eines Absenders, Angabe eines oder mehrerer Empfänger und Senden der Nachricht selbst. Es ist jedoch einfacher, sich eine SMTP-Transaktion in 5 Phasen vorzustellen:

  • Händedruck
  • Adresse der Antwort senden
  • Empfänger senden
  • Nachricht senden Daten
  • Transaktion beenden

Händedruck

Bei der Verbindung mit einem SMTP-Server an Port 25 muss der Absender einer Nachricht darauf warten, dass der Empfänger die Verbindung akzeptiert und sich im folgenden Format identifiziert:

220 [Domäne] [Dienstinformationen]
Beispiel: 220 example.com Dienst bereit

Der Absender muss sich dann beim Empfänger mit dem HELO-Befehl identifizieren.

HELO [Domäne]
Beispiel: HELO Beispiel.com

Die Mailserver erwarten, dass sich jeder mit einem Domänennamen identifiziert, mit dem die Identität des Servers durch eine MX-Eintragsabfrage überprüft werden kann. Der empfangende Server darf die Verbindung in diesem Stadium jedoch nicht ablehnen, auch wenn die Identität des Absenders nicht überprüft werden kann, und muss daher mit antworten:

250 [Nachricht]
Beispiel: 250 example.com Hallo bob at example.com

Antwortcode 250 ist die allgemeine ‘OK’-Antwort eines SMTP-Servers, die besagt, dass die letzte Aktion erfolgreich abgeschlossen wurde.

Antwort senden Adresse:

Sobald die beiden Server ihr Handshake durchgeführt haben, hat die SMTP-Transaktion begonnen und wir können beginnen, Befehle an den Server zu senden. Wenn Sie sehen möchten, welche Befehle der Server unterstützt, senden Sie den Befehl HELP und der SMTP-Server sollte mit einer Nachricht antworten, die angibt, welche Befehle unterstützt werden.

Damit wir eine Nachricht an einen Benutzer auf diesem Server senden können, müssen wir jedoch zuerst eine Antwortadresse angeben. Die Antwortadresse muss zuerst angegeben werden, damit eventuelle Fehler während der SMTP-Transaktion an diese Adresse gemeldet werden können. Dazu verwenden wir den Befehl ‘MAIL FROM:’:

EILMELDUNG VON:
Beispiel: MAIL FROM:

Beachten Sie die Zeichen Less than und Greater than. Diese sind nach RFC 821 erforderlich, um die E-Mail-Adresse selbst zu enthalten. Wenn die Adresse akzeptiert wird, gibt SMTP eine 250 OK-Antwort zurück.

Empfänger senden

Nach dem Festlegen einer Antwortadresse ermöglicht SMTP die Identifizierung der Empfänger der Nachricht. Dazu verwenden wir den Befehl ‘RCPT TO:’:

RCPT TO:
Beispiel: RCPT TO:

Wenn der Empfänger die E-Mail für diesen Benutzer akzeptiert und die Nachricht zu diesem Zeitpunkt annehmen kann, sollte er mit einer 250 OK-Antwort antworten. Wird die E-Mail für diesen Benutzer jedoch nicht angenommen, wird eine 550-Fehlerantwort oder der entsprechende Fehlercode gesendet. Wenn wir eine 250 OK-Antwort erhalten, können wir mit dem Senden der Nachrichtendaten fortfahren.

Nachricht senden Daten

Das Versenden von Daten über SMTP ist recht einfach, allerdings können die Nachrichtenformate recht kompliziert sein, insbesondere wenn es sich um binäre Anhänge handelt. Um mit dem Senden von Daten zu beginnen, sollten wir den Befehl ‘DATA’ eingeben, auf den der Server mit 354 Intermediate reply antworten sollte, d.h.:

354 Nachricht eingeben, die mit “.” in einer eigenen Zeile endet

Die einfachste Nachricht, die wir senden können, ist eine reine Textnachricht, die nicht das mehrteilige MIME-Nachrichtenformat erfordert. Alle Nachrichten, ob reiner Text oder nicht, werden durch das Senden einer Zeile beendet, die nur einen Punkt enthält. Bevor eine Nachricht gesendet wird, können Sie auch einige Kopfzeileninformationen wie Datum, Betreff, An, Cc und Von senden.

Beispiel:

DATEN
354 Nachricht eingeben, die mit “.” in einer eigenen Zeile endet
Betreff: Dies ist die Betreffzeile der Plan-Textnachricht
Und dies ist der Textkörper der Klartextnachricht.

Bei Annahme gibt der SMTP-Server eine 250 OK-Antwort zurück oder einen Fehlercode, wenn die Transaktion fehlgeschlagen ist oder unvollständig war. Beachten Sie das Punktzeichen am Ende der Zeile des Nachrichtentextes. Nur wenn ein Punktzeichen in einer Zeile vorkommt, hört der Server auf, auf Daten zu warten. Sollte der Absender-Server eine Nachricht senden, die zu einem vorzeitigen Schließen der Datensitzung führen würde, da die Nachricht ein einzelnes Punktzeichen in einer Zeile enthält, sollte er ein zusätzliches Punktzeichen in die Zeile einfügen.

Beenden der Transaktion

Bis zu diesem Zeitpunkt wird alles, was an den empfangenden SMTP-Server gesendet wurde, als Einwegartikel betrachtet. Wenn der Befehl ‘QUIT’ nicht gesendet wird, bevor die Verbindung geschlossen wird, löscht der Zielserver einfach alle gespeicherten Nachrichtendaten. Ursprünglich wurde der Befehl als eleganter Weg zum Schließen einer Verbindung verwendet, heute wird er häufig dazu benutzt, um eine abgeschlossene Transaktion darzustellen, wobei viele Mailserver auf den QUIT-Befehl warten, bevor sie die Mail in eine Warteschlange stellen, damit der Message Transfer Agent sie weiterleiten kann. Sobald Sie den QUIT-Befehl gesendet haben, sollte der Zielserver eine 221-Antwort senden, um zu bestätigen, dass die Transaktion abgeschlossen ist und die Verbindung geschlossen wird.

Wenn Sie sich mit dem SMTP-Protokoll vertraut machen wollen, sollten Sie die RFC 821, 2476 und 2554 lesen. Vor allem bei der Lektüre von RFC 821 sollten Sie bedenken, dass sich die E-Mail-Server seit 1982 erheblich verändert haben, teilweise als Reaktion auf den Missbrauch durch Spammer.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Jeder weiß, dass ein zuverlässiger SMTP-Server der Schlüssel für die ordnungsgemäße Zustellung Ihrer E-Mails ist. Es ist auch bekannt, dass NIEMAND mehr SMTP ohne Authentifizierung oder für Open Relay anbietet. ABER SIE KÖNNEN IMMER NOCH EINEN HOCHWERTIGEN SMTP-SERVER FÜR IHREN GEBRAUCH BEKOMMEN!

Klicken Sie hier für Ihren kostenlosen SMTP-SERVER