Zustellung einer E-Mail

Wie kommt eine E-Mail zum Empfänger?

Ursprünglich habe ich diese Antwort im Usenet in der Newsgroup de.comm.software.mailserver im Posting <dcsm.020214120227.46908@dragon.akallabeth.de> auf eine entsprechende Frage hin gegeben, mich dann aber entschlossen, sie hier verfügbar zu machen.

Die Frage lautete:

Nehmen wir an, wir haben Mail-Anbieter aaa.com und Mail-Anbieter bbb. de. Jetzt möchte jemand vom ersten eine eMail zu einem Member vom zweiten Provider senden.

Logisch, Person eins sendet über smtp.aaa.com und Person 2 holt über pop.bbb.de ab. Aber was passiert dazwischen mit der Mail? Wohin sendet smtp.aaa.com die eMail und woher weiss er überhaupt den genauen Host? (er hat ja eigentlich nur das "@bbb.de") ??

Meine Antwort:

smtp.aaa.com bekommt die E-Mail von Person 1.

(1) smtp.aaa.com prüft jetzt zunächst, ob er die E-Mail annehmen darf. Er darf das dann, wenn er entweder der (bzw. ein) für die Domain "bbb.de" zuständige(r) Mail-Empfangs-Server (Mail eXchanger, kurz "MX") ist, oder der Absender zu den befugten Nutzern gehört. Letzteres prüft er anhand der IP-Nummer des Absenders oder durch Authentifzierungsmaßnahmen wie SMTP-Auth oder SMTP-after-POP. Sinn der ganzen Aktion ist es, offenes Relaying zu vermeiden, d.h. saß smtp.aaa.com Mail von jedermann an jedermann annimmt (Mißbrauch durch Spammer).

(2) Wenn smtp.aaa.com die Mail hat, prüft er, ob er selbst für "bbb.de" zuständig ist oder die Mail weiterleiten muß. Im letzteren Falle macht er eine DNS-Abfrage (DNS= Domain Name Server / Domain Name System) nach den Mail eXchangern für bbb.de. Wenn er eine Antwort bekommt, sucht er sich den MX mit der kleinsten Priorität heraus (bei mehreren mit gleicher Priorität einen beliebigen davon) und macht eine erneute DNS-Abfrage, um die IP-Nummer des MX zu bekommen.

(2a) Wenn kein MX zu finden ist, wird ggf. noch nach einem A-Record (also einem Eintrag mit der IP-Adresse des Rechners mit dem Namen "bbb.de") gesucht und Mailzustellung nach dort versucht. Wenn beides scheitert, geht die Mail als unzustellbar an den Absender zurück, meist mit einem Kommentar wie "no route to host", idR erst nach bis zu vier Tagen probieren (falls der Eintrag nur kurzfristig fehlt).

(3) smtp.aaa.com verbindet sich mittels der IP-Nummer mit dem MX von bbb.de, vielleicht ist das smtp.bbb.de oder auch mx.bbb.de. Er beginnt eine SMTP-Sitzung (HELO/EHLO etc. pp.) 1 und will die Mail ausliefern. smtp.bbb.de prüft jetzt, ob er für die Mail zuständig ist bzw. sie annehmen darf. Wenn smtp.bbb.de weiß, daß er MX für bbb.de ist, also korrekt konfiguriert wurde, nimmt er die Mail an.

(3a) Wenn smtp.bbb.de nicht erreichbar ist, versucht smtp.aaa.com es mit dem nächsten MX-Record mit höherer Priorität. Falls es keinen mit höherer Priorität mehr gibt, markiert er die Mail als "zeitweise unzustellbar" und versucht es später nochmal, in der Regel bis zu vier Tage lang.

(3b) Wenn smtp.bbb.de erreichbar ist, aber die Mail nicht annimmt, kommt es auf den Fehlercode an: bei einem temporären Fehler (Überlast, Datenbank nicht verfügbar …) wird ebenfalls die Zustellung mehrfach erneut versucht. Bei einem endgültigen Fehler ("Relaying nicht erlaubt", wenn smtp.bbb.de gar nicht weiß, daß er als MX für bbb.de eingetragen ist, oder "user unknown") geht die Mail als unzustellbar zurück.

(4) smtp.bbb.de weiß, daß er selbst für Mail an bbb.de zuständig ist und liefert sie konfigurationgemäß aus, d.h. vermutlich in die Mailbox (oder das Maildir oder was auch immer) von Person 2. Wenn pop.bbb.de ein anderer Rechner als smpt.bbb.de sein sollte, ist da dann ggf. noch eine interne Weiterleitung dabei.

Soweit in aller Kürze als Überblick.

Einzelheiten des geschilderten Vorgehens sind in der Regel implementations- oder konfigurationsabhängig - oder zwar theoretisch standardisiert, aber praktisch teilweise anders gehandhabt. Für einen etwas laienhaften Überblick sollte es aber taugen.

  1. Mehr dazu in RFC 2821 und ganz kurz auch am Anfang der Header-FAQ

Hinweis:
Derzeit (seit Ende 2008) ist das Simple Mail Transfer Protocol (SMTP) nicht mehr in RFC 2821, sondern in RFC 5321 definiert.

Mittlerweile haben andere die zugrundeliegende Frage viel besser und vollständiger beantwortet:

Lizenz

Creative Commons-Lizenzvertrag Dieser Inhalt ist unter der Creative Commons-Lizenz BY-NC-SA 4.0 DE lizenziert; er darf unter Namensnennung des Autors nicht-kommerziell weitergegeben und auch bearbeitet werden, soweit das neue Werk gleichfalls wieder dieser Creative-Commons-Lizenz unterliegt. Die Einzelheiten ergeben sich aus dem Lizenzvertrag.