2.1. Základní funkce
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.
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.