Der Nachrichtenversand mit SMTP
Der Nachrichtenempfang mit POP3
Die Received-Zeilen
Kopfzeilen im Detail
Gefällt dir meine Webseite, meine Freeware-Programme oder Online-Tools?
Dann spende bitte per PayPal und hilf mit, den Inhalt weiterhin kostenlos anbieten zu können - jeder Betrag ist willkommen!
Erlaube Werbung für die Domain Gaijin.at in deinem Werbeblocker und hilf damit beim Erhalt dieser Seite!
Das Versenden und Empfangen von E-Mails wird normalerweise von E-Mail Clients wie etwa Microsoft Outlook Express oder Mozilla Firebird erledigt. Zum besseren Verständnis ist es jedoch von Vorteil, wenn das Prinzip des Nachrichtenversandes bekannt ist.
Zum Versenden von E-Mails bedienen sich Mail-Programme meist dem Mailserver des eigenen Providers, der dann die weitere Zustellung an den Empfänger übernimmt. Jedoch können Nachrichten auch direkt zugestellt werden. Dazu benötigt man eine DNS-Anfrage vom Typ "MX", welche die verfügbaren MX-Server (Mail eXchange Server) einer Domain liefert. Dafür können spezielle Programme oder auch Online-Dienste verwendet werden.
Im folgenden Beispiel möchte der fiktive Absender "test@tester.tld" eine Nachricht an "noname@example.tld" senden. Dazu wird zuerst der MX-Server der Domain "example.tld" benötigt. Eine DNS-Anfrage ergibt, dass der MX-Server "mail.example.tld" Nachrichten für die Domain "example.tld" entgegen nimmt. Mit einem Terminal-Programm kann nun eine Verbindung zum Host "mail.example.tld", Port 25 (SMTP) hergestellt werden.
Nach dem Aufbau der Verbindung meldet sich der Mailserver mit der Zeile:
220 server11011.net ESMTP
Die Zahl "220" am Beginn der Zeile bedeutet, dass es sich bei dem nachfolgenden Text nur um eine gewöhnliche Meldung handelt und dass kein Fehler aufgetreten ist. Jetzt wartet der SMTP-Server auf eine sog. Vorstellung, welche mit dem Kommando "HELO" bzw. "EHLO" eingeleitet wird.
helo faked.tester.tld
Mit diesem Kommando stellt sich der Sender mit dem Namen "faked.tester.tld" vor. Der Server bestätigt dies mit dem Statuscode 250, welcher für einen gültigen Befehl steht.
250 server11011.net
Nun folgt die Adressierung der Nachricht, beginnend mit der E-Mail Adresse des Senders, welche mit dem Befehl "mail from:" gekennzeichnet wird.
mail from: test@tester.tld
Nachdem der SMTP-Server die Adresse des Absenders verifiziert hat und diese als gültig befunden hat, meldet er den Statuscode 250, meist gefolgt vom Text "ok", zurück.
250 ok
Anschließend wird die E-Mail-Adresse des Empfängers angegeben. Diese wird mit dem Befehl "rcpt to:" (engl. für "recipient") eingeleitet.
rcpt to: noname@example.tld
Auch dies wird vom SMPT-Server bestätigt:
250 ok
Die Adressierung ist nun abgeschlossen und die eigentliche Nachricht kann dem Server übermittelt werden. Dazu wird das Kommando "data" verwendet.
data
Der SMPT-Server bestätigt den data-Befehl mit dem Statuscode 354, der zur Eingabe des Textes auffordert. Im Anschluss an den Statuscode können Texte wie z.B. "go ahead" oder "Enter mail, end with "." on a line by itself" folgen.
354 go ahead
Keine der oben genannten Angaben müssen auch in der Nachricht enthalten sein, die beim Empfänger eintrifft. Darum werden nun die typischen Kopfzeilen wie "From", "To" und "Subject" einer Nachricht eingegeben. Hier wird zu Beginn auch eine gefälschte Received-Zeile angegeben, die über den wahren Absender täuschen soll. Darauf wird jedoch weiter unten genauer eingegangen.
Nach den Kopfzeilen wird der eigentliche Nachrichtentext, durch eine Leerzeile getrennt, eingegeben.
Received: from faked.tester.tld (faked.tester.tld [123.45.67.89])
by server11011.net with SMTP; 1 Sep 2018 13:53:24 +0200
Message-Id: <1234567890@tester.tld>
X-Sender: test@tester.tld
From: "The Faker" <test@tester.tld>
To: "NoName" <noname@example.tld>
Subject: Ein Test
Text, Text, Text
Zeile 2
Zeile 3
.
Der Nachrichtentext wird immer mit einem einzelnen Punkt in einer eigenen Zeile abgeschlossen. Der Server bestätigt den Empfang der Nachricht wieder mit dem Code 250:
250 ok 1157111913 qp 7263
Durch das Kommando "quit" wird die Verbindung zum SMTP-Server geschlossen.
quit
Bevor der Server die Verbindung beendet gibt er den Statuscode 221 (Bestätigung des quit-Befehls) zurück:
221 server11011.net
Hiermit ist die Verbindung geschlossen und die Nachricht wird im Postfach des Empfängers hinterlegt.
Der komplette oben beschriebene Dialog zwischen Server und Client sieht nun so aus:
220 server11011.net ESMTP helo faked.tester.tld 250 server11011.net mail from: test@tester.tld 250 ok rcpt to: noname@example.tld 250 ok data 354 go ahead Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net with SMTP; 1 Sep 2018 13:53:24 +0200 Message-Id: <1234567890@tester.tld> X-Sender: test@tester.tld From: "The Faker" <test@tester.tld> To: "NoName" <noname@example.tld> Subject: Ein Test Text, Text, Text Zeile 2 Zeile 3 . 250 ok 1157111913 qp 7263 quit 221 server11011.net
Das Empfangen von E-Mails funktioniert ähnlich wie der Versand. Jedoch kommt hier ein eigenes Protokoll, das Post Office Protokoll (POP), zum Einsatz. Der POP3-Server ist meist über den Port 110 erreichbar.
Im Folgenden wird die oben gesendete Nachricht abgerufen:
+OK Hello there. user xxxxxxxx +OK Password required. pass xxxxxxxx +OK logged in. list +OK 1 598 . retr 1 +OK 598 octets follow. Return-Path: <test@tester.tld> Received: (qmail 7881 invoked from network); 1 Sep 2018 13:58:33 +0200 Received: from m198p010.dipool.highway.telekom.at (HELO tester.tld) (62.46.14.170) by server11011.net with SMTP; 1 Sep 2018 13:55:38 +0200 Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net with SMTP; 1 Sep 2018 13:53:24 +0200 Message-Id: <1234567890@tester.tld> X-Sender: test@tester.tld From: "The Faker" <test@tester.tld> To: "NoName" <noname@example.tld> Subject: Ein Test Text, Text, Text Zeile 2 Zeile 3 . quit +OK Bye-bye.
Der rot markierte Text wurde vom Mailserver eingefügt. Abhängig vom Mailserver und der Daten, die beim Versand der Nachricht angegeben wurden, können sich die Headerzeilen unterscheiden. Die erste bzw. in diesem Fall die erste und zweite Received-Zeile von oben werden jedoch immer vom eigenen Mailserver eingefügt, wodurch diese auf jeden Fall authentisch sind.
In unserem Beispiel ergeben sich jetzt folgende Received-Zeilen:
Received: (qmail 7881 invoked from network); 1 Sep 2018 13:58:33 +0200 Received: from m198p010.dipool.highway.telekom.at (HELO tester.tld) (62.46.14.170) by server11011.net with SMTP; 1 Sep 2018 13:55:38 +0200 Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net with SMTP; 1 Sep 2018 13:53:24 +0200
Received-Zeilen sind Zustellvermerke der Mailserver, über die die Nachricht gesendet wurde. Ein Mailserver fügt die Received-Zeile immer oben an die Nachricht an. Daraus ergibt sich, dass der Received-Eintrag des ersten Mailservers unten und der Eintrag des letzten Mailservers, über den die Nachricht transportiert wurde, oben steht.
Received: (qmail 7881 invoked from network); 1 Sep 2018 13:58:33 +0200
Diese Received-Zeile kommt recht häufig in Nachrichten vor, es ist ein Vermerk des Mailservers "QMail". Diese Zeile hat nur bedingt Bedeutung für eine Rückverfolgung des Absenders.
Received: from m198p010.dipool.highway.telekom.at (HELO tester.tld) (62.46.14.170) by server11011.net with SMTP; 1 Sep 2018 13:55:38 +0200
Diese Zeile wurde, so wie die erste auch, vom Mailserver des Empfängers eingefügt und ist somit eine gute Ausgangsbasis für eine Rückverfolgung. Der Aufbau einer Received-Zeile ist jedoch nicht an feste Richtlinien gebunden, weshalb man alle Angaben überprüfen sollte. Sehen wir uns die einzelnen Teile genauer an:
from m198p010.dipool.highway.telekom.at
Unter "from" kann einerseits der richtige Hostname des Absenders stehen, so wie in diesem Fall. Aber auch der Computername oder Hostname, wie dieser unter "HELO" angegeben wurde, ist möglich.
(HELO tester.tld)
Nach "HELO" wird jener Text angegeben, der bei der Begrüßung beim Nachrichtenversand festgelegt wurde. Diese Angabe muss jedoch nicht immer enthalten sein.
(62.46.14.170)
Am Ende des Absenders (jedoch vor "by ...") steht in runden Klammern der tatsächliche Absender. Diese IP-Adresse hat die Verbindung zum Mailserver hergestellt und die E-Mail übermittelt. Dies bedeutet, dass die IP-Adresse 62.46.14.170 zum Zeitpunkt des Versandes den Hostnamen "m198p010.dipool.highway.telekom.at" hatte. Da dieser mit dem Hostnamen nach "from ..." identisch ist, wurde er nicht nochmals angeführt. Auch die folgende Angabe ist hier möglich:
(m198p010.dipool.highway.telekom.at [62.46.14.170])
Es gibt keine einheitliche Form der Darstellung, weshalb alle Hostnamen mit der IP-Adresse überprüft werden sollten.
by server11011.net with SMTP
Daraus ist ersichtlich, dass der Server "server11011.net" die Nachricht entgegengenommen hat. Das verwendete Übertragungsprotokoll war SMTP.
1 Sep 2018 13:55:38 +0200
Durch einen Strichpunkt getrennt folgt am Ende immer das Datum und die Zeit des Einganges beim Mailserver. Das Format der Zeitangabe kann, trotzt Standardisierung unterschiedlich sein. In unserem Fall wurde die E-Mail am 1. September 2018, um 13:55:38 vom Mailserver entgegengenommen. Die Zeitangaben in den Received-Zeilen sind immer in der Lokalzeit des Mailservers angegeben. Um die UTC-Zeit bestimmen zu können, wird die Abweichung zur UTC angefügt. In diesem Fall ist es die Angabe "+0200", was bedeutet, dass die angeführte Zeit eine Abweichung von plus 2 Stunden zur UTC hat. Somit wurde die Nachricht am 01.09.2018, um 11:55:38 UTC entgegengenommen.
Soweit die Einträge des Mailservers. Nun folgen die vom Absender angegebenen und teilweise auch gefälschten Headerzeilen:
Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net with SMTP; 1 Sep 2018 13:53:24 +0200
Wie bereits angedeutet, kann die Nachricht auch über mehrere Mailserver laufen, wobei die Received-Zeile eines Mailservers immer oben angefügt wird. In jeder Received-Zeile ist sowohl der Absender ("from...") als auch der Empfänger ("by...") enthalten. Daraus ergibt sich, dass der Versender der ersten Zeile und der Empfänger der zweiten Zeile identisch oder zumindest ähnlich sein müssen. In unserem Beispiel ist dies jedoch nicht der Fall:
Received: from m198p010.dipool.highway.telekom.at (62.46.14.170) by server11011.net Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net
Ein plausibler Verlauf der Nachricht könnte etwa so aussehen (vereinfachte Darstellung):
Received: from mail.target.tld (12.34.56.78) by mx.target.tld Received: from mx3.provider1.tld (123.45.67.3) by target.tld Received: from mx1.provider1.tld (123.45.67.1) by mx3.provider1.tld Received: from user1.provider1.tld (123.45.67.89) by mx1.provider1.tld
Die nachfolgende Liste enthält nur die wesentlichsten Kopfzeilen. Je nach verwendetem Mailprogramm, Mailserver oder auch bei Mailinglisten können noch weitere Zeilen vorkommen.
Bcc: Webmaster <webmaster@domain.tld>
Das Header-Feld "Bcc" (Blind Carbon Copy) enthält zusätzliche Empfänger, die die Nachricht als "unsichtbare Kopie" erhalten sollen. Im BCC-Feld werden jene zusätzlichen Empfänger eingetragen, die die anderen Empfänger nicht sehen sollen. Die Empfänger in der To- und CC-Zeile sind für alle Empfänger sichtbar.
Cc: Name <name@domain.tld>
Das Header-Feld "Cc" (Carbon Copy) enthält zusätzliche Empfänger, die die Nachricht in "Kopie" erhalten sollen. Diese Angabe ist nur für administrative Zwecke vorgesehen. Die E-Mail wird jedoch so zugestellt, als ob die Adressen im To-Feld enthalten wären.
Content-Language: de-AT, en-US
Das Header-Feld "Content-Language" enthält einen Code für die im MIME Body-Part verwendete Sprache, z.B. "de" für Deutsch. Es können auch mehrere Sprachen, mit einem Komma getrennt, angegeben werden. Ein MIME Body-Part kann beispielsweise eine Anlage wie ein Bild oder ein Dokument enthalten, oder auch die Text- bzw. HTML-Version der Nachricht.
Content-Transfer-Encoding: quoted-printable
Das Header-Feld "Content-Transfer-Encoding" gibt an, wie der Nachrichtentext oder der MIME Body-Part kodiert ist. Übliche Angaben sind "quoted-printable", "base64", "7bit" und "8bit". Ein MIME Body-Part kann beispielsweise eine Anlage wie ein Bild oder ein Dokument enthalten, oder auch die Text- bzw. HTML-Version der Nachricht.
Content-Type: text/plain; charset=ISO-8859-1
Das Header-Feld "Content-Type" gibt den Typ der Nachricht oder des MIME Body-Parts an. Gebräuchlich sind beispielsweise "text/plain" für Textnachrichten oder "text/html" für HTML-Nachrichten. Hinter "charset" folgt der verwendete Zeichensatz. Ein MIME Body-Part kann beispielsweise eine Anlage wie ein Bild oder ein Dokument enthalten, oder auch die Text- bzw. HTML-Version der Nachricht.
Date: Wed, 6 Sept 2018 10:02:47 +0000
Das Header-Feld "Date" enthält die Erstellungszeit bzw. die Zeit des Versendens. Diese Zeitangabe wird vom Mail-Programm des Versenders eingefügt. Die Uhrzeit ist in der Lokalzeit des versendenden Rechners angegeben. Nach der Zeit folgt entweder die Abweichung zur UTC (z.B. "+0200" für +2 Stunden), oder in manchen Fällen auch die Zeitzone.
From: Name <name@domain.tld>
Das Header-Feld "From" enthält die Mail-Adresse und eventuell auch den Namen des Absenders. Diese Angabe wird vom Mail-Programm des Versenders eingefügt.
In-Reply-To: webmaster@domain.tld
Das Header-Feld "In-Reply-To" enthält bei einer Antwort die Message-ID der beantworteten Nachricht.
Message-ID: <DCEA2913.6003005@domain.tld>
Das Header-Feld "Message-ID" enthält die eindeutige Kennung der Nachricht. Diese Kennung wird vom Mailprogramm, oft aus dem Datum, generiert. Sollte die Message-ID fehlen, wird sie meist von einem Mailserver erstellt und eingefügt.
Organization: Example Company Ltd.
Das Header-Feld "Organization" gibt die Organisation oder den Firmennamen des Absenders an. Die Organisation kann im Mail-Programm eingestellt werden.
Received: from sender.tld (sender.tld [10.1.2.3]) by server.tld with SMTP; 4 Oct 2019 15:40:53 +0200
Das Header-Feld "Received" enthält Informationen über den Absender, den Empfänger und die Empfangszeit einer Nachricht. Dieses Header-Feld wird vom empfangenden Mailserver als oberste Zeile hinzugefügt. Je nach Anzahl der beteiligten Mailserver, können mehrere "Received"-Felder enthalten sein.
References: <DCEA2913.6003005@domain.tld>
Das Header-Feld "References" enthält die Message-IDs von zusammengehörigen Nachrichten. Bei einer Antwort wäre dies die Message-ID der beantworteten Nachricht. Diese Angabe wird von Mailprogrammen verwendet, um die Nachrichten zu sortieren oder um sie hierarchisch darzustellen.
Reply-To: mail@domain.tld
Das Header-Feld "Reply-To" kann eine alternative Antwortadresse enthalten, falls die Antwort nicht an die Absenderadresse (From) gesendet werden soll.
Return-Path: name@domain.tld
Das Header-Feld "Return-Path" enthält die Rücksendeadresse, falls eine Zustellung der Nachricht nicht möglich war. Zu der ursprünglichen E-Mail wird vom Mailserver, der die Nachricht nicht zustellen konnte, eine Fehlermeldung angefügt. Der Return-Path kann auch von einem Mailserver auf Grund der Angabe unter "MAIL FROM" nachgetragen werden.
Subject: Example subject
Das Header-Feld "Subject" enthält den Betreff der Nachricht.
To: "Webmaster" <webmaster@domain.tld>, name@domain.tld, support@domain.tld (Support Center)
Das Header-Feld "To" enthält den oder die Empfänger. Bei mehreren Adressen müssen diese durch einen Beistrich getrennt sein. Die Reihenfolge der Adressen und Namen kann variieren.
X-Mailer: ExampleMailer 1.23
Das Header-Feld "X-Mailer" enthält Informationen zur Software, die zum Versenden der Nachricht benutzt wurde. Übliche Angaben sind der Name und die Versionsnummer der Software, aber auch der URL oder sonstige Angaben sind möglich.
X-Priority: 3 (Normal)
Das Header-Feld "X-Priority" gibt die Priorität der Nachricht an. Der Wert hat keinen Einfluss auf die Geschwindigkeit des Versands. Mögliche Werte sind: 1 (Sehr hoch), 2 (Hoch), 3 (Normal), 4 (Niedrig), 5 (Sehr niedrig). Manchmal ist nur die Zahl angegeben. Dieses Header-Feld wird in Spam mit einem hohen Prioritätswert verwendet.
Gefällt dir meine Webseite, meine Freeware-Programme oder Online-Tools?
Dann spende bitte per PayPal und hilf mit, den Inhalt weiterhin kostenlos anbieten zu können - jeder Betrag ist willkommen!
Erlaube Werbung für die Domain Gaijin.at in deinem Werbeblocker und hilf damit beim Erhalt dieser Seite!