Network Working Group J. Myers Request for Comments: 1939 Carnegie Mellon STD: 53 M. Rose Anterior: 1725 Dover Beach Consulting, Inc. Categoria: Protocol standard Mai 1996 Post Office Protocol - Versiunea 3 Statutul acestui document Acest document specifica un protocol Internet standard pentru comunitatea Internet si solicita discutii si sugestii pentru imbunatatire. Informatii despre standardizarea si statutul acestui protocol se gasesc in editia curenta din "Internet Official Protocol Standards" (STD1). Distributia acestui articol nu are restrictii. Cuprins 1. Introducere ..................................................... 2 2. O scurta digresiune ........................................ 2 3. Operatii de baza ............................................. 3 4. Etapa de AUTORIZATIE .................................. 4 Comanda QUIT ................................................ 5 5. Etapa de TRANZACTIE .................................... 5 Comanda STAT ................................................ 6 Comanda LIST .................................................. 6 Comanda RETR ............................................... 8 Comanda DELE ............................................... 8 Comanda NOOP .............................................. 9 Comanda RSET ............................................... 9 6. Etapa de ACTUALIZARE ................................. 10 Comanda QUIT ................................................ 10 7. Comenzile POP3 optionale ............................ 11 Comanda TOP ................................................. 11 Comanda UIDL ................................................ 12 Comanda USER .............................................. 13 Comanda PASS ............................................... 14 Comanda APOP ............................................... 15 8. Scalarea si consideratii operationale ........... 16 9. Rezumatul comenzilor POP3 ......................... 18 10. Exemple de sesiuni POP3 .......................... 19 11. Formatul mesajului ...................................... 19 12. Referinte ...................................................... 20 13. Consideratii de securitate ............................ 20 14. Confirmare .............................................. 20 15. Adresele autorilor ........................................ 21 Anexa A. Deosebirile fata de RFC 1725 ............. 22 Myers & Rose Protocol standard [Pagina 1] RFC 1939 POP3 Mai 1996 Anexa B. Index pentru comenzi ...................... 23 1. Introducere In anumite tipuri de noduri mai mici din Internet este de cele mai multe ori neeficient mentinerea unui sistem de transport mesaje (MTS). De exemplu, o statie poate sa nu aiba suficiente resurse(cicluri, spatiu pe disc) pentru a rula un server SMTP [RFC821] si sa fie mentinut rezident un sistem local de posta electronica care sa ruleze in permanenta. Similar, poate fi scumpa (sau chiar imposibila) mentinerea unui computer personal conectat la o retea de tip IP pentru o perioada mare de timp (nodului ii lipseste resursa numita "conexiune"). In ciuda acestui fapt, este important sa folosesti mailul pe aceste noduri mai mici, si de obicei ele accepta un agent utilizator(UA) care ajuta procesele ce manevreaza mailul. Pentru a rezolva aceasta problema, un nod care suporta o entitate MTS ofera serviciul de conectare la mail acestor noduri mai putin dotate. Protocolul Post Office - Versiunea 3 (POP3) permite unei statii sa se conecteze dinamic la mail de pe un server intr-un mod cat mai simplu. De obicei, asta inseamna ca protocolul POP3 permite unei statii sa acceseze mailul pe care serverul il mentine pentru client. POP3 nu e proiectat sa ofere operatii avansate de manipulare a mailului pe server; in mod normal, mailul este descarcat si apoi sters. Un alt protocol mai avansat (si mai complex), IMAP4, este discutat in [RFC1730]. In continuarea acestui studiu, termenul "gazda client" se refera la o gazda ce foloseste serviciul POP3, in timp ce termenul "server" se refera la o gazda ce ofera servicii POP3. 2. O scurta digresiune Acest studiu nu specifica cum un client introduce mail in sistemul de transport, desi o metoda consecventa cu filosofia acestui studiu este prezentata aici: Cand agentul utilizator de pe un client doreste sa introduca un mesaj in sistemul de transport, stabileste o conexiune SMTP la gazda dorita si ii trimite tot mailul. Gazda respectiva poate fi, dar nu obligatoriu, server POP3 pentru client. Bineinteles, gazda trebuie sa accepte mail cu adrese destinatare arbitrare, aceasta functionalitate nu este ceruta de toate serverele SMTP. Myers & Rose Protocol standard [Pagina 2] RFC 1939 POP3 Mai 1996 3. Operatii de baza Initial, serverul initiaza serviciul POP3 ascultand la portul TCP 110. Cand un client doreste sa foloseasca acest serviciu, stabileste o conexiune TCP cu serverul. Cand s-a stabilit conexiunea, serverul POP3 ii trimite un mesaj de intampinare. Clientul si serverul POP3 schimba comenzi, respectiv raspunsuri pana cand conexiunea se inchide sau e anulata. Comenzile POP3 nu tin cont de majuscule si sunt urmate uneori de unul sau mai multe argumente. Toate comenzile sunt terminate de o pereche CRLF. Comenzile si argumentele sunt formate din caractere ASCII tiparibile. Comenzile si argumentele sunt separate fiecare de un singur caracter spatiu. Comenzile au trei sau patru caractere. Fiecare argument are maxim 40 de caractere. Raspunsurile in POP3 constau dintr-un indicator de stare si un cuvant cheie urmat uneori de informatii suplimentare. Toate raspunsurile sunt urmate de o pereche CRLF. Ele constau din maxim 512 caractere, incluzand terminatia CRLF. Exista doi indicatori curenti: unul pozitiv ("+OK") si unul negativ ("-ERR"). Serverele trebuie obligatoriu sa trimita indicatorii "+OK" si "-ERR" cu majuscule. Raspunsurile pentru anumite comenzi au mai multe linii. In aceste situatii, care sunt indicate clar mai jos, dupa trimiterea primei linii a raspunsului si un CRLF, sunt trimise toate liniile suplimentare, fiecare terminata de o pereche CRLF. Dupa trimiterea tuturor liniile se trimite o linie finala constand din octetul de sfarsit (avand codul zecimal 046, ".") si o pereche CRLF. Daca exista linii care se termina cu octetul de sfarsit, ele vor avea atasat in fata inca un octet de sfarsit. Deci un raspuns de mai multe linii este terminat cu cinci octeti "CRLF.CRLF". La examinarea unui raspuns pe mai multe linii, clientul verifica daca linia incepe cu un octet de terminare. Daca da si daca octetii care urmeaza sunt diferiti de CRLF, primul octet al liniei (cel de sfarsit) este indepartat. Daca insa dupa octetul de sfarsit urmeaza CRLF, raspunsul din partea serverului POP3 s-a terminat si linia continand ".CRLF" nu este considerata parte a raspunsului. O sesiune POP3 trece printr-o serie de stari de-a lungul existentei sale. Odata deschisa conexiunea TCP si trimis mesajul de intampinare de catre server, sesiunea deschide starea de AUTORIZATIE. In aceasta etapa, clientul trebuie sa se identifice serverului POP3. Daca clientul se identifica cu succes, serverul incarca resursele asociate cu mailul clientului si sesiunea trece in etapa de TRANZACTIE. In aceasta stare clientul solicita actiuni din partea serverului. Myers & Rose Protocol standard [Pagina 3] RFC 1939 POP3 Mai 1996 Cand clientul da comanda QUIT, sesiunea trece in starea de ACTUALIZARE. In aceasta etapa, serverul POP3 elibereaza toate resursele obtinute in etapa de TRANZACTIE si spune la revedere. Sesiunea TCP se inchide. Un server TREBUIE sa raspunda la comenzi necunoscute, neimplementate sau avand greseli sintactice cu un indicator de stare negativ. Un server TREBUIE sa raspunda la o comanda initiata atunci cand sesiunea se afla intr-o stare incorecta cu un indicator de stare negativ. Nu exista o metoda generala pentru un client sa deosebeasca intre un server care nu implementeaza o comanda optionala si un server care nu vrea sau nu poate sa proceseze comanda. Un server POP3 POATE avea un temporizator de expirare datorita inactivitaii. Un asemenea temporizator TREBUIE sa aiba durata de cel putin 10 minute. Primirea unei comenzi oarecare in acest interval terbuie sa fie suficienta pentru a reseta temporizatorul. Cand termenul expira, sesiunea NU intra in starea de ACTUALIZARE -- serverul trebuie sa inchida conexiunea TCP fara sa stearga mesaje sau sa trimita raspunsuri clientului. 4. Etapa de AUTORIZATIE Dupa deschiderea unei conexiuni TCP de catre un client POP3, serverul POP3 initiaza un salut de o linie. Acest salut poate fi orice raspuns pozitiv. De exemplu: S: +OK POP3 server ready Sesiunea POP3 se afla in acest moment in etapa de AUTORIZATIE. Acum clientul trebuie sa se identifice serverului POP3. Doua mecanisme posible pentru aceasta operatie sunt descrise in acest document, comanda formata din USER si PASS si comanda APOP. Ambele mecanisme sunt descrise mai jos in acest document. Mecanisme suplimentare de identificare sunt descrise in [RFC1734]. Desi nu exista un unic mecanism de identificare pentru toate serverele POP3, totusi orice server POP3 trebuie sa aiba un astfel de mecanism. Odata ce serverul a identificat clientul printr-un mecanism oarecare de autorizatie, serverul POP3 obtine un acces exclusiv la mail, necesar pentru a preveni ca mesajele sa fie modificate sau sterse inainte ca sesiunea sa intre in starea de ACTUALIZARE. Daca se obtine acces exclusiv, serverul POP3 raspunde cu un indicator de stare pozitiv. Sesiunea trece in acest moment in starea de TRANZACTIE, cu nici un mesaj marcat pentru stergere. Daca dintr-un motiv mailul nu poate fi deschis (de exemplu nu poate fi obtinut un acces exclusiv, clientul nu are acces la mailul adecvat sau mailul nu poate fi parsat), serverul POP3 raspunde cu un indicator de stare negativ.(Daca a fost obtinut un acces Myers & Rose Protocol standard [Pagina 4] RFC 1939 POP3 May 1996 exclusiv dar serverul raspunde cu un indicator de stare negativ, serverul POP3 trebuie sa elibereze accesul exclusiv pentru a respinge comanda.) Dupa returnarea unui indicator de stare negativ, serverul poate inchide sesiunea. Daca serverul nu inchide conexiunea, clientul poate fie sa initieze o noua comanda de identificare si sa reinceapa, fie sa dea comanda QUIT. Dupa ce serverul POP3 a deschis mailul, asigneaza un numar fiecarui mesaj si retine marimea fiecarui mesaj in octeti. Primului mesaj din lista de mesaje ii este asignat numarul 1, celui de-al doilea mesaj ii este asignat numarul 2 si tot asa, mesajului n ii este atribuit numarul n. In comenzile si raspunsurile POP3, toate numerele si marimile mesajelor sunt exprimate in baza 10. Iata sumarul comenzii QUIT utilizata in stare de AUTORIZATIE: QUIT Argumente: nu Restrictii: nu Raspunsuri posibile: +OK Exemple: C: QUIT S: +OK dewey POP3 server signing off 5. Etapa de TRANZACTIE Odata ce clientul s-a identificat serverului POP3 cu succes si serverul a blocat si deschis lista de mesaje, sesiunea POP3 se afla in etapa de TRANZACTIE. Acum clientul poate sa initieze in mod repetat orice comanda POP3. Dupa fiecare comanda, serverul POP3 da un raspuns. Eventual, clientul initiaza comanda QUIT si sesiunea POP3 intra in starea de ACTUALIZARE. Myers & Rose Protocol standard [Pagina 5] RFC 1939 POP3 Mai 1996 Iata comenzile POP3 valide in starea de TRANZACTIE: STAT Argumente: nu Restrictii: pot fi date doar in starea de TRANZACTIE Observatii: Serverul POP3 da un raspuns pozitiv intr-o linie continand informatii despre mail. Aceasta linie este numita "lista depusa" pentru acea lista de mesaje. Pentru a simplifica parsarea, toate serverele POP3 trebuie sa foloseasca un anumit format pentru listele depuse. Raspunsul pozitiv consta din "+OK" urmat de un singur spatiu, numarul de mesaje din lista, un singur spatiu si marimea listei in octeti. Acest studiu nu precizeaza ce urmeaza dupa marimea listei. Implementarile minime ar trebuie sa termine acea linie a raspunsului cu o pereche CRLF. Implementarile mai avansate pot include alte informatii. NOTA: Acest studiu descurajeaza implementarile sa includa informatii suplimentare in lista depusa. Alte facilitati optionale care permit clientilor sa parseze mesajele din lista sunt discutate ulterior . Mesajele marcate pentru stergere nu sunt considerate la nici un total. Raspunsuri posibile: +OK nn mm Exemple: C: STAT S: +OK 2 320 LIST [msg] Argumente: un numar de mesaj (optional) care, daca exista, poate sa nu se refere la un mesaj marcat. Myers & Rose Protocol standard [Pagina 6] RFC 1939 POP3 Mai 1996 Restrictii: pot fi date doar in etapa de TRANZACTIE Observatii: Daca a fost dat un argument, serverul POP3 initiaza un raspuns pozitiv intr-o linie ce contine informatii despre acel mesaj. Aceasta linie se numeste "scanarea" respectivului mesaj. Daca nu a fost dat nici un argument si serverul POP3 da un raspuns pozitiv, acesta consta in mai multe linii. Dupa primul +OK, pentru fiecare mesaj din lista, serverul POP3 raspunde intr-o linie ce contine informatii pentru acel mesaj. Aceasta linie mai este numita si "scanarea" acelui mesaj. Daca nu sunt mesaje in lista de mesaje, serverul POP3 raspunde cu nici o scanare-- initiaza un raspuns pozitiv urmat de o linie continand un octet de sfarsit si o pereche CRLF. Pentru a simplifica parsarea, toate serverele POP3 trebuie sa foloseasca un anumit format pentru scanarea listata. O scanare consta din numarul mesajului urmat de un singur spatiu si de marimea exacta a mesajului in octeti. Metodele pentru calcularea exacta a marimii unui mesaj sunt descrise in sectiunea "Formatul mesajului" de mai jos. Acest studiu nu face referire la ce urmeaza in listare dupa marimea mesajului. Implementarile minime ar trebuie sa termine acea linie a raspunsului cu o pereche CRLF. Implementarile mai avansate pot include alte informatii parsate din mesaj. NOTA: Acest studiu descurajeaza implemetarile sa includa informatii suplimentare in scanare. Alte facilitati optionale care permit clientilor sa parseze mesajele din lista depusa sunt discutate ulterior . Mesajele marcate pentru stergere nu sunt listate. Raspunsuri posibile: +OK scan listing follows -ERR no such message Exemple: C: LIST S: +OK 2 messages (320 octets) S: 1 120 Myers & Rose Protocol standard [Pagina 7] RFC 1939 POP3 Mai 1996 S: 2 200 S: . ... C: LIST 2 S: +OK 2 200 ... C: LIST 3 S: -ERR no such message, only 2 messages in maildrop RETR msg Argumente: un numar de mesaj (necesar) care poate sa nu se refere la un mesaj marcat pentru stergere Restrictii: pot fi date doar in starea de TRANZACTIE Observatii: Daca serverul POP3 da un raspuns pozitiv atunci acesta consta in mai multe linii. Dupa primul +OK serverul POP3 trimite mesajul corespunzator numarului de mesaj precizat, fiind atent la octetii corespunzatori caracterului de terminare (pentru raspunsurile cu mai multe linii). Raspunsuri posibile: +OK message follows -ERR no such message Exemple: C: RETR 1 S: +OK 120 octets S: S: . DELE msg Argumente: un numar de mesaj (obligatoriu) care poate sa NU se refere la un mesaj marcat pentru stergere Restrictii: pot fi date doar in starea de TRANZACTIE Myers & Rose Protocol standard [Pagina 8] RFC 1939 POP3 Mai 1996 Observatii: Serverul POP3 marcheaza mesajul pentru stergere. Orice referinta viitoare la numarul de mesaj asociat cu acest mesaj intr-o comanda POP3 genereaza o eroare. Serverul POP3 nu sterge de fapt mesajul decat atunci cand sesiunea intra in starea de ACTUALIZARE. Raspunsuri posibile: +OK message deleted -ERR no such message Exemple: C: DELE 1 S: +OK message 1 deleted ... C: DELE 2 S: -ERR message 2 already deleted NOOP Argumente: nu Restrictii: pot fi date doar in starea de TRANZACTIE Observatii: Serverul POP3 nu face nimic, da doar un raspuns pozitiv. Raspunsuri posibile: +OK Exemple: C: NOOP S: +OK RSET Argumente: nu Restrictii: pot fi date doar in starea de TRANZACTIE Observatii: Daca serverul POP3 a marcat vreun mesaj pentru sterge atunci toate mesajele vor fi nemarcate. Serverul POP3 da un raspuns pozitiv. Myers & Rose Protocol standard [Pagina 9] RFC 1939 POP3 Mai 1996 Raspunsuri posibile: +OK Exemple: C: RSET S: +OK maildrop has 2 messages (320 octets) 6. Etapa de ACTUALIZARE Cand clientul da comanda QUIT din starea de TRANZACTIE, sesiunea POP3 intra in starea de ACTUALIZARE. (Daca clientul da comanda QUIT din starea de AUTORIZATIE, sesiunea POP3 se termina dar NU intra in starea de ACTUALIZARE). Daca sesiunea POP3 se termina din vreun alt motiv decat, sesiunea POP3 NU intra in starea de ACTUALIZARE si NU trebuie sa stearga vreun mesaj din lista de mesaje. QUIT Argumente: nu Restrictii: nu Observatii: Serverul POP3 sterge toate mesajele marcate pentru stergere din lista si raspunde in functie de starea operatiei. Daca apare o eroare, de exemplu o criza de resurse, in timpul stergerii mesajului, lista de mesaje poate avea sterse cateva sau nici unul din mesajele marcate pentru stergere. In nici un caz nu sunt sterse mesajele nemarcate. Indiferent daca stergerea a avut loc cu succes sau nu, serverul elibereaza orice acces exclusiv la lista de mesaje si inchide conexiunea TCP. Raspunsuri posibile: +OK -ERR some deleted messages not removed Exemple: C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) ... C: QUIT Myers & Rose Protocol standard [Pagina 10] RFC 1939 POP3 Mai 1996 S: +OK dewey POP3 server signing off (2 messages left) ... 7. Comenzile POP3 optionale Comenzile POP3 discutate anterior trebuie sa existe in toate implementarile minime ale server POP3. Comenzile POP3 optionale descrise mai jos permit unui client POP3 o libertate mai mare in manevrare mesajelor, pastrand in acelasi timp o implementare simpla a serverului POP3. NOTA: Acest studiu incurajeaza implementarile care suporta aceste comenzi in loc de a dezvolta marirea listelor ..... Pe scurt, filosofia acestui studiu este sa puna inteligenta de partea clientului POP3 si nu a serverului POP3. TOP msg n Argumente: un numar de mesaj (necesar) care poate sa nu se refere la un mesaj marcat pentru stergere, si un numar nenegativ de linii (obligatoriu) Restrictii: pot fi date doar in starea de TRANZACTIE Observatii: Daca serverul POP3 initiaza un raspuns pozitiv, atunci raspunsul dat este pe mai multe linii. Dupa primul +OK, serverul POP3 trimite antetul mesajelor, linia ce separa antetul de corpul mesajului, si apoi numarul de linii din corpului mesajului, fiind atent la caracterul de sfarsit (ca in toate cazurile cu raspunsuri pe mai multe linii). Daca numarul de linii cerut de clientul POP3 este mai mare decat cel din corp, serverul POP3 trimite tot mesajul. Raspunsuri posibile: +OK top of message follows -ERR no such message Exemple: C: TOP 1 10 S: +OK Myers & Rose Protocol standard [Pagina 11] RFC 1939 POP3 Mai 1996 S: S: . ... C: TOP 100 3 S: -ERR no such message UIDL [msg] Argumente: un numar de mesaj(optional), care, daca exista, poate sa NU refere un mesaj marcat pentru stergere Restrictii: pot fi date doar in starea de TRANZACTIE Observatii: Daca a fost dat un argument si serverul POP3 da un raspuns pozitiv, acest raspuns consta intr-o linie continand informatii despre acel mesaj. Aceasta linie este numita "lista id-unica" pentru acel mesaj. Daca nu sunt argumente si serverul POP3 da un raspuns pozitiv, atunci raspunsul dat este pe mai multe linii. Dupa primul +OK, pentru fiecare mesaj din lista, serverul POP3 raspunde cu o linie continand informatii despre acel mesaj. Aceasta linie se numeste "lista id-unica" pentru acel mesaj. Pentru a simplifica parsarea, toate serverele POP3 trebuie sa foloseasca un anumit format pentru listele id-unice. O lista id-unica consta in numarul de mesaj al acelui mesaj, urmat de un spatiu si de id-ul unic al mesajului. Nu urmeaza nici o informatie dupa id-ul unic din lista. Id-ul unic al mesajului este un sir ales arbitrar de server, format din unul pana la 70 de caractere din intervalul 0x21- 0x7E, care identifica in mod unic un mesaj dintr-o lista si care se mentine de-a lungul sesiunilor. Aceasta persistenta este ceruta chiar daca o sesiune se termina fara sa intre in starea de ACTUALIZARE. Serverul ar trebui sa nu refoloseasca un id-unic dintr-o lista data, atat timp cat entitatea care foloseste id-ul unic exista. Mesajele marcate pentru stergere nu sunt listate. Deoarece in general se prefera ca implementarile de servere sa memoreze id-uri unice arbitrare pentru mesajele din lista, Myers & Rose Protocol standard [Pagina 12] RFC 1939 POP3 Mai 1996 aceasta specificare permite ca id-urile unice sa fie calculate ca fiind chei ale mesajelor.Clientii ar trebuie sa poata manipula o situatie in care doua copii identice ale unui mesaj din lista de mesaje au acelasi id-unic. Raspunsuri posibile: +OK urmeaza lista de id-uri unice -ERR no such message Exemple: C: UIDL S: +OK S: 1 whqtswO00WBw418f9t5JxYwZ S: 2 QhdPYR:00WBw1Ph7x7 S: . ... C: UIDL 2 S: +OK 2 QhdPYR:00WBw1Ph7x7 ... C: UIDL 3 S: -ERR no such message, only 2 messages in maildrop USER nume Argumente: un sir ce identifica casuta de mesaje (obligatoriu), care conteaza DOAR pentru server Restrictii: pot fi date doar in starea de AUTORIZATIE dupa intampinarea POP3 sau dupa un insucces al comenzilor USER sau PASS Observatii: Pentru identificare folosind comenzile USER si PASS, clientul trebuie sa foloseasca mai intai comanda USER. Daca serverul POP3 raspunde cu un indicator pozitiv ("+OK"), atunci clientul trebuie sau sa dea comanda PASS pentru a completa identificarea, sau comanda QUIT pentru a termina sesiunea POP3. Daca serverul POP3 raspunde cu un indicator negativ ("-ERR") comenzii USER, atunci clientul poate sa initieza o noua comanda de identificare sau sa dea comanda QUIT. Serverul poate sa dea un raspuns pozitiv chiar daca nu exista o astfel de casuta de mesaje. Serverul poate sa dea un raspuns negativ daca casuta exista, dar nu permite identificarea parolei in mod plaintext. Myers & Rose Protocol standard [Pagina 13] RFC 1939 POP3 Mai 1996 Raspunsuri posibile: +OK name is a valid mailbox -ERR never heard of mailbox name Exemple: C: USER frated S: -ERR sorry, no mailbox for frated here ... C: USER mrose S: +OK mrose is a real hoopy frood PASS sir Argumente: o parola specifica casutei de mesaje pentru server (obligatoriu) Restrictii: pot fi date doar in starea de AUTORIZATIE imediat dupa trecerea cu succes de comanda USER Observatii: Cand clientul initiaza comanda PASS, serverul POP3 foloseste perechea de argumente din comenzile USER si PASS pentru a determina daca clientul are acces la lista de mesaje corespunzatoare. Deoarece comanda PASS are exact un argument, serverul POP3 poate trata spatiile din argument ca facand parte din parola, in loc de separatoare de argumente. Raspunsuri posibile: +OK maildrop locked and ready -ERR invalid password -ERR unable to lock maildrop Exemple: C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: -ERR maildrop already locked ... C: USER mrose S: +OK mrose is a real hoopy frood C: PASS secret S: +OK mrose's maildrop has 2 messages (320 octets) Myers & Rose Protocol standard [Pagina 14] RFC 1939 POP3 Mai 1996 APOP nume compendiu Argumente: un sir ce identifica o casuta de nesaje si un sir compendiu MD5 ce contine toate mesajele din lista (ambele argumente sunt obligatorii) Restrictii: pot fi date doar in starea de AUTORIZATIE imediat dupa intampinarea POP3 sau dupa comenzi USER sau PASS esuate Observatii: In mod normal fiecare sesiune POP3 incepe cu un schimb de informatii USER/PASS. Rezultatul consta intr-o parola specifica unui server/client fiind trimisa necodificata pe retea. Riscul nu este mare in cazul unei folosiri sporadice a POP3-ului. Totusi, multe implementari de clienti POP3 se conecteaza la serverul POP3 in mod regulat - pentru a citi posta electronica. In plus intervalul de initializare a unei sesiuni poate fi de cinci minute. In acest caz riscul de a fi capturata parola creste. Este necesara o metoda alternativa de autentificare care furnizeaza protectie pentru autentificarea initiala si pentru reconectare, dar care nu implica transmiterea parolei necodificata pe retea. Aceasta functionalitate este oferita de comanda APOP. Serverul POP3 care implementeaza comanda APOP va include un contor de timp in prompterul de intampinare. Sintaxa contorului corespunde cu 'msg-id' din [RFC822], si TREBUIE sa fie diferit de fiecare data cand serverul POP3 afiseaza un prompter de intampinare. De exemplu, in implementarile UNIX in care este folosit cate un proces UNIX pentru fiecare instanta a serverului POP3 , sintaxa contorului de timp poate fi: unde 'process-ID' este valoarea numerica a PID-ului procesului, 'clock' este valoarea numerica a ceasului din sistem si 'hostname' este numele de domeniu complet corespunzator gazdei unde ruleaza serverul POP3. Clientul POP3 observa contorul de timp si initiaza comanda APOP. Parametrul `nume' este identic cu parametrul `nume' al comenzii USER. Parametrul `compendiu' este calculat aplicand algoritmul MD5 [RFC1321] unui sir constand in contorul de timp (inclusiv parantezele) urmat de un secret impartasit. Myers & Rose Protocol standard [Pagina 15] RFC 1939 POP3 Mai 1996 Acest secret este un sir cunoscut doar de clientul POP3 si de server. Trebuie prevenita dezvaluirea neautorizata a secretului, pentru ca aceasta ar permite unei persoane oarecare sa treaca drept respectivul client. Parametrul `compendiu' are o valoare pe 16 octeti care e trimisa in format hexazecimal, folosind caractere ASCII mici. Cand serverul POP3 primeste comanda APOP, verifica parametrul `compendiu' dat. Daca acesta este corect, serverul POP3 initiaza un raspuns pozitiv, si sesiunea POP3 trece in starea de TRANZACTIE. Altfel este dat un raspuns negativ si sesiunea POP3 ramane in starea de AUTORIZATIE. Cu cat lungimea secretului impartasit creste cu atat si posibilitatea de a-l ghici. De accea, secretele trebuie sa fie siruri lungi (considerabil mai lungi decat cele 8 caractere din exemplul de mai jos). Raspunsuri posibile: +OK maildrop locked and ready -ERR permission denied Exemple: S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us> C: APOP mrose c4c9334bac560ecc979e58001b3e22fb S: +OK maildrop has 1 message (369 octets) In acest exemplu, secretul impartasit este sirul `tanstaaf'. Deci algoritmul MD5 se aplica sirului <1896.697170952@dbc.mtview.ca.us>tanstaaf care produce valoarea c4c9334bac560ecc979e58001b3e22fb 8. Scalarea si consideratii operationale Deoarece unele din punctele optionale descrise mai sus au fost adaugate la protocolul POP3, a fost acumulata experienta in folosirea lor in operatiuni comerciale pe scara larga unde majoritatea utilizatorilor nu se cunosteau intre ei. In aceste situatii si altele, utilizatorii si vanzatorii de clienti POP3 au descoperit ca folosirea comenzii UIDL fara initierea comenzii DELE poate conduce la o functionalitate proasta a "listei ca un depozit semi-permanent" care este in mod normal asociata cu IMAP. Bineinteles alte functii ale IMAP-ului, de exemplu cea de a Myers & Rose Protocol standard [Pagina 16] RFC 1939 POP3 Mai 1996 pune in comun conexiunile pentru mesajele noi ajunse si suportul fisierelor multiple pe server, nu sunt prezente in POP3. Cand aceste facilitati sunt folosite in acest mod de niste clienti, mesajele deja citite se acumuleze pe server fara limita. Acesta este un tip de efect clar nedorit din punctul de vedere al serverului. Aceasta situatie este agravata da faptul ca functionalitatile limitate ale POP3-ului nu permit manevrarea eficienta a listelor care contin sute sau mii de mesaje. In consecinta, este recomandat ca serverele multi-user folosite pe scara larga in special cele in care accesul clientilor la lista de mesaje se face doar folosind POP3, sa ia in considerare urmatoarele optiuni: * Impunerea unei cote maxime pentru marimea listei de mesaje. Un dezavantaj al acestei optiuni este aceea ca la umplerea listei cu mesaje apare imposibilitatea utilizatorului sa primeasca altele noi. Siturile care aleg aceasta optiune trebuie sa informeze utilizatorii despre atingerea cotei maxime, poate prin trimiterea unui mesaj acelui client. * Existenta unei politici de situri privind retinerea mesajelor pe server Siturile sunt libere sa-si stabileasca o politica locala privitoare la stocarea si mentinerea mesajelor citite sau necitite pe server. De exemplu, un sit poate sterge mesajele necitite de pe server dupa 60 de zile, iar pe cele citite dupa 7 zile. Asemenea politici nu privesc protocolul POP3 si nu sunt considerate ca o violare a acestuia. Operatorii server-ului care duc o politica de stergere a mesajelor trebuie sa se asigure ca toti clientii cunosc aceasta politica. Clientii nu trebuie sa se bazeze pe faptul ca mesajele vor fi sterse automat, ci trebuie sa stearga in mod explicit mesajele folosind comanda DELE atunci cand doresc acest lucru. Trebuie luat in considerare faptul ca fortarea stergerii automate a mesajelor poate fi derutanta pentru utilizatori, deoarece clientul POP3 poate contine optiuni de configurare pentru a lasa mesaje pe server, ceea ce in realitate serverul nu va accepta. Un caz special de politica de sit este accea in care mesajele pot fi aduse de pe server o singura data si sterse dupa aceea. Aceasta politica poate fi implementata de serverul POP3 prin urmatorul Myers & Rose Protocol standard [Pagina 17] RFC 1939 POP3 Mai 1996 mecanism: "dupa conectarea unui client terminata cu comanda QUIT se sterg toate mesajele aduse de pe server in timpul acelei sesiuni cu comanda RETR". Este important ca stergerea sa nu se realizeze in cazul unei terminari anormale a conexiunii (adica daca nu a fost primita comanda QUIT de la client) deoarece se poate ca clientul sa nu fi primit sau salvat mesajele in totalitate. Acele servere care implementeaza o politica de aducere-si-stergere a mesajelor poate sa inactiveze sau sa limiteze comanda TOP, deoarece aceasta poate fi folosita ca o alternativa de a aduce toate mesajele. 9. Rezumatul comenzilor POP3 Comenzi POP3 minime: USER nume valid in starea de AUTORIZATIE PASS sir QUIT STAT valid in starea de TRANZACTIE LIST [msg] RETR msg DELE msg NOOP RSET QUIT Comenzi POP3 optionale: APOP nume digest valid in starea de AUTORIZATIE TOP msg n valid in starea de TRANZACTIE UIDL [msg] Raspunsuri POP3: +OK -ERR Cu exceptia comenzilor STAT,LIST si UIDL, raspunsurile date de serverul POP3 oricarei comenzi sunt importante doar "+OK" si "-ERR". Orice text afisat dupa aceste raspunsuri poate fi neglijat de catre client. Myers & Rose Protocol standard [Pagina 18] RFC 1939 POP3 Mai 1996 10. Exemple de sesiuni POP3 S: C: S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us> C: APOP mrose c4c9334bac560ecc979e58001b3e22fb S: +OK mrose's maildrop has 2 messages (320 octets) C: STAT S: +OK 2 320 C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . C: RETR 1 S: +OK 120 octets S: S: . C: DELE 1 S: +OK message 1 deleted C: RETR 2 S: +OK 200 octets S: S: . C: DELE 2 S: +OK message 2 deleted C: QUIT S: +OK dewey POP3 server signing off (maildrop empty) C: S: 11. Formatul mesajului Toate mesajele trimise in timpul unei sesiuni POP3 se presupune ca se conformeaza standardului privind formatul mesajelor text pentru Internet [RFC822]. Este important de observat ca numarul de octeti pentru un mesaj de pe server poate fi diferit de numarul de octeti atribuiti acelui mesaj conform conventiilor locale pentru indicarea sfarsitului de linie. De obicei, in timpul starii de AUTORIZATIE a sesiunii POP3, serverul POP3 calculeaza lungimea fiecarui mesaj in octeti cand deschide lista de mesaje. De exemplu, daca serverul POP3 reprezinta intern sfarsitul de linie ca un singur caracter, atunci el calculeaza fiecare aparitie a acestui caracter intr-un mesaj ca doi octeti. Liniile din mesaj care incep cu octetul de sfarsit nu trebuie numarate de doua ori deoarece clientul POP3 va elimina toate caracterele de terminare cand primeste un raspuns pe mai multe linii. Myers & Rose Protocol standard [Pagina 19] RFC 1939 POP3 Mai 1996 12. Referinte [RFC821] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, USC/Information Sciences Institute, August 1982. [RFC822] Crocker, D., "Standard for the Format of ARPA-Internet Text Messages", STD 11, RFC 822, University of Delaware, August 1982. [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT Laboratory for Computer Science, April 1992. [RFC1730] Crispin, M., "Internet Message Access Protocol - Version 4", RFC 1730, University of Washington, December 1994. [RFC1734] Myers, J., "POP3 AUTHentication command", RFC 1734, Carnegie Mellon, December 1994. 13. Consideratii de securitate Se presupune ca folosirea comenzii APOP ofera o identificarea a clientului si protectia de interactiune pentru o sesiune POP3. Prin urmare, un server POP3 care implementeaza si comanda PASS si comanda APOP nu trebuie sa permita ambele metode de acces pentru un anumit utilizator; adica, pentru un nume dat de casuta postala doar una din comenzile USER/PASS sau APOP sunt permise, dar nu ambele. Mai departe, se observa ca odata cu cresterea lungimii secretului impartasit creste si dificultatea de a fi ghicit. Acele servere care raspund cu -ERR la comanda USER dau informatii posibilor atacatori despre nume care sunt valide. Folosirea comenzii PASS trimite parola necodata pe retea. Folosirea comenzilor RETR si TOP conduce la trimitere de mesaje necodate pe retea. Alte probleme de securitate nu sunt discutate in acet studiu. 14. Confirmare Familia de protocoale POP are o istorie lunga si cu obstacole. Desi initial a fost o scurta completare la RFC 1460, POP3 se bazeaza pe ideile prezente in 918, 937 si 1081. In completare, Alfred Grimstad, Keith McCloghrie, and Neil Ostroff au adus observatii importante comenzii APOP. Myers & Rose Protocol standard [Pagina 20] RFC 1939 POP3 Mai 1996 15. Adresele autorilor John G. Myers Carnegie-Mellon University 5000 Forbes Ave Pittsburgh, PA 15213 EMail: jgm+@cmu.edu Marshall T. Rose Dover Beach Consulting, Inc. 420 Whisman Court Mountain View, CA 94043-2186 EMail: mrose@dbc.mtview.ca.us Myers & Rose Protocol standard [Pagina 21] RFC 1939 POP3 Mai 1996 Apendix A. Deosebirile fata de RFC 1725 Acest studiu este o completare la RFC 1725, un Protocol standard. Sunt facute urmatoarele schimbari fata de acest document: - comenzile nu sunt sensibile la majuscule. - serverele trebuie sa dea raspunsurile "+OK" si "-ERR" cu majuscule. - intampinarea initiala este un raspuns pozitiv si nu un alt sir cu raspuns pozitiv. - clarifica comportamentul pentru comenzile neimplementate. - stabileste comenzile USER si PASS ca optionale. - stabileste raspunsurile posibile pentru comanda USER. - schimba ordinea exemplelor pentru comenzile USER si PASS, pentru a evita confuzia. - comanda PASS poate fi data doar imediat dupa un suces al comenzii USER. - clarifica cerintele persistenet ale UID-urilor si adauga niste observatii de implementare. - stabileste limita de lungime UID la 70 de octeti. - stabileste un indicator de stare pentru limitare lungimii la 512 octeti, inclusiv CRLF. - stabileste ca LIST fara argumente pentru o casuta de mesaje goala returneaza succes. - adauga o referinta din comanda LIST la sectiunea Formatul mesajului. - clarifica comportamentul lui QUIT la eroare. - stabileste ca sectiunea de securitate sa sugereze nefolosirea impreuna a comenzilor USER si APOP. - adauga referinte la RFC-urile 1730 si 1734. - clarifica metoda prin care un UA trimite mesaje sistemului transport. Myers & Rose Protocol standard [Pagina 22] RFC 1939 POP3 Mai 1996 - stabileste ca argumentul al doilea al comenzii TOP este un numar de linii. - schimba sugestiile din sectiunea Consideratii de securitate pentru server sa nu accepte ambele comenzi PASS si APOP pentru un anumit user de la "trebuie" la "ar fi indicat". - adauga sectiunea Scalarea si consideratii operationale. Apendix B. Index pentru comenzi APOP ....................................................... 15 DELE ....................................................... 8 LIST ....................................................... 6 NOOP ....................................................... 9 PASS ....................................................... 14 QUIT ....................................................... 5 QUIT ....................................................... 10 RETR ....................................................... 8 RSET ....................................................... 9 STAT ....................................................... 6 TOP ........................................................ 11 UIDL ....................................................... 12 USER ....................................................... 13 Myers & Rose Protocol standard [Page 23]