| IMAP (Internet Message Access Protocol) | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Familie: | Internetprotokollfamilie | ||||||||||||||||||||||||
| Einsatzgebiet: | Manipulation und Zugriff auf E-Mails in Mailboxen. |
||||||||||||||||||||||||
| Port: | 143/TCP 220/TCP (IMAP3) 993/TCP (IMAPS) |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
| Standards: |
RFC 3501 (IMAP, 2003) |
||||||||||||||||||||||||
Die Abkürzung IMAP steht für Internet Message Access Protocol. Das Anwendungsprotokoll erlaubt den Zugriff auf und die Verwaltung von empfangenen E-Mails, die sich in einem Postfach auf einem Mailserver befinden.
IMAP wurde mit dem Ziel entworfen, den Zugriff auf Mailboxen und Nachrichten so bereitzustellen, als befänden sich diese auf dem lokalen Rechner. Im Gegensatz zu POP3 verbleiben die E-Mails auf dem Server und werden dort verwaltet. Für das Versenden von Mails muss ein anderes Protokoll (z.B. SMTP) verwendet werden.
Die bei der IANA registrierte Portnummer für IMAP ist 143. Für IMAP über SSL (verschlüsselte Verbindung->IMAPS) ist der Port 993 reserviert. Die veraltete Version 3 verwendet den Port 220.[1] Die aktuelle formale Beschreibung von IMAP findet sich in RFC 3501. Darüber hinaus gibt es eine Vielzahl von optionalen Erweiterungen des Protokolls, die in eigenen RFCs und Drafts beschrieben sind.
Inhaltsverzeichnis |
IMAP ist ein textbasiertes Protokoll zum Zugriff auf E-Mails, die sich auf einem Mailserver befinden. Ein Mail-Client stellt Anfragen an den Server nur nach aktuell benötigten Informationen. Möchte ein Nutzer z.B. den Inhalt eines Ordners sehen, holt sich der Client eine aktuelle Nachrichtenliste des betreffenden Ordners vom Server. Soll der Inhalt einer Mail angezeigt werden, wird dieser vom Server geladen. Da alle Daten weiterhin auf dem Server verbleiben, zeigen - auch bei der Benutzung von mehreren Clients - alle den gleichen, aktuellen Datenbestand einer Mailbox an. Zudem wird eine lokale Speicherung der Daten unnötig und erweiterte Möglichkeiten wie das Durchsuchen von Mails werden serverseitig durchgeführt.
Mit IMAP ist auch der Zugriff auf verschiedene Ordner innerhalb einer Mailbox möglich. Viele Server können eingehende Mails auch direkt in verschiedene Ordner einsortieren (filtern). Durch das Setzen von Zugriffsrechten für Ordner einer Mailbox können auch mehrere Benutzer gleichzeitig auf dieselben Daten zugreifen. Die Erweiterung IMAP IDLE ermöglicht eine sofortige Benachrichtigung an Clients (pushen), wenn eine neue Mail eintrifft. So wird unnötiger Datenverkehr vermieden, der bei ständigen Anfragen (polling) eines Clients anfallen würde. Verfügt man über keine Internetverbindung zu seinem Mailserver ist i.d.R. auch kein Zugriff mehr auf die Mails möglich. Einige Clients lösen dieses Problem, indem sie lokale Kopien der Mails anlegen, auf die sie im Offline-Modus zurückgreifen können. Bei einer wiederhergestellten Internetverbindung werden die Daten wieder mit dem Mailserver abgeglichen. (synchronisieren).
Wegen der zentralen Speicherung der Daten auf einem externen Server muss auch der eigene Datenschutz berücksichtigt werden. Die Verbindung zum Server sollte deshalb verschlüsselt werden.
Beispiel einer IMAP-Sitzung (IMAP4rev1-Beispiel aus RFC 3501, 8. Kapitel - gekürzt):
| Client | Server | Erklärung |
|---|---|---|
| * OK IMAP4rev1 Service Ready | Server begrüßt den Client | |
| a001 login mrc secret | Client meldet sich an | |
| a001 OK LOGIN completed | Server bestätigt Anmeldung | |
| a002 select inbox | Client wählt inbox als aktiven Ordner | |
| * 18 EXISTS * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) |
18 Mails vorhanden definierte Flags |
|
| a003 fetch 12 full | Client fordert Infos zu Mail Nr. 12 | |
* 12 FETCH (FLAGS (\Seen)
a003 OK FETCH completed |
Mail wurde bereits gelesen am 17. Juli 1996 zugestellt
|
|
| a004 fetch 12 body[header] | Client möchte alle Header zu Mail Nr. 12 | |
* 12 FETCH (BODY[HEADER] {342}
a004 OK FETCH completed |
Server sendet geforderte Mailheader | |
| a005 store 12 +flags \deleted | Mail Nr. 12 als gelöscht markieren | |
| * 12 FETCH (FLAGS (\Seen \Deleted)) a005 OK +FLAGS completed |
||
| a006 logout | Client meldet sich ab | |
| * BYE IMAP4rev1 server terminating connection a006 OK LOGOUT completed |
IMAP wird inzwischen von fast allen gängigen E-Mail-Programmen unterstützt. Allerdings bestehen große Unterschiede im Grad der Unterstützung. Viele Clients unterstützen nur Basisfunktionen für den Nachrichtenabruf (was den meisten Nutzern ausreicht). Nur wenige Programme nutzen den vollen Funktionsumfang, den IMAP-Server bieten. Dazu gehört zum Beispiel die Rechtevergabe zum gemeinsamen Zugriff verschiedener Benutzer auf einen Ordner.
Auswahl von Clients mit erweiterter IMAP-Unterstützung:
Auswahl von Clients mit einfacher IMAP-Unterstützung:
Inzwischen unterstützen fast alle Mailserver-Implementationen IMAP. Einige Provider unterdrücken jedoch die Funktionalität (oder verlangen ein erhöhtes Entgelt), da hierdurch mehr Daten auf dem Server gespeichert werden müssen und auch das Datenübertragungsaufkommen steigt.
Im Unix-Umfeld kommen unter anderem folgende IMAP-Server zum Einsatz:
Auch auf anderen Plattformen und auch im kommerziellen Bereich bieten Messaging-Produkte IMAP-Schnittstellen an. Vor allem Groupware-Lösungen bauen IMAP fest in ihr Konzept ein:
Der Server kann den Zugriff für nicht-autorisierte Benutzer auf eine Mailbox verweigern. In jeden Fall muss sich der Nutzer authentifizieren, bevor er Zugriff auf Mails erlangen kann. Dies geschieht, indem er sich mit Benutzername und Passwort anmeldet. Das Passwort wird dabei auf IMAP-Protokoll-Ebene im Klartext übertragen. Mailserver können deshalb Clients verbieten das Passwort zu übertragen, falls zuvor keine verschlüsselte Sitzung aufgebaut wurde.
Alternativ ist auch eine Verwendung von anderen Netzwerkauthentifikationsprotokollen (z.B. GSSAPI, Kerberos) möglich.
Um die Daten während der Übertragung vor Dritten zu schützen kann die Datenverbindung mittels SSL/TLS verschlüsselt werden. Hierzu existieren zwei unterschiedliche Methoden:
Nach dem Aufbau einer unverschlüsselten Datenverbindung mit dem Server (Port 143), kann mittels dem Kommando STARTTLS eine verschlüsselte Sitzung initiiert werden, sodass alle nachfolgenden versendeten Daten über diese Verbindung nur noch verschlüsselt übertragen werden. Diese Protokollerweiterung ist in der neusten Protokollspezifikation bereits fest vorgesehen.
| Anwendung | IMAP | ||||
| Transport | SSL/TLS | ||||
| TCP | |||||
| Internet | IP (IPv4, IPv6) | ||||
| Netzzugang | Ethernet | Token Bus |
Token Ring |
FDDI | … |
Bei der Verwendung von IMAPS wird die Verbindung zum Server bereits während des Verbindungsaufbaus durch SSL verschlüsselt. Damit der Server dies erkennt muss ein anderer Port verwendet werden. Hierfür wurde der Port 993 reserviert.
Nach dem Aufbau der SSL-Verbindung wird mind. IMAPv4 verwendet. Die SSL-Schicht ist für das IMAP-Protokoll transparent, d.h. es werden keine Änderungen am IMAP-Protokoll vorgenommen.
Im folgenden sind aktuelle RFCs zu IMAP aufgeführt, die das IMAP-Protokoll standardisieren um eine Interoperabilität zwischen unterschiedlichen Produkten zu gewährleisten[3]:
Der Text basiert hauptsächlich auf den oben aufgeführten RFCs. Zusätzlich wurden folgende Quellen verwendet: