Obsah
Časová náročnost kapitoly: 15 minut
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 na rozdí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 protokolu 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 a 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.
obr.1
Protokol IMAP je popsán jako stavový automat
V protokolu IMAP může klient načtené
zprávy editovat. Protokol IMAP přiřazuje každé zprávě jedinečný
identifikátor, který je platný mezi všemi relacemi IMAP, které může
jeden klient ustavit. Tato vlastnost je nezbytná pro správnou
synchronizaci poštovních schránek.
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 je VÝ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
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ědi, znamená, že není potřeba zadávat příkaz LOGIN
BYE - vystupuje vždy jako součást neoznačené odpovědi, 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.
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ěď.