Email


Einleitung

Die Architektur der SMTP Email Software zeigt folgendes Bild.

SMTP Architektur

Simple Mail Transfer Protocol (SMTP)

Neuere Versionen des Protokolls sind ESMTP oder SMTP over TLS.

SMTP definiert die heute überall bekannten Email-Adressen:

     empfaenger@mail.domain.de

Beispiel

Der Ablauf einer SMTP Übertragung ist in folgender Tabelle gezeigt.

Client Aktion Server Aktion
TCP/IP Verbindung zu Port 25
220 server.domain.de ESMTP
HELO client.dom.de
250 server.domain.de
MAIL FROM: <u@client.dom.de>
250 Ok
RCPT TO: <e@mail.domain.de>
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Text der Email
.
250 Ok
QUIT
221 Bye
Abbau der TCP/IP Verbindung

Beispiel einer SMTP Kommunikation mit der 'rumms'.

telnet rumms 25
Trying 134.155.50.52...
Connected to rumms.
Escape character is '^]'.
HELO krabel-wh.isdn.uni-mannheim.de
220 SMTPSERVER ESMTP der UNIVERSITAET MANNHEIM; 
    Sun, 11 May 2004 20:16:35 +0200 (MEST)
250 rumms.uni-mannheim.de Hello p3ppp226.rz.uni-mannheim.de 
    [134.155.17.226], pleased to meet you
MAIL FROM: krabel@p3ppp226.rz.uni-mannheim.de
250 2.1.0 krabel@p3ppp226.rz.uni-mannheim.de... Sender ok
RCPT TO: krabel@rz.uni-mannheim.de
250 2.1.5 krabel@rz.uni-mannheim.de... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Hallo Heinz,
dies ist eine Test mit telnet smtp.
Gruesse, heinz
.
250 2.0.0 h4BIGZs9017920 Message accepted for delivery
QUIT
221 2.0.0 rumms.uni-mannheim.de closing connection
Connection closed by foreign host.

Ergebnis der Mailzustellung durch die 'rumms'.

From krabel@p3ppp226.rz.uni-mannheim.de  Sun May 11 20:18:20 2004 
Return-Path: <krabel@p3ppp226.rz.uni-mannheim.de> 
Received: from rumms.uni-mannheim.de 
               (rumms.uni-mannheim.de [134.155.50.52]) 
        by krabum2.rz.uni-mannheim.de (8.12.7/8.12.7/SuSE Linux 0.6) 
        with ESMTP id h4BIIKMs013655 
        for <krabel@krabum2.rz.uni-mannheim.de>; 
        Sun, 11 May 2004 20:18:20 +0200 
Received: from krabel-wh.isdn.uni-mannheim.de 
               (p3ppp226.rz.uni-mannheim.de [134.155.17.226]) 
        by rumms.uni-mannheim.de (8.12.9/8.12.9) with SMTP id h4BIGZs9017920 
        for krabel@rz.uni-mannheim.de; Sun, 11 May 2004 20:17:36 +0200 (MEST) 
Message-Id: <200405111817.h4BIGZs9017920@rumms.uni-mannheim.de> 
X-Virus-Scanned: by amavisd-new 
X-Spamblock-maybe: undisclosed recipients 
From: krabel@p3ppp226.rz.uni-mannheim.de 
To: undisclosed-recipients:; 
Date: Sun, 11 May 2004 20:16:35 +0200 (MEST) 
 
Hallo Heinz, 
dies ist eine Test mit telnet smtp. 
Gruesse, heinz 

Kommandos

HELO sender.host
Identifikation des sendenden SMTP Programms
EHLO sender.host
Identifikation des sendenden SMTP Programms und umschalten auf ESMTP Protokoll
MAIL FROM: <sender@host>
Beginn einer Emailübertragung für einen Absender
RCPT TO: <receiver@domain>
Bezeichung eines Empfängers der Email, bei mehreren Empfängern folgen weitere RCPT Kommandos
DATA
Hiernach folgen die eigentlichen Textdaten der Email bis zur Zeichenfolge <CRLF>.<CRLF>. Kommt diese Zeichenfolge in dem Text vor, wird sie als <CRLF>..<CRLF> gesendet. Der Empfänger muss den zusätzlichen Punkt wieder entfernen. Der Text darf nur 7-bit ASCII Zeichen enthalten.
RSET
Zurücksetzen aller aktuellen Email Informationen von FROM oder TO Kommandos
VRFY zeichenkette
Bitte um Überprüfung, ob die angegebene Zeichenkette zu einem existierenden Benutzer gehört
QUIT
Beenden der Transportverbindung
TURN
wechseln der Rollen zwischen Sender- und Empfänger-SMTP
NOOP
keine Aktion verlangt, der Zustand der Verbindung ändert sich nicht

Kommandos von ESMTP, die von rumms unterstützt werden:

EHLO localhost
250-rumms.uni-mannheim.de Hello x.uni-mannheim.de [134.155.x.x], 
    pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 50000000
