IMAP

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

IMAP-Protokollgrundlagen

Das Internet Message Access Protocol (IMAP) ist ein Netzwerkprotokoll, das für den Zugriff auf E-Mails auf einem Mailserver verwendet wird. Im Gegensatz zu POP3 verbleiben die E-Mails auf dem Server, sodass der Zugriff von mehreren Geräten möglich ist.

Verbindungsaufbau

Der Verbindungsaufbau im IMAP-Protokoll umfasst folgende Schritte:

  • Der Client öffnet eine TCP/IP-Verbindung zum IMAP-Server auf Port 143 (Standard-IMAP) oder Port 993 (IMAPS für verschlüsselte Verbindungen).
  • TLS-Verschlüsselung kann entweder direkt über Port 993 oder nachträglich über STARTTLS auf Port 143 initiiert werden, um die Kommunikation zu sichern.

Kommunikation

Die Kommunikation zwischen Client und Server im IMAP-Protokoll erfolgt über Befehle und Antworten:

  • Der Server sendet nach der Verbindung eine Begrüßungsnachricht mit Statusangabe, z. B. * OK [CAPABILITY IMAP4rev1 ...].
  • Der Client authentifiziert sich entweder über einfache Benutzer/Passwort-Anmeldung oder über sichere Mechanismen wie OAuth oder Kerberos.
  • IMAP-Befehle werden in der Regel mit einem eindeutigen Tag versehen (z. B. A001 LOGIN user pass), um parallele Anfragen zu ermöglichen.
  • Der Server antwortet mit einem Statuscode wie OK, NO oder BAD zur Bestätigung oder Ablehnung einer Anfrage.

E-Mail-Verwaltung

Die Verwaltung von E-Mails im IMAP-Protokoll umfasst folgende Schritte:

  • Clients können auf verschiedene Ordner (Mailboxes) zugreifen, z. B. INBOX, Sent, Trash.
  • Nachrichten können als gelesen, ungelesen, gelöscht oder mit anderen Flags markiert werden.
  • Clients können nur die Kopfzeilen oder vollständige Nachrichten abrufen, um Bandbreite zu sparen.
  • IMAP ermöglicht eine bidirektionale Synchronisation, sodass Änderungen auf dem Server für alle Clients sichtbar bleiben.

Nachrichtenabruf

Der Abruf von E-Mails im IMAP-Protokoll erfolgt über spezielle Kommandos:

  • Das FETCH-Kommando ruft entweder die gesamte Nachricht oder Teile davon ab (z. B. nur Header oder Anhänge).
  • Das SEARCH-Kommando ermöglicht eine serverseitige Suche nach E-Mails basierend auf Kriterien wie Datum, Absender oder Betreff.
  • Das STORE-Kommando erlaubt das Setzen oder Entfernen von Flags wie Seen oder Deleted.

Ordnerverwaltung

Die Organisation von E-Mails in IMAP erfolgt über Ordnerstrukturen:

  • Clients können neue Ordner mit CREATE erstellen und bestehende Ordner mit DELETE entfernen.
  • Das LIST-Kommando zeigt verfügbare Ordner an, während das SELECT-Kommando den Fokus auf einen bestimmten Ordner legt.
  • SUBSCRIBE und UNSUBSCRIBE steuern, welche Ordner für den Client sichtbar sind.

Synchronisation

Die Synchronisation von E-Mails in IMAP sorgt dafür, dass Änderungen überall sichtbar bleiben:

  • EXPUNGE löscht als gelöscht markierte Nachrichten endgültig.
  • UIDVALIDITY und UID helfen Clients, Änderungen effizient zu verfolgen.
  • IDLE ermöglicht eine Push-Benachrichtigung für neue Nachrichten, ohne dass der Client ständig Abfragen senden muss.

Beendigung

Die Beendigung der IMAP-Verbindung erfolgt über folgende Schritte:

  • Der Client sendet das LOGOUT-Kommando, um die Sitzung zu beenden.
  • Der Server antwortet mit BYE und schließt die Verbindung.

IMAP ist besonders für Nutzer geeignet, die ihre E-Mails auf mehreren Geräten verwalten möchten, da alle Änderungen auf dem Server gespeichert und synchronisiert werden.

Beispiele

telnet imap.gmail.com 143
A001 LOGIN benutzer passwort
A002 LIST "" "*"
openssl s_client -connect imap.gmail.com:993
A001 LOGIN benutzer passwort
A002 SELECT INBOX

Ablauf einer IMAP-Sitzung