Wie POP3 dient IMAP (definiert in RFC 1730) dazu, die auf dem Server gespeicherten Mails abzurufen. Allerdings bleiben bei IMAP die Mails üblicherweise auf dem Server, das heißt der Server übernimmt die permanente Speicherung der Mails.
Dies ist besonders für Nutzer, die oft an verschiedenen Computern arbeiten, nützlich, da sie nun auf alle ihrer Mails von jedem Computer aus Zugriff haben.
Auch gibt es bei IMAP (server-seitige) Ordner, ein Fremdwort für POP3.
Direkt nach dem Verbinden auf den Standardport 143
des IMAP4-Servers (im
Beispiel imap.web.de
) empfängt man eine Bannermeldung:
<* OK WEB.DE IMAP4-Server
Als nächstes loggen wir uns ein:
>A001 LOGIN "iblech" "pa5sword" <A001 OK User logged inDa bei IMAP theoretisch mehrere Befehle gleichzeitig ausgeführt werden können, bedient man sich von IDs, die jedem Befehl voranstehen müssen (hier
A001
).
Die ID kann mehr oder weniger frei gewählt werden, es dürfen nur keine
Leerzeichen oder andere Sonderzeichen in der ID enthalten sein. Auch muss die
nächste ID nicht unbedingt "`höher"' (zum Beispiel A002
) sein.
Nun können wir einen Ordner auswählen:
>A002 SELECT "inbox" <* 1 EXISTS <* OK [UNSEEN 1] Message 1 is first unseen <* OK [PERMANENTFLAGS (\Deleted \Seen \Answered)] <* OK [UIDVALIDITY 1] <* FLAGS (\Answered \Flagged \Deleted \Seen \Draft) <A002 OK Completed [READ-WRITE]"`inbox"' ist der Standard-Ordner, "`Posteingang"'. Aus der Meldung können wir sehen, dass eine Nachricht noch neu ist (
UNSEEN 1
).
Bevor wir allerdings die Nachricht herunterladen, können wir schauen, wie groß die Mail (wie bei POP3 angegeben in Octets, also Bytes) ist:
>A003 FETCH 1 RFC822.SIZE <* 1 FETCH (RFC822.SIZE 2247) <E1 OK Completed
Nun können wir die Übertragung des Headers der Mail einleiten:
>A004 FETCH 1 RFC822.HEADER <* 1 FETCH (RFC822.HEADER {1446} <Received: from [204.126.2.42] (helo=gentoo.org) < by mx22.web.de with smtp (WEB.DE 4.99 #420) < id 19iCSL-0008FU-00 < for iblech@web.de; Thu, 31 Jul 2003 14:22:53 +0200 <Received: (qmail 1148 invoked by uid 1002); 31 Jul 2003 <Mailing-List: contact gentoo-user-help@gentoo.org <From: "Fellipe Weno" <fellipe@eiconbrasil.com.br> <To: <gentoo-user@gentoo.org> <Subject: Re: [gentoo-user] winex dont run < <) <A004 OK CompletedHier wird das Ende mit einer
)
(runde Klammer zu) markiert.
Auch der Body der Mail ist schnell geholt:
>A005 FETCH 1 BODY.PEEK[TEXT] <* 1 FETCH (BODY[TEXT] {873} <i dont need notepad i wanna run diablo 2 game... but i get <it work i get source from cvs tree and compile it and its <work fine =) <thank's < <-- <gentoo-user@gentoo.org mailing list < <) <A005 OK CompletedHätten wir die gesamte Mail auf einmal holen wollen, hätten wir auch
>A005 FETCH 1 RFC822benutzen können.
Nun kann die Mail gelöscht (obwohl das bei IMAP, wie oben erwähnt, eher unüblich ist) werden:
>A006 STORE 1 +FLAGS (\Deleted) >* 1 FETCH (FLAGS (\Deleted)) <A006 OK CompletedMit diesem Befehl setzen wir den Status der Mail auf "`zum Löschen bereit"'. Mit
>A007 EXPUNGE <* 1 EXPUNGE <OK EXPUNGE completedwird die Mail dann endgültig gelöscht. Nachdem die Mail gelöscht ist, verschieben sich auch die Nummern der Mails nach vorne, das heißt Nachricht Nummer 2 ist nach der Löschaktion die erste Nachricht.
Mit LOGOUT
beenden wir die Verbindung:
<A008 LOGOUT >* BYE LOGOUT received >A008 OK Completed
Befehl | Wirkung |
LOGIN "name" "pass" |
Login |
SELECT "order" |
Wechsel in neuen Ordner |
FETCH nummer RFC822.SIZE |
Anzeigen der Größe einer Mail |
FETCH nummer RFC822.HEADER |
Anzeigen des Headers einer Mail |
FETCH nummer BODY.PEEK[TEXT] |
Anzeigen des Body einer Mail |
FETCH nummer RFC822 |
Anzeigen der gesamten Mail |
STORE nummer +FLAGS (\Deleted) |
Zum Löschen markieren |
EXPUNGE |
Alle als gelöscht markierte Mails löschen |
LOGOUT |
Verbindung schließen |
Mit IMAP steht Telnettern nun ein weiteres Protokoll zum Abholen von Mails zur Verfügung. Eine komplette Beispielsitzung findet sich