So funktioniert E-Mail Teil 4

Guten Morgen

IMAP4: Internet Message Access Protocol, Version 4

E-Mail-Client und Server tauschen bei IMAP ihre Daten über den TCP-Port 143 aus. Im Gegensatz zu den Protokollen SMTP und POP muss der Client bei IMAP nicht nach jedem gesendeten Kommando auf die unmittelbare Antwort des Servers warten. Es können mehrere Befehle hintereinander versendet werden, die jeweilige Rückmeldung vom Server kann später erfolgen. Dazu wird jedem Kommando seitens des Client eine Kennung vorangestellt, auch "Tag" genannt, zum Beispiel "A001" für den ersten Befehl und "A002" für den zweiten. Der Server kann dem Client auf mehrere Arten antworten: Mit einem Plus-Zeichen am Anfang der Zeile antwortet der Server, wenn er weitere Informationen zu dem vorangegangenen Kommando erwartet. Er signalisiert dem Client gleichzeitig seine Empfangsbereitschaft. Steht dagegen ein Sternchen am Anfang der Zeile, sendet der Server weitere Informationen an den Client zurück.

Die Antwort eines Servers kennzeichnet den Erfolg oder Fehler eines Kommandos: "OK" (Kommando erfolgreich ausgeführt), NO (Fehler beim Ausführen) oder BAD (Protokoll-Fehler: Kommando unbekannt oder Syntax-Fehler). Die Antwort enthält denselben Tag wie das zugehörige Kommando, so erkennt der Client, welcher Response welchem Befehl gilt. Wie bei POP durchläuft eine IMAP-Verbindung mehrere Sitzungsstufen:

Non-Authenticated State: Unmittelbar nach dem Aufbau der Verbindung. Der Anwender muss sich gegenüber dem Server identifizieren.
Authenticated State: Der Anwender hat sich erfolgreich identifiziert und muss nun eine Mailbox auswählen.
Selected State: Eine Mailbox wurde ausgewählt. In dieser Phase lassen sich die Mailbox und Mails bearbeiten.
Logout State: Die Verbindung wird abgebrochen, und der Server führt noch anstehende Änderungen aus.

IMAP4: Non-Authenticated State

Der "Non-Authenticated State" stellt mehrere Möglichkeiten zur Identifizierung des Anwenders zur Verfügung. Folgende Kommandos stehen in diesem Verbindungs-zustand bereit:

Kommando Argument Beschreibung
AUTHENTICATE Authentifizierungs-Mechanismus Das Kommando bestimmt den Authentifizierungs-Mechanismus, zum Beispiel "Kerberos" oder "S/Key". Details zu den Authentifizierungs-Mechanismen finden Sie in RFC1731.
LOGIN Name / Passwort Identifiziert den Anwender über Benutzername und Passwort.

Beispiel für eine Authentifizierung mittels des Kommandos LOGIN:

> C: a001 LOGIN EVA AHD635D
> S: a001 OK LOGIN completed

IMAP4: Authenticated State

Im "Authenticated State" hat sich der User authentifiziert und muss nun eine Mailbox auswählen, welche in dieser Sitzung bearbeitet werden soll. Dazu stehen unter anderem folgende Kommandos zur Verfügung:

Kommando Argument Beschreibung
SELECT Mailbox-Name Wählt eine Mailbox zur weiteren Bearbeitung aus. Als erfolgreiche Antwort sendet der Client Informationen zur gewählten Mailbox, wie beispielweise die Anzahl der gespeicherten Nachrichten.
EXAMINE Mailbox-Name Identisch mit dem Kommando SELECT. Jedoch wird die Mailbox als "read-only" ausgewählt, es sind keine dauerhaften Änderungen möglich.
CREATE Mailbox-Name Erstellt eine Mailbox mit dem als Argument übergebenen Namen.
DELETE Mailbox-Name Löscht die als Argument übergebene Mailbox.
RENAME Bestehender Mailbox-Name / Neuer Mailbox-Name Ändert den Namen einer Mailbox.

Beispiel zum Löschen einer Mailbox mit DELETE:

> C: A683 DELETE FRIENDS
> S: A683 OK DELETE completed

IMAP4: Selected State und Update State

Im "Selected State" stehen zahlreiche Kommandos zum Bearbeiten einer Mailbox zur Verfügung:

Kommando Argument Beschreibung
CLOSE - Entfernt alle zum Löschen gekennzeichneten Mails und setzt die Verbindung in den Authenticated State zurück.
EXPUNGE - Entfernt alle zum Löschen gekennzeichneten Mails, die Verbindung bleibt im Selected State.
SEARCH ein oder mehrere Suchkriterien Erlaubt die Suche nach bestimmten Nachrichten in der aktuellen Mailbox. Das Kommando unterstützt Boolesche Verknüpfungen.
FETCH Gewünschte Daten einer Nachricht Bewirkt das Senden von Daten einer Nachricht vom Server zum Client.

Beispiel zum Suchen einer bestimmten Nachricht mit SEARCH. Als Ergebnis der Suche liefert der Server die Nummern der entsprechenden Mails zurück:

> C: A282 SEARCH SINCE 1-NOV-2001 FROM "ADAM"
> S: * SEARCH 2 84 882
> S: A282 OK SEARCH completed

Beendet der Client mit dem Kommando LOGOUT die Verbindung, wechselt der Server in den "Update State" und führt noch anstehende Änderungen aus.

IMAP4: Beispiel für das Abrufen einer Mail

In diesem Beispiel sehen Sie den Ablauf einer IMAP4-Verbindung. Der Client identifiziert sich gegenüber dem Server, wählt eine Mailbox aus und lädt den Header einer Nachricht herunter.

> S: * OK IMAP4 Service Ready
> C: a001 login eva ahd635d
> S: a001 OK LOGIN completed
> C: a002 select inbox
> S: * 18 EXISTS
> S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
> S: * 2 RECENT
> S: * OK [UNSEEN 17] Message 17 is first new message
> S: * OK [UIDVALIDITY 3857529045] is first new message
> S: a002 OK [READ-WRITE] SELECT completed
> C: a003 fetch 12 rfc822.header
> S: * 12 FECH (RFC822.HEADER {346}
> S: Date: Wed, 10 Dec 2001 02:23:25 -0700 (PDT)
> S: From: Adam <adam@xyz.de>
> S: Subject: Beispiel für eine IMAP4-Verbindung
> S: To: Eva <eva@test.de>
> S: Message-Id: <9307191947AA00502.Adam@xyz.de>
> S: Mime-Version: 1.0
> S: Content-Type: TEXT/PLAIN; CHARSET=iso-8859-1
> S: )
> S: a003 OK FETCH completed
> C: a004 LOGOUT
> S: * BYE IMAP4 server terminating connection
> S: a004 OK LOGOUT completed

Nachdem der Mail-Client über TCP eine Verbindung zum SMTP-Server aufgebaut hat, wartet er auf einen Begrüßungstext des Servers. Im nächsten Schritt identifiziert sich der Client mit dem Kommando LOGIN, als Argument übergibt er den Benutzernamen und das Passwort. Nach dem Auswählen der Mailbox sendet der Server einige Informationen wie beispielsweise die Anzahl der ungelesenen Nachrichten. Mit dem Kommando FETCH fordert der Client den Header der Nachricht 12 an. LOGOUT beendet die Verbindung.

Gruss Stefan
 
Zurück
Oben