|
|
Im folgenden werden einzugebende Kommandos und Daten fett
gedruckt, die Antworten vom Server erscheinen in dieser
Schrift.
telnet Adresse_des_Mailservers 143
baut eine Verbindung zum Mailserver auf. Darauf sollte der Server etwa
wie folgt reagieren.
Connected to Name_des_Mailservers
Escape chracter is '^]'
* OK Server_Software server ready
Dann kann man sich mit
a001 LOGIN username password
a001 OK User logged in
authentifizieren.
Dabei ist das a001 ein sogenannte Token, das beim IMAP-Protokoll vor
jedem Komando mitgesendet werden muss. Der Hintergrund ist, das bei IMAP
(theoretisch) mehrer Kommandos asynchron nebeneinander abgearbeitet werden
können.
In diesem Fall dient das Token dazu die Antworten den Kommandos zuordnen
zu können. In diesem Howto verwende ich a + fortlaufende Nummer als
Token jeder andere kurze String sollte ebenfalls funktionieren.
Mit a002 SELECT INBOX wählt man die Mailbox der angemeldeten
User aus. Der Server antwortet mit
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 0 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1081606290]
* OK [UIDNEXT 10]
a002 OK [READ-WRITE] Completed
Es sind also keinen E-Mail in diesem Ordner vorhanden.
Ein a003 EXAMINE INBOX liefert die fast identische Antwort
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS ()]
* 0 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1081606290]
* OK [UIDNEXT 12]
a003 OK [READ-ONLY] Completed
Ein a004 LIST "" * zählt alle Unterordner auf.
* LIST () "." "INBOX"
* LIST () "." "INBOX.normal"
* LIST () "." "INBOX.spam"
* LIST () "." "INBOX.wichtig"
a004 OK Completed (0.010 secs 5 calls)
Ein a005 SELECT INBOX.normal wechselt in den angegeben Ordner.
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 9 EXISTS
* 1 RECENT
* OK [UNSEEN 1]
* OK [UIDVALIDITY 1081607793]
* OK [UIDNEXT 322]
a005 OK [READ-WRITE] Completed
In diesem Unterordner sind also 9 E-Mails enthalten, 1 davon ist neu und
noch ungelesen.
Auch hier erkennt man eine Besonderheit im Umgang mit IMAP-Servern. Üblicherweise werden bei einem IMAP-Zugang die E-Mails nicht zum Client heruntergeladen und dort gespeichert, sondern verbeleiben auf dem Server, auch nachdem sie gelesen sind. Der Client hällt (meist) nur einen Cache mit dem dem Mail-Header (den MEta-Informationen in der E-Mail) vor. Der Vorteil ist, das man auch wenn man von einen anderen Client-Rechner auf sein Postfach zugreift, alle E-Mail zur Verfügung hat.
Ein a006 FETCH 9 BODY[] gibt die 9. E-Mail aus.
* 5 FETCH (BODY[] {Größe}
Mailheader inclusive
Recieved: from...
by ....
Date: Absendedatum
Message-Id: msgid
From: Absender
To: Empfänger
Subject: Betreff
Mailtext...
a006 OK Completed
Wenn man alle E-Mail gelesen hat, meldet man sich mit
a007 LOGOUT ab. Der Server verabschiedet sich mit
* BYE LOGOUT received
a007 OK Completed
und telnet meldet
Connection closed by foreign host.
Außerdem ist das a008 NOOP Kommando recht nütlich. Das Kommando wird vom Server mit einem a008 OK Completed quitiert, auf das evtl. neue Status-Meldungen folgen, falls etwa in der Zwischenzeit neue E-Mail angekommen sind. Außerdem wird der idle-Timeout zurückgestetzt, d.h. man kann mit regelmäsigen NOOP-Kommandos verhindern, das die Verbindung wegen Inaktivität getrennt wird.