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.