Protokol IMAP, slouží obdobně jako protokol POP3, k načítání zpráv elektronické pošty ze serveru na stranu klientské aplikace. Protokol IMAP je narozdíl od protokolu POP3 mnohem složitější a nabízí mnohem větší komfort pro práci se zprávami. Snad nejdůležitější rozdíl od POP je možnost práce se zprávami na straně serveru. Klient může zprávy přesouvat mezi schránkami, editovat zprávy, ukládat, načítat. Protokol IMAP je optimalizován pro práci s mobilními zařízeními. Umožňuje selektivní načítání emailových zpráv, nebo dokonce jejich částí. Tato vlastnost je nedocenitelná při přístupu k poštovní schránce po pomalé telefonní lince (například z mobilního telefonu). Protokol IMAP popisuje dokument RFC 2060 [2], a to jako stavový automat viz obr.1 . V každém z definovaných stavů smí klient poštovnímu serveru zadat určitou omezenou množinu příkazů protokolu IMAP. Některé příkazy způsobují změnu stavu automatu.
2.1. Základní operace
Příkazy protokolu IMAP se skládají z identifikátoru a jména příkazu, za kterým následují případné argumenty. Server vrací jako odpověď značku. Podle této značky
může klient spojit danou odpověď s původním příkazem. V protokolu IMAP může klient zadat sekvenci příkazů a nemusí čekat na odpověď. Proto je potřeba odpovědi zvlášť
označit. Server může vygenerovat odpověď, která není spojená s žádným konkrétním rozpracovaným příkazem. Takovéto odpovědi se nazývají neoznačené odpovědi a
používá se pro ně speciální značka - hvězdička (*).
U každého příkazu protokolu IMAP jsou popsány tři vlastnosti. První vlastnost je PARAMETRY, tato vlastnost
popisuje, jaké parametry a v jakém formátu se zadávají při odesílání příkazu. Druhou vlastností jsou DATA. Data popisují doplňující
informace odesílané jako součást dotazu nebo odpovědi. A třetím parametrem jeVÝSLEDEK operace. Za každým příkazem protokolu IMAP
následuje krátký praktický příklad dotazu a odpovědi. V těchto příkladech dejte pozor zejména na data, která nejsou součástí příkazu ani
výsledku, ale přitom buď příkaz nebo výsledek doplňují.
Příklad:
C-Příkaz: A142 SELECT INBOX
S-Data: * 172 EXISTS
S-Data: * 1 RECENT
S-Data: * OK [UNSEEN 12] Message 12 is first unseen
S-Data: * OK [UIDVALIDITY 3857529045] UIDs valid
S-Data: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S-Data: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited
S-Opoveď: A142 OK [READ-WRITE] SELECT completed
Základem protokolu IMAP je protokol TCP. IMAP server naslouchá na portu 143 protokolu TCP.
Toto se dá snadno ověřit.
Cvičení
Spusťte Telnet a připojte se na hostitele imap.jinak.cz port 143
Pokud vše proběhlo v pořádku, přijde vám jako odpověď pozdrav
* OK snail.infocity.cz IMAP4rev1 v11.237 server ready
2.2. Stavové kódy odpovědí IMAP serveru
Odpověď IMAP serveru se skládá z tagu (označení odpovědi kvůli spojení s odesílaným příkazem), stavového kódu a vlastního
obsahu odpovědi. Pokud je odpověď neoznačena, nevztahuje se k žádnému konkrétnímu odeslanému příkazu.
Výsledek příkazu protokolu IMAP může být jeden z následujících stavů:
OK - znamená úspěšné dokončení dříve odeslaného příkazu, nebo doplňující údaje k neoznačené odpovědi.
NO - pokud je odpověď označená, znamená neúspěšné dokončení předchozího příkazu. Jako neoznačená slouží k vyjádření varovných
hlášení
BAD - znamená, je-li odpověď označena, nesprávný příkaz, nebo argument, bez označení znamená závažný problém v protokolu
PREAUTH - vystupuje vždy jako součást neoznačené odpověďi, znamená, že není potřeba zadávat příkaz LOGIN
BYE - vystupuje vždy jako součást neoznačené odpověďi, znamená, že server ukončil relaci
Příklad požadavku a odpovědi:
Klient: A003 CREATE owatagusiam/
Server: A003 OK CREATE completed
A003 znamená označení (tag) příkazu, nebo v případě serveru označení na který příkaz odpovídá.
Protokol IMAP umožňuje práci s množinami zpráv. Množina zpráv se identifikuje
např 1:100,, což znamená, že pracujeme s množinou zpráv, jejichž sekvenční čísla jsou 1,2,3,.....,99,100.
2.3. Cvičení
Jaký je zásadní rozdíl mezi protokoly POP3 a IMAP?
Jaká jsou pravidla pro syntaxi požadavků na server a odpovědí serveru? Napište obecně podle těchto pravidel dotaz a odpověď.