předcházející následující

Internet Message Access Protocol


Kapitola 2. Základní vlastnosti protokolu IMAP

Obsah

2.1. Základní operace
2.2. Stavové kódy odpovědí IMAP serveru

Č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.

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 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

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ě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.

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ěď.




předcházející následující