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

Post Office Protocol verze 3 - POP3


Kapitola 2. Základní vlastnosti protokolu POP3

Obsah

2.1. Základní funkce

Časová náročnost kapitoly: 20 minut

    V tomto textu se budeme zabývat použitím protokolu POP verze 3, zkráceně POP3. Protokol POP3 je emailový protokol, který se dá použít v offline modelu architektury klient/server elektronické pošty. Podrobněji se tímto protokolem zabývá dokument RFC 1939 [2].

    Protokol pracuje v režimu offline. Znamená to, že klient se připojí k serveru, zjistí informace o nové poště. Server klientu pošle informace o schránce konkrétního uživatele. Znamená to, že protokol není anonymní. Klient může zjistit počet emailových zpráv na serveru, jejich velikost. Některé implementace umožňují načtení části zprávy. Klient rozhodne, které zprávy nahraje. Uživatel emailového klienta nemá možnost tento proces ovlivnit a klienti obvykle nahrávají celý obsah schránky. S nahranými zprávami je potom možno pracovat v offline režimu, kdy už klient nepotřebuje komunikaci se serverem.

    


download
vysoká kvalita       nízká kvalita


    POP3 klient posílá na server příkazy a zpět přicházejí odpovědi. Příkazy tvoří jeden řádek ASCII textu, který vždy začíná jedním z množiny klíčových slov. Odpověď se skládá z jednoho nebo více řádků, první řádek odpovědi je vždy uvozen indikátorem stavu (stav +OK indikuje, že příkaz proběhl v pořádku, -ERR znamená, že v průběhu realizace příkazu došlo k chybě) následovaným textovým popisem. Víceřádková odpověď končí řádkem, který obsahuje pouze znak tečky a znaky <CRLF>.

    Protokol POP3 je popsán jako stavový automat, může se nacházet celkem ve třech stavech. Do stavu autorizačního se přepne ve chvíli, kdy se uskuteční spojení mezi klientem a serverem na protokolu TCP. V tomto stavu POP3 server čeká na identifikaci klienta. Ten zašle informace o uživateli, název jeho schránky a heslo. Po ověření hesla se automat přepne do stavu transakčního, v tomto stavu probíhá práce se schránkou uživatele. Po ukončení práce se schránkou přechází POP3 server do stavu aktualizačního, ve kterém se fyzicky odstraní veškeré zprávy, které byly v transakčním stavu označené jako smazané a ukončí se TCP spojení. Každý příkaz protokolu POP3 je možné zadat jen v určitém stavu (stavech).

2.1. Základní funkce
    Nyní se podívejme, jak tento protokol POP3 pracuje po technické stránce.
Základem je protokol TCP/IP. Server POP3 naslouchá na portu 110 protokolu TCP. Toto se dá snadno ověřit.

Cvičení
    Spusťte Telnet a připojte se na hostitele pop3.seznam.cz port 110
Pokud vše proběhlo v pořádku, přijde vám jako odpověď pozdrav
+OK Hello, this is Seznam POP3 server

Poznámka
    Aby přišla nějaká odpověď, je potřeba být připojen do sítě Internet. Toto připojení bude potřebné i u dalších příkladů bez upozornění. Proto vždy, pokud není výsledek podle předpokladů, ověřte, že vaše internetové připojení je v pořádku a že pracuje i počítač, na který se snažíte připojit. Tento příklad je možné provést i bez připojení na Internet, jen vyžaduje, aby v lokální síti pracoval POP3 server.

    Příkazy protokolu POP3 jsou klíčová slova, u kterých není brán ohled na velikost písmen (jsou case insenzitive). Příkaz je možné následovat parametry. Všechny příkazy jsou ukončeny párem znaků <CRLF> (jejich ASCII kód je 13 a 10).

Vlastnosti klíčových slov jsou následující
    - jsou složeny z viditelných ASCII znaků
    - od parametrů jsou odděleny jedním znakem mezery (ASCII kód je 32)
    - jsou dlouhé 3 nebo 4 znaky

Vlastnosti parametrů
    - jsou složeny z viditelných ASCII znaků
    - od ostatních parametrů jsou odděleny jedním znakem mezery (ASCII hodnota je 32)
    - délka jednoho parametru je maximálně 40 znaků

Vlastnosti odpovědí
    - obsahují textový indikátor stavu, který může být následován doplňujícími informacemi
    - indikátor stavu +OK a znamená, že požadovaná operace proběhla v pořádku
    - indikátor stavu -ERR a znamená, že při požadované operaci nastala chyba
    - odpověď může být víceřádková, v tom případě je na začátku prvního řádku status, každý řádek ukončen dvojicí znaků <CRLF> a poslední řádek znaky tečkou (ASCII hodnota je 46) následovanou dvojicí znaků <CRLF>
    - do řádku, který sice začíná tečkou, ale není koncovým řádkem, se doplní na začátek řádku jedna mezera navíc, kterou klient opět vypustí. Tomuto postupu se říká doplnění tečky.

    Server musí záporně odpovědět, pokud přečte neznámý nebo neimplementovaný příkaz, syntakticky špatně zadaný příkaz, nebo pokud je příkaz v daném stavu serveru nepřístupný. Server může obsahovat konstrukci pro automatické odhlášení v případě neaktivity klienta. Automatické odhlášení může nastat nejdříve po desáté minutě. Při automatickém odhlášení server nepřechází do aktualizačního stavu, ale rovnou ukončuje TCP spojení - zprávy označené jako smazané se ze serveru nemažou.

    Každá implementace POP3 serveru musí obsahovat množinu všech povinných příkazů. Ty jsou popsány v následujících třech kapitolách. Kromě těchto příkazů existují ještě příkazy doplňkové umožňující efektivnější práci s poštou. Tyto příkazy jsou popsány v textu dále. Ne každá implementace POP3 serveru je ale musí nezbytně obsahovat. Proto doporučuji s nimi pro případný vývoj klientských aplikací nepočítat.