250-DSN
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
250-DELIVERBY
250 HELP

HELP
214-2.0.0 This is sendmail version 8.12.11
214-2.0.0 Topics:
214-2.0.0       HELO    EHLO    MAIL    RCPT    DATA
214-2.0.0       RSET    NOOP    QUIT    HELP    VRFY
214-2.0.0       EXPN    VERB    ETRN    DSN     AUTH
214-2.0.0       STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation send email to
214-2.0.0       sendmail-bugs@sendmail.org.
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info

HELP AUTH
214-2.0.0 AUTH mechanism [initial-response]
214-2.0.0       Start authentication.
214 2.0.0 End of HELP info

HELP STARTTLS
214-2.0.0 STARTTLS
214-2.0.0       Start TLS negotiation.
214 2.0.0 End of HELP info

Antworten

Auf jedes Kommando folgt genau eine Antwort. Die Antwort besteht aus einer 3-ziffrigen Statusnummer (für Programme) und einer erklärenden Zeichenkette (für Menschen). Eine Auswahl der Antworten aus RFC 821 ist im folgenden zu sehen.

211 System status, or system help reply
220 <domain> Service ready
221 <domain> Service closing transmission channel
250 Requested mail action okay, completed
251 User not local; will forward to <forward-path>
 
354 Start mail input; end with <CRLF>.<CRLF>
 
421 <domain> Service not available,
    closing transmission channel
450 Requested mail action not taken: mailbox unavailable
    [E.g., mailbox busy]
451 Requested action aborted: local error in processing
452 Requested action not taken: insufficient system storage
 
500 Syntax error, command unrecognized
    [This may include errors such as command line too long]
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
550 Requested action not taken: mailbox unavailable
    [E.g., mailbox not found, no access]
551 User not local; please try <forward-path>
552 Requested mail action aborted: exceeded storage allocation
553 Requested action not taken: mailbox name not allowed
    [E.g., mailbox syntax incorrect]
554 Transaction failed

Die Fehlernummern für die erste und zweite Ziffer sind nach folgendem System klassifiziert.


Nachrichtenformat

Der Text der Email besteht aus verschiedenen Header-Teilen, die u.A. den Empfänger und den Absender bezeichnen, und dem eigentlichen ASCII-Text der Nachricht. Die Header können in beliebiger Reihenfolge erscheinen und werden durch eine Leerzeile (CRLF) vom Text der Nachricht getrennt.

To:
Email-Adressen der Empfänger
Cc:
Email-Adressen der Empfänger von Kopien
Bcc:
Email-Adressen der Empfänger von blinden Kopien, d.h. Empfänger über die die To- und Cc-Empfänger nicht informiert werden
From:
verantwortlicher Absender der Email
Sender:
tatsächlicher Absender der Email
Received:
von jeder Zwischenstelle beim Transport wird dies in einem solchen Header vermerkt (ist in SMTP definiert)
Return-Path:
Weg der Email zurück zum Absender (ist in SMTP definiert)
Date:
Datum und Uhrzeit des Versendens der Email
Reply-To:
Email-Adresse, an die die Antworten gesendet werden sollen
Message-Id:
eindeutige Identifikation der Email
In-Reply-To:
Identifikation der Email auf die sich diese Antwort bezieht
Subject:
kurzer Betreff der Email
X-bezeichner:
Header der nicht im RFC 822 definiert ist
X-Virus-Scanned:
Information über einen Virencheck dieser Email
X-Spamblock-maybe:
Information über eventuellen Spam-Inhalt

Beispiel einer Emaildatei mit z.Z. üblichen Headerzeilen.

From owner-webmaster@listserv.uni-mannheim.de  Sun May 11 14:43:45 2004 
Return-Path: <owner-webmaster@listserv.uni-mannheim.de> 
Received: from rumms.uni-mannheim.de 
               (rumms.uni-mannheim.de [134.155.50.52]) 
        by krabum2.rz.uni-mannheim.de (8.12.7/8.12.7/SuSE Linux 0.6) 
           with ESMTP id h4BChjMs012633 
        for <xxxx@kyyy.rz.uni-mannheim.de>; 
            Sun, 11 May 2004 14:43:45 +0200 
Received: from warum.uni-mannheim.de 
               (warum.uni-mannheim.de [134.155.50.51]) 
        by rumms.uni-mannheim.de (8.12.9/8.12.9) 
           with ESMTP id h4BChis9000673; 
        Sun, 11 May 2004 14:43:44 +0200 (MEST) 
Received: (from major@localhost) 
        by warum.uni-mannheim.de (8.11.2/8.11.2) id h4BChie22219 
        for webmaster-outnew; Sun, 11 May 2004 14:43:44 +0200 (MEST) 
X-Authentication-Warning: warum.uni-mannheim.de: major set sender to 
            owner-webmaster@listserv.uni-mannheim.de using -f 
Received: from rumms.uni-mannheim.de (rumms.uni-mannheim.de [134.155.50.52]) 
        by warum.uni-mannheim.de (8.11.2/8.11.2) with ESMTP id h4BChh122214 
        for <webmaster@warum.uni-mannheim.de>; 
            Sun, 11 May 2004 14:43:43 +0200 (MEST) 
Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) 
        by rumms.uni-mannheim.de (8.12.9/8.12.9) 
           with SMTP id h4BChgs9000627 
        for <webmaster@bwl.uni-mannheim.de>; 
            Sun, 11 May 2004 14:43:43 +0200 (MEST) 
Received: (qmail 28399 invoked by uid 65534); 11 May 2004 12:43:35 -0000 
Received: from pD9ED592C.dip.t-dialin.net (EHLO pacomp) (217.237.89.44) 
  by mail.gmx.net (mp016-rz3) with SMTP; 11 May 2004 14:43:35 +0200 
Message-ID: <000601c317ba$d005c1e0$0100000a@pacomp> 
MIME-Version: 1.0 
Content-Type: multipart/alternative; 
        boundary="----=_NextPart_000_0003_01C317CB.8AB00FE0" 
X-Priority: 3 
X-MSMail-Priority: Normal 
X-Mailer: Microsoft Outlook Express 5.50.4133.2400 
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 
X-Virus-Scanned: by amavisd-new 
Precedence: bulk 
X-Spamblock-maybe: Content-Type multipart/html 
From: "xxxxxx xxxxx" <marxmax@gmx.ch> 
Sender: owner-webmaster@listserv.uni-mannheim.de 
To: <webmaster@bwl.uni-mannheim.de> 
Subject: Wirtschaftsinformatik nicht gefunden! 
Date: Sun, 11 May 2004 14:42:26 +0200 

Multipurpose Internet Mail Extension (MIME)

Da SMTP als Emailinhalt nur 7-bit ASCII erlaubt ist einzusätzliches Protokoll notwendig, das den unerlaubten Inhalt geeignet codiert.

MIME ist kompatibel zu SMTP, d.h. MIME Inhalte können normal in einer SMTP Email transportiert werden. MIME wird auch im HTTP Protokoll verwendet.

MIME ist in RFC 1521 spezifiziert. MIME definiert u.A. folgende neue Header.

MIME-Version:
bezeichnet die verwendete Version der MIME Spezifikation
Content-Description:
Menschen lesbare Beschreibung des Inhalts
Content-Id:
eindeutiger Bezeichner für einen Abschnitt im MIME Teil
Content-Transfer-Encoding:
spezifiziert ggf., wie der Inhalt nach 7-bit ASCII transformiert wurde.
  • base64: dabei werden je 3 Byte auf 4 mal 6-Bit aufgeteilt und diese als 7-bit ASCII verwendet
  • quoted-printable: dabei werden 7-bit Zeichen normal verwendet und 8-bit Zeichen werden als =hh codiert, wobei 'hh' für die zwei hexadezimal Ziffern des Zeichens steht.
  • 7bit: die Daten bestehen nur aus 7-bit ASCII
  • 8bit: die Daten bestehen aus 8-bit ASCII
Content-Type: type/subtype
spezifiziert den Datentyp des Inhalts, klassifiziert nach Haupt- und Untertyp. Siehe den Abschnitt über HTTP.
Der Typ multipart wird z.B. zum Anfügen von Attachements oder HTML-Inhalt verwendet.

Beispiel einer Emaildatei mit Attachements.

MIME-Version: 1.0 
Content-Type: multipart/mixed; 
 boundary="------------070909050200090407080406" 
...

This is a multi-part message in MIME format. 
--------------070909050200090407080406 
Content-Type: text/plain; charset=ISO-8859-1; format=flowed 
Content-Transfer-Encoding: quoted-printable 
 
Hallo Herr ..., 

F=FCr Detailfragen stehe ich Ihnen nat=FCrlich jederzeit 
gerne pers=F6nlich zur Verf=FCgung. 
 
Viele Gr=FC=DFe=20 
 
...
--------------070909050200090407080406 
Content-Type: application/pdf; 
 name="xxx_2_neu.pdf" 
Content-Transfer-Encoding: base64 
Content-Disposition: inline; 
 filename="xxx_2_neu.pdf" 
 
JVBERi0xLjMNJeLjz9MNCjMyIDAgb2JqDTw8IA0vTGluZWFyaXplZCAxIA0vTyAzNCANL0gg 
WyAyMjczIDQzNCBdIA0vTCA4NTgwMzEgDS9FIDgzNDU0NiANL04gMiANL1QgODU3MjczIA0+ 
...
XQ0+Pg1zdGFydHhyZWYNMTczDSUlRU9GDQ== 
--------------070909050200090407080406-- 

Email Zustellung

Die Architektur der IMAP und POP3 Email Software zeigt folgendes Bild.

IMAP+POP Architektur

© Universität Mannheim, Rechenzentrum, 2002-2005.

Heinz Kredel

Last modified: Wed Jun 1 23:23:23 CEST 2005