Mail-HeaderInhaltDer Nachrichtenversand mit SMTP Der Nachrichtenversand mit SMTPDas 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 Mailprogramme 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 "info@gaijin.at" senden. Dazu wird zuerst der MX-Server der Domain "gaijin.at" benötigt. Eine DNS-Anfrage ergibt, dass der MX-Server "mail.gaijin.at" Nachrichten für die Domain "gaijin.at" entgegen nimmt. Mit einem Terminal-Programm kann nun eine Verbindung zum Host "mail.gaijin.at", 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: info@gaijin.at 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". 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 Headerzeilen 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 2006 13:53:24 +0200 Message-Id: <1234567890@tester.tld> X-Sender: test@tester.tld From: "The Faker" <test@tester.tld> To: "Gaijin" <info@gaijin.at> 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: info@gaijin.at 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 2006 13:53:24 +0200 Message-Id: <1234567890@tester.tld> X-Sender: test@tester.tld From: "The Faker" <test@tester.tld> To: "Gaijin" <info@gaijin.at> Subject: Ein Test Text, Text, Text Zeile 2 Zeile 3 . 250 ok 1157111913 qp 7263 quit 221 server11011.net Der Nachrichtenempfang mit POP3Das 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 2006 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 2006 13:55:38 +0200 Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net with SMTP; 1 Sep 2006 13:53:24 +0200 Message-Id: <1234567890@tester.tld> X-Sender: test@tester.tld From: "The Faker" <test@tester.tld> To: "Gaijin" <info@gaijin.at> 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. Die Received-ZeilenIn unserem Beispiel ergeben sich jetzt folgende Received-Zeilen: Received: (qmail 7881 invoked from network); 1 Sep 2006 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 2006 13:55:38 +0200 Received: from faked.tester.tld (faked.tester.tld [123.45.67.89]) by server11011.net with SMTP; 1 Sep 2006 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 2006 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 2006 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 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 2006 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 2006, 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.2006, 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 2006 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 Headerzeilen im DetailDie nachfolgende Liste enthält nur die wesentlichsten Headerzeilen. Je nach verwendetem Mailprogramm, Mailserver oder auch bei Mailinglisten können noch weitere Zeilen vorkommen. BCC
CC
Content-Transfer-Encoding
Content-Type
Date
From
Message-ID
Organisation
References
Reply-To
Return-Path
Sender
Subject
To
X-Mailer
X-Sender
|