E-Mail Kopfzeilen verstehen

Inhalt

Der Nachrichtenversand mit SMTP
Der Nachrichtenempfang mit POP3
Die Received-Zeilen
Kopfzeilen im Detail

Der Nachrichtenversand mit SMTP

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 mail.example.tld 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 mail.example.tld

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 [203.0.113.89])
  by mail.example.tld 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 mail.example.tld

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 mail.example.tld ESMTP
helo faked.tester.tld
250 mail.example.tld
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 [203.0.113.89])
  by mail.example.tld 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 mail.example.tld

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!

Lese mehr über Unterstützungs­möglichkeiten...

Der Nachrichtenempfang mit POP3

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 host123.provider.tld
  (HELO tester.tld) (192.0.2.170)
  by mail.example.tld with SMTP; 1 Sep 2018 13:55:38 +0200
Received: from faked.tester.tld (faked.tester.tld [203.0.113.89])
  by mail.example.tld 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.

Die Received-Zeilen

In unserem Beispiel ergeben sich jetzt folgende Received-Zeilen:

Received: (qmail 7881 invoked from network); 1 Sep 2018 13:58:33 +0200
Received: from host123.provider.tld
  (HELO tester.tld) (192.0.2.170)
  by mail.example.tld with SMTP; 1 Sep 2018 13:55:38 +0200
Received: from faked.tester.tld (faked.tester.tld [203.0.113.89])
  by mail.example.tld 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 host123.provider.tld
  (HELO tester.tld) (192.0.2.170)
  by mail.example.tld 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 host123.provider.tld

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.

(192.0.2.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 192.0.2.170 zum Zeitpunkt des Versandes den Hostnamen "host123.provider.tld" hatte. Da dieser mit dem Hostnamen nach "from ..." identisch ist, wurde er nicht nochmals angeführt. Auch die folgende Angabe ist hier möglich:

(host123.provider.tld [192.0.2.170])

Es gibt keine einheitliche Form der Darstellung, weshalb alle Hostnamen mit der IP-Adresse überprüft werden sollten.

by mail.example.tld with SMTP

Daraus ist ersichtlich, dass der Server "mail.example.tld" 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 [203.0.113.89])
  by mail.example.tld 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 host123.provider.tld (192.0.2.170)
          by mail.example.tld

Received: from faked.tester.tld (faked.tester.tld [203.0.113.89])
          by mail.example.tld

Ein plausibler Verlauf der Nachricht könnte etwa so aussehen (vereinfachte Darstellung):

Received: from mail.target.tld (198.51.100.78)
          by mx.target.tld

Received: from mx3.provider1.tld (203.0.113.3)
          by target.tld

Received: from mx1.provider1.tld (203.0.113.1)
          by mx3.provider1.tld

Received: from user1.provider1.tld (203.0.113.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.

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.

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!

Lese mehr über Unterstützungs­möglichkeiten...




Diese Webseite verwendet Cookies und verarbeitet Daten. Informationen zur Datenverarbeitung sowie zur Möglichkeit, diese abzulehnen, finden Sie in der Datenschutzerklärung. Ok