Post Office Protocol

História

Prvá verzia POP bola vydaná v októbri 1984. Štandardizovaná je v RFC dokumente 918, skladá sa z piatich strán, autorom je Joyce Reynolds. O päť mesiacov neskôr bola vydaná druhá verzia POP2 (RFC 937 – 24 strán), rozdiel oproti POP1 bol hlavne v komunikácií medzi klientom a vzdialeným serverom. Prvé dve verzie boli určené len k stiahnutiu a následnému odstráneniu e-mailu zo servera. V roku 1994 bola štandardizovaná tretia a zatiaľ posledná verzia POP3 (RFC 1725 – 18 strán), táto verzia je oproti predchádzajúcim dvom verziám značne odlišná. Kým predchádzajúce verzie pracovali na princípe „push“, to znamená, server odošle dáta klientovi, verzia POP3 pracuje na „pull“ princípe, kedy klient požaduje dáta od servera. Táto verzia umožňuje oproti prvým dvom verziám značné množstvo voliteľných nastavení, ako napríklad možnosť stiahnuť iba hlavičky e-mailov. V dnešnej dobe sa používa výhradne POP3, POP2 je využívaný v zanedbateľnom množstve.

Ako funguje

POP3 funguje na „pull“ princípe, to znamená, že klient odošle na vzdialený server pomocou TCP/IP spojenia požiadavku, aby mu server preposlal e-maily ktoré sa nachádzajú na účte užívateľa a následne, ak nie je klient nastavený inak, e-maily odstráni. POP3 je výhodný pre užívateľov ktorí nemajú stály resp. majú časovo obmedzený prístup k internetu (napr. dial-up). V takomto prípade stačí aby sa užívateľ pripojil na internet, pomocou klienta príjme e-maily zo servera a následne sa odpojí. Pre niektorých užívateľov využívajúcich POP3, môže byť nevýhodou nemožnosť filtrovania prijatých e-mailov, to znamená že užívateľ príjme aj nevyžiadané spravy tzv. spam.

Bezpečnosť

Aj keď POP3 je samostatne nezabezpečený protokol, v súčasnosti je dostatočne bezpečný, ale väčšina bezpečnostných prvkov závisí od podpory e-mailového klienta a vzdialeného servera. V predvolených nastaveniach sú všetky informácie prenášané nezašifrované, čo vedie k možnosti jednoducho odchytiť prihlasovacie údaje k účtu užívateľa alebo prenášané e-maily. Veľké množstvo dnes používaných klientov a serverov podporuje šifrovanie pomocou SSL (Secure Socket Layer) alebo modernejšieho TLS (Transport Layer Security), ktoré šifruje informácie 128 resp. 512 bitovým kľúčom. Spojenie POP3 a SSL/TLS sa zvykne označovať ako POP3S.

Komunikácia klienta so serverom

Komunikácia e-mailového klienta so vzdialeným serverom pomocou POP3 prebieha v troch fázach:
1. Fáza spojenia – Server načúva na TCP porte 110 resp. 995 pre zabezpečené SSL spojenie. Klient otvorí spojenie a čaká na odpoveď servera.
S: <server načúva na TCP porte 110/995>

C: <otvorenie spojenia>

S: +OK POP3 server ready <adresa vzdialeného servera >
2. Fáza autorizácie – Server čaká na prihlasovacie údaje od klienta (prihlasovacie meno a heslo). Klient odosiela údaje a čaká na odpoveď.
C: USER <meno>

S: +OK User accepted

C: PASS <heslo>

S: +OK Pass accepted
3. Fáza aktualizácie – Po zadaní správnych prihlasovacích údajov, server zisťuje počet nových e-mailov a súčet ich veľkosti v oktánoch.
S: +OK <meno>'s maildrop has <počet nových sprav> messages <veľkosť sprav>

Nasledujú príkazy ktoré posiela klient na server.
- STAT - Príkaz na zistenie aktuálneho stavu komunikácie. Server odpovie a odošle údaje o počte nových e-mailov a súčte ich veľkostí v oktánoch.
C: STAT

S: +OK <počet nových sprav> <veľkosť sprav>
- LIST - Príkaz na zistenie počtu nových sprav a ich veľkosti v oktánoch. Server odpovedá, odošle údaje a po dokončení ukončí príkaz bodkou na prázdnom riadku.
C: LIST

S: +OK <počet nových sprav> messages <veľkosť sprav>

S: 1 <veľkosť správy>

S: .
- RETR [par] - Príkaz na prijatie e-mailu zo servera, obsahuje parameter s poradovým číslom e-mailu. Server odpovedá, odošle údaj o veľkosti správy v oktánoch a odošle správu klientovi, po dokončení ukončí príkaz bodkou na prázdnom riadku.
C: RETR 1

S: +OK <veľkosť správy>

S: <server odošle správu klientovi>

S: .
- DELE [par] - Príkaz na odstránenie e-mailu zo servera, obsahuje parameter s poradovým číslom e-mailu. Server odpovedá a odstráni e-mail.
C: DELE 1

S: +OK message 1 deleted
- QUIT - Príkaz na uzatvorenie spojenia medzi klientom a serverom.
C: QUIT

S: +OK dewey POP3 server signing off (maildrop empty)
Klient uzavrie spojenie so serverom.

Ďalšie povinné príkazy ktoré musí mať POP3 konfigurované sú:
- NOOP - Príkaz na otestovanie spojenia.
C: NOOP

S: +OK
- RSET - Príkaz na predčasné uzatvorenie spojenia.
C: RSET

S: +OK maildrop has <počet nových sprav> messages <veľkosť sprav>

POP3 server môže mať nakonfigurované ešte tri voliteľné príkazy (APOP, TOP a UIDL). Na každý príkaz klienta môže server odpovedať iba kladne „+OK“ alebo záporne „-ERR“.