|
|
| Zeile 74: |
Zeile 74: |
|
| |
|
| = TMP = | | = TMP = |
| IMAP wurde in den 1980er Jahren mit dem Aufkommen von [[Personal Computer]]n entworfen, um bei der Mail-Kommunikation Abhängigkeiten von einzelnen [[Client]]-Rechnern aufzulösen.<ref name="IMAP2" /> Zu diesem Zweck erweitert IMAP die Funktionen und Verfahren des [[Post Office Protocol]] (POP) so, dass Benutzer ihre Mails, Ordnerstrukturen und Einstellungen auf den [[Mailserver|(Mail-)Servern]] speichern und belassen können.
| |
| * Während bei der Verwendung von POP die Nachrichten entweder nach dem Abruf gelöscht oder beim nächsten Abruf erneut empfangen werden, ermöglicht IMAP eine zentrale Verwaltung mit Suchfunktion und serverseitiger „Gelesen“-Markierung.
| |
|
| |
| Das [[Simple Mail Access Protocol]] (SMAP) ist ein Ansatz, die Funktionalität von IMAP mit dem [[Simple Mail Transfer Protocol]] (SMTP) zu vereinen, das ansonsten zum Senden von E-Mails erforderlich bleibt.
| |
|
| |
| == Protokolleigenschaften ==
| |
| IMAP ist ein textbasiertes Protokoll zum Zugriff auf [[E-Mail]]s, die sich auf einem [[Mailserver]] befinden.
| |
| * Ein [[E-Mail-Programm|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 ([[Mailfilter|filtern]]).
| |
| Durch das Setzen von [[Access Control List|Zugriffsrechten]] für Ordner einer Mailbox können auch mehrere [[Benutzerkonto|Benutzer]] gleichzeitig auf dieselben [[Daten]] zugreifen.
| |
| Die Erweiterung ''IMAP IDLE'' ermöglicht eine sofortige Benachrichtigung an Clients ([[Push-Model|pushing]]), wenn eine neue Mail eintrifft.
| |
| * So wird unnötiger [[Datenverkehr]] vermieden, der bei ständigen Anfragen ([[Polling (Informatik)|polling]]) eines Clients anfallen würde.
| |
| Verfügt man über keine [[Internetverbindung]] zu seinem Mailserver, ist in der Regel 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 wiederhergestellter Internetverbindung werden die Daten wieder mit dem Mailserver abgeglichen ([[Replikation (Datenverarbeitung)|synchronisiert]]).
| |
|
| |
| 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üsselung|verschlüsselt]] werden.
| |
|
| |
| Beispiel einer IMAP-Sitzung (IMAP4rev1-Beispiel aus RFC 3501, 8. Kapitel – gekürzt):
| |
|
| |
| {| cellpadding="5" cellspacing="0"
| |
| |-
| |
| ! Client
| |
| ! Server
| |
| ! Erklärung
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|* OK IMAP4rev1 Service Ready
| |
| |style="background:#F0F0F0"|Server begrüßt den Client
| |
| |-
| |
| |style="background:#C0C0FF; font-family:monospace;"|a001 login mrc secret
| |
| |style="background:#C0C0FF; font-family:monospace;"|
| |
| |style="background:#F0F0F0"|Client meldet sich an
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|a001 OK LOGIN completed
| |
| |style="background:#F0F0F0"|Server bestätigt Anmeldung
| |
| |-
| |
| |style="background:#C0C0FF; font-family:monospace;"|a002 select inbox
| |
| |style="background:#C0C0FF; font-family:monospace;"|
| |
| |style="background:#F0F0F0"|Client wählt ''inbox'' als aktiven Ordner
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|<nowiki>* 18 EXISTS</nowiki><br />
| |
| <nowiki>* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)</nowiki><br />
| |
| <nowiki>* 2 RECENT</nowiki><br />
| |
| <nowiki>* OK [UNSEEN 17] Message 17 is the first unseen message</nowiki><br />
| |
| a002 OK [READ-WRITE] SELECT completed
| |
| |style="background:#F0F0F0"|18 Mails vorhanden<br />
| |
| definierte [[Flag (Informatik)|Flags]]<br />
| |
| 2 dringliche Mails (z. B. neue Mails)<br />
| |
| Mail Nr. 17 ist ungelesen.
| |
| * Alle älteren wurden bereits gelesen.<br />
| |
|
| |
| Client darf Änderungen an Mails durchführen
| |
| |-
| |
| |style="background:#C0C0FF; font-family:monospace;"|a003 fetch 12 full
| |
| |style="background:#C0C0FF; font-family:monospace;"|
| |
| |style="background:#F0F0F0"|Client fordert Infos zu Mail Nr. 12
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|* 12 FETCH (FLAGS (\Seen)<br />
| |
| :INTERNALDATE "17-Jul-1996 02:44:25 -0700"
| |
| :RFC822.SIZE 4286
| |
| :ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"
| |
| ::"IMAP4rev1 WG mtg summary and minutes"
| |
| ::(("Terry Gray" NIL "gray" "cac.washington.edu"))
| |
| ::(("Terry Gray" NIL "gray" "cac.washington.edu"))
| |
| ::(("Terry Gray" NIL "gray" "cac.washington.edu"))
| |
| ::((NIL NIL "imap" "cac.washington.edu"))
| |
| ::(("John Klensin" NIL "KLENSIN" "MIT.EDU"))
| |
| ::NIL NIL
| |
| ::"<B27397-0100000@cac.washington.edu>")
| |
| :BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 302892))
| |
| a003 OK FETCH completed
| |
| |style="background:#F0F0F0"|Mail wurde bereits gelesen<br />
| |
| am 17. Juli 1996 zugestellt<br />
| |
| über 4kB groß<br />
| |
| [[Header (E-Mail)|Mail-Header]]:
| |
| :Datum
| |
| :Betreff
| |
| :Absender (From)
| |
| :Absender (Sender)
| |
| :Antwort-an
| |
| :Empfänger (To)
| |
| :Kopie-Empfänger (CC)
| |
| :BCC und In-Reply-To nicht angegeben<br />
| |
| :[[Message-ID]]<br />
| |
| :<br />
| |
| |-
| |
| |style="background:#C0C0FF; font-family:monospace;"|a004 fetch 12 body[header]
| |
| |style="background:#C0C0FF; font-family:monospace;"|
| |
| |style="background:#F0F0F0"|Client möchte alle Header zu Mail Nr. 12
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|* 12 FETCH (BODY[HEADER] {342}
| |
| :Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)
| |
| :From: Terry Gray <gray@cac.washington.edu>
| |
| :Subject: IMAP4rev1 WG mtg summary and minutes
| |
| :To: imap@cac.washington.edu
| |
| :cc: minutes@CNRI.Reston.VA.US, John Klensin <KLENSIN@MIT.EDU>
| |
| :Message-Id: <B27397-0100000@cac.washington.edu>
| |
| :MIME-Version: 1.0
| |
| :Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
| |
| :)<br />
| |
| a004 OK FETCH completed
| |
| |style="background:#F0F0F0"|Server sendet geforderte Mailheader
| |
| |-
| |
| |style="background:#C0C0FF; font-family:monospace;"|a005 store 12 +flags \deleted
| |
| |style="background:#C0C0FF; font-family:monospace;"|
| |
| |style="background:#F0F0F0"|Mail Nr. 12 als gelöscht markieren
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|* 12 FETCH (FLAGS (\Seen \Deleted))<br />
| |
| a005 OK +FLAGS completed
| |
| |-
| |
| |style="background:#C0C0FF; font-family:monospace;"|a006 logout
| |
| |style="background:#C0C0FF; font-family:monospace;"|
| |
| |style="background:#F0F0F0"|Client meldet sich ab
| |
| |-
| |
| |style="background:#FFFFB0; font-family:monospace;"|
| |
| |style="background:#FFFFB0; font-family:monospace;"|* BYE IMAP4rev1 server terminating connection<br />
| |
| a006 OK LOGOUT completed
| |
| |}
| |
|
| |
| == Clients ==
| |
| IMAP wird inzwischen von fast allen gängigen [[E-Mail-Programm]]en 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 [[Zugriffskontrolle|Zugriff]] verschiedener Benutzer auf einen Ordner.
| |
|
| |
| Auswahl von Clients mit erweiterter IMAP-Unterstützung:
| |
| {{Mehrspaltige Liste|breite=25em|
| |
| * [[Pine|Alpine/Pine]]
| |
| * [[Gnus (Software)|Gnus]]
| |
| * [[Mulberry (Software)|Mulberry]] (nahezu vollständige Unterstützung)
| |
| * [[Microsoft Outlook]] (ab Version 2007)
| |
| * [[Evolution (Software)|Evolution]]
| |
| * [[Mozilla Thunderbird]], [[SeaMonkey]]
| |
| }}
| |
|
| |
| Auswahl von Clients mit einfacher IMAP-Unterstützung:
| |
| {{Mehrspaltige Liste|breite=25em|
| |
| * [[Apple Mail]]
| |
| * [[Windows Mail]]
| |
| * [[Pegasus Mail]]
| |
| * [[Kontact|KMail]]
| |
| * [[Microsoft Outlook]]
| |
| * [[mutt]]
| |
| * [[Opera (Browser)|Opera]] (nur bis version 12)
| |
| * [[The Bat]]
| |
| }}
| |
|
| |
| == Server ==
| |
| Inzwischen unterstützen viele Mailserver IMAP<!-- aber all die reinen MTA nicht -->.
| |
| * Einige Provider unterdrücken jedoch die Funktionalität (oder verlangen ein erhöhtes Entgelt), da bei IMAP mehr Daten auf dem Server gespeichert bleiben und auch die durchschnittliche Übertragungsmenge steigt.
| |
|
| |
| [[Cyrus (Server)|Cyrus]] war der erste Server mit einer Version von IMAP, die als Internetstandard empfohlen war.<ref>{{cite web
| |
| |url = http://www.washington.edu/imap/meeting.1st/overview.html
| |
| |title = IMAP: The Internet Message Access Protocol – Brief Overview and History
| |
| |date = 1996
| |
| |publisher = University of Washington
| |
| |accessdate = 2012-01-20
| |
| }}</ref> [[UW IMAP]] zog im selben Jahr nach und war zuvor [[Proof of Concept]] von IMAP.
| |
| * Dieser Server von der [[University of Washington]] erweitert IMAP, was aber nicht dokumentiert und trotzdem von der [[Carnegie Mellon University]] in ihren Cyrus übernommen wurde.<ref>{{cite web
| |
| | url = http://groups.google.com/group/comp.mail.pine/msg/acfc1caf3b2c0264
| |
| | title = Pine won't search my IMAP mail
| |
| | author = M. Crispin
| |
| | publisher = Google
| |
| | date = 2003-02-08
| |
| | accessdate = 2011-05-08
| |
| }}</ref><ref>{{cite web
| |
| |url = http://www.washington.edu/imap/meeting.1st/status.html
| |
| |title = IMAP4 Status
| |
| |date = 1996
| |
| |publisher = University of Washington
| |
| |accessdate = 2012-01-20
| |
| }}</ref><ref>{{cite web
| |
| | url = http://www.cyrusimap.org/docs/cyrus-imapd/2.4.0/changes.php
| |
| | title = Changes to the Cyrus IMAP Server since 2.3.x
| |
| | publisher = Carnegie Mellon University
| |
| | accessdate = 2011-05-08
| |
| }}</ref> Dieses Vorgehen der beiden Universitäten bei den ersten Implementierungen bewirkte, dass [[Konformität]] und [[Kompatibilität (Technik)|Kompatibilität]] bei IMAP notorisch strittig ist.
| |
|
| |
| Mit dem [[Courier Mail Server]] kam die Abkehr vom [[mbox]]-Konzept, das inzwischen als untauglich gilt.
| |
| * Courier speichert die E-Mails nach dem [[Maildir]]-Konzept.<ref>{{cite web
| |
| | url = http://books.google.com/books?id=DpvCKQj5DMUC&printsec=frontcover&hl=de#v=onepage&q&f=false
| |
| | title = The book of IMAP: building a mail server with Courier and Cyrus
| |
| | author = P. Heinlein, P. Hartleben
| |
| | pages = 107
| |
| | publisher = Google
| |
| | accessdate = 2011-05-08
| |
| }}</ref> Die Stabilität und Leistungsfähigkeit des Speicherkonzepts ist ein wesentliches Kriterium von Servern für IMAP.<ref>{{cite web
| |
| | url = http://www.linux-magazin.de/Heft-Abo/Ausgaben/2007/06/Auf-der-Teststrecke/
| |
| | title = UW IMAP, Courier, Cyrus und Dovecot im direkten Vergleich
| |
| | author = P. B. Koetter
| |
| | publisher = Linux New Media
| |
| | accessdate = 2011-05-08
| |
| }}</ref>
| |
|
| |
| Im Unix-Umfeld kommen außer den genannten unter anderem folgende IMAP-Server zum Einsatz:
| |
| {{Mehrspaltige Liste|breite=25em|
| |
| * [[Citadel/UX|Citadel Groupware Server]]
| |
| * [[Dovecot]]
| |
| }}
| |
|
| |
| Auch auf anderen Plattformen und auch im kommerziellen Bereich bieten Messaging-Produkte IMAP-Schnittstellen an.
| |
| {{Mehrspaltige Liste|breite=25em|
| |
| * [[Mercury MTS]] für Netware und Windows
| |
| * agorum core ist ein [[Open Source|Open-Source]]-[[Dokumentenmanagement]]-System mit IMAP-Zugriff
| |
| * [[Alfresco (Software)|Alfresco]] ist ein [[Open Source|Open-Source]]-[[Dokumentenmanagement]]-System das den IMAP-Zugriff unterstützt.
| |
| }}
| |
|
| |
| Darüber hinaus bauen [[Groupware]]-Lösungen IMAP fest in ihr Konzept ein:
| |
| {{Mehrspaltige Liste|breite=25em|
| |
| * [[Kerio_Technologies|Kerio Connect]]
| |
| * [[Kolab|Kolab Server]]
| |
| * [[Lotus Domino]]
| |
| * [[Microsoft Exchange Server]]
| |
| * [[Zarafa (Software)|Zarafa]]
| |
| }}
| |
|
| |
| == Unterschiede zum Post Office Protocol ==
| |
| Im Gegensatz zum [[Post Office Protocol]] ermöglicht IMAP eine Verwaltung von Nachrichtenordnern auf dem Server.
| |
| * Wenn eine Nachricht per IMAP als „gelesen“ markiert wurde, ist diese Markierung auch für alle anderen Clients sichtbar.
| |
| * Gelöschte Nachrichten verschwinden von allen synchronisierten Geräten.
| |
|
| |
| Nachrichten können direkt auf dem Server durchsucht werden, sodass Clients keine vollständige Kopie aller Ordner vorhalten müssen, um einzelne Nachrichten zu finden.
| |
| * Die serverseitige Suchfunktion und die zentrale Speicherung aller Nachrichten verlagert Rechenarbeit und Speicherplatzverbrauch von den Clients auf den Server.
| |
|
| |
| == Authentifizierung ==
| |
| Der Server kann den Zugriff für nicht-[[Autorisierung|autorisierte]] Benutzer auf eine Mailbox verweigern.
| |
| * In jedem Fall muss sich der Nutzer [[Authentifizierung|authentifizieren]], bevor er Zugriff auf Mails erlangen kann.
| |
| * Das geschieht, indem er sich mit [[Benutzername]] und [[Kennwort|Passwort]] anmeldet.
| |
| * Das Passwort wird dabei auf IMAP-Protokoll-Ebene im [[Klartext (Kryptographie)|Klartext]] übertragen.
| |
| * Mailserver können deshalb Clients verbieten, das Passwort zu übertragen, falls zuvor keine verschlüsselte Sitzung aufgebaut wurde. <!--LOGINDISABLED siehe RFC 2595 -->
| |
|
| |
| Alternativ ist auch die Verwendung anderer Netzwerk-Authentifikationsprotokolle (z. B. [[GSSAPI]], [[Kerberos (Informatik)|Kerberos]]) möglich. <!-- siehe RFC 1731 -->
| |
|
| |
| == Verschlüsselung ==
| |
| {{Netzwerk-TCP-IP-Anwendungsprotokoll|Internet Message Access Protocol{{!}}IMAP|ssl=1|title=IMAPS}}
| |
|
| |
| Um die Daten während der Übertragung vor Dritten zu schützen, kann die Datenverbindung mittels [[Secure Sockets Layer|SSL/TLS]] [[Verschlüsselung|verschlüsselt]] werden.
| |
| * Dafür existieren zwei unterschiedliche Methoden:
| |
|
| |
| === STARTTLS ===
| |
| <!-- RFC 3501 und RFC 2595 -->
| |
| Nach dem Aufbau einer unverschlüsselten Datenverbindung mit dem Server (Port 143) kann mittels des Kommandos [[STARTTLS]] eine verschlüsselte Sitzung initiiert werden, so dass alle nachfolgend versendeten Daten über diese Verbindung nur noch verschlüsselt übertragen werden.
| |
| * Diese Protokollerweiterung ist in der Protokollspezifikation fest vorgesehen.
| |
|
| |
| === IMAPS ===
| |
| <!-- RFC 2595 und RFC 8314-->
| |
| Bei der Verwendung von IMAPS wird die Verbindung zum Server bereits während des Verbindungsaufbaus durch [[Transport Layer Security|SSL]] verschlüsselt.
| |
| * Damit der Server das erkennt, muss ein anderer Port verwendet werden.
| |
| * Dafür wurde der Port 993 reserviert.
| |
|
| |
| Nach dem Aufbau der SSL-Verbindung wird mindestens IMAPv4 verwendet.
| |
| * Die SSL-Schicht ist für das IMAP-Protokoll [[Transparenz (Computersystem)|transparent]], d. h., es werden keine Änderungen am IMAP-Protokoll vorgenommen.
| |
|
| |
| In RFC 8314 wird die Verwendung von IMAPS gegenüber STARTTLS und gänzlich unverschlüsseltem IMAP bevorzugt.
| |
|
| |
|
| == Geschichte == | | == Geschichte == |