Posta electronica - a comunica, comunicare

      Înca din cele mai vechi timpuri oamenii si-au pus problema comunicarii între ei. Una dintre cele mai primitive modalitati de comunicare este cea prin foc. În perioada invaziilor turcesti, oamenii dintr-un sat semnalau acest eveniment, catre localnicii satelor vecine, prin aprinderea unui foc pe o colina. Aceasta modalitate de comunicare ne face (pe noi, cei care stam în fata unui calculator si prin simpla ˛miscare a degetelor˛ sa comunicam cu o persoana din orice colt al lumii) sa zâmbim. Dar fiecare epoca cu problemele ei…… razesii lui Stefan cel Mare se bateau cu turcii, administratorii din ziua de azi se lupta cu hackerii :-)).
      Serviciul de posta electronica (e-mail - electronic mail) a stat la baza dezvoltarii Internet-ului, constituind o modalitate de a satisface nevoia de comunicare, totodata permitând trimiterea de documente electronice între utilizatorii retelei.
      Putem considera e-mail-ul ca fiind compus din trei componente principale:

  1. agentul utilizator - (UA - User Agent) - un program cu care utilizatorul îsi citeste si trimite posta electronica,
  2. server-ul de posta electronica (cutia postala) - locul în care ajunge e-mail-ul si din care agentul utilizator preia mesajele sosite,
  3. agentii de transfer postal (MTA - Mail Transfer Agent) - un program care preia mesajele de la UA si le transmit catre cutia postala a destinatarului.

      Sa vedem care este "drumul" pe care îl urmeaza un mesaj, din momentul în care expeditorul apasa pe butonul "Send" al programului sau de e-mail si pâna când ajunge în casuta postala a destinatarului. Agentul utilizator al expeditorului plaseaza mesajul într-o coada prelucrata de agentul de transfer care o trimite apoi spre destinatar. În acest caz, programul MTA actioneaza ca un client si contacteaza server-ul masinii de la distanta, pe care se afla contul (cutia postala) a destinatarului. Clientul stabileste o legatura TCP cu server-ul si îi trimite mesajul, în conformitate cu protocolul SMTP (Simple Mail Transport Protocol) si care "asculta" pe portul 25 (pentru mai multe detalii despre conexiunile TCP puteti consulta articolul despre retele din numarul 20 al revistei ER). Server-ul primeste mesajul si îl plaseaza în cutia destinatarului.
      Nu întotdeauna programul MTA, contactat de UA, reuseste sa stabileasca o legatura directa cu host-ul pe care se afla contul destinatie. De cele mai multe ori MTA trimite mesajul unui alt program MTA, aflat pe un calculator "mai apropiat" de calculatorul destinatie. Observam ca programul MTA trebuie sa fie atât program client cât si server. El trebuie sa stie cum sa trimita un mesaj dar si cum sa primeasca un mesaj din partea altui MTA.
      Protocolul SMTP asigura o comunicatie bidirectionala între programele MTA client si server. Clientul MTA trimite comenzi catre server-ul MTA care, la rândul sau, trimite raspunsuri clientului. Cu alte cuvinte, comenzile SMTP necesita raspunsuri de la modulul SMTP receptor.
  1. Comenzi SMTP. Pot fi definite ca fiind siruri de caractere terminate cu caracterul (Carriage-Return Line-Feed). Pentru a întelege mai usor comenzile SMTP vom apela la analiza unui exemplu de tranzactie de posta. Presupunem ca utilizatorul Ut, de pe host-ul "hostT.ro" trimite un mesaj catre utilizatorii Ur1, Ur2, Ur3, cu conturi pe calculatorul "hostR.ro". Pentru a simplifica explicarea procesului vom numerota fiecare linie, trecând în dreptul ei caracterul "R" sau "T", functie de emitentul liniei: Receptorul sau Transmitatorul. 1. R: 220 hostR.ro Simple Mail Transfer Service Ready 2. T: HELO hostT.ro 3. R: 250 hostR.ro 4. T: MAIL FROM: <ut@hostt.ro> 5. R: 250 OK 6. T: RCPT TO: <ur1@hostr.ro> 7. R: 250 OK 8. T: RCPT TO: <ur2@hostr.ro> 9. R: 550 No such user here 10. T: RCPT TO: <ur3@hostr.ro> 11. R: 250 OK 12. T: DATA 13. R: 354 Start mail input; end with <crlf>.<crlf> 14.T: Una, alta, …….. 15. T: ….. etc, etc, etc, …… 16. T: . 17. R: 250 OK 18. T: QUIT 19. R: 221 hostR.ro Service closing transmission channel
          Când un program MTA stabileste o conexiune TCP cu un alt MTA, acesta din urma raspunde cu codul 220, ceea ce înseamna ca serviciile de posta electronica, de pe calculatorul contactat, sunt disponibile (linia 1). Dupa primirea codului de raspuns 220, conform specificatiilor SMTP, clientul MTA trebuie sa trimita comanda HELO. Asa cum se vede si din linia 2, comanda HELO necesita ca argument hostul client. Serverul MTA receptioneaza comanda HELO si trimite codul de raspuns 250. Acest cod anunta transmitatorul ca actiunea solicitata a fost încheiata cu succes (linia 3).
          În urma acestei "discutii introductive", clientul MTA va initia tranzactia mail. Pentru aceasta MTA poate transmite una din urmatoarele comenzi: MAIL, SEND, SOML, SAML. Asa cum se vede din linia 4, în cazul nostru este folosita comanda MAIL (celelalte trei comanzi sunt considerate optionale si de aceea sunt foarte rar implementate in programe MTA). Ca urmare a acestei comenzi, serverul va trimite din nou un cod de raspuns 250 care va indica faptul ca adresa cutiei postale a transmitatorului este adecvata (linia 5).
          În continuare, clientul MTA va transmite comanda RCPT (pentru a identifica un anumit destinatar al mail-ului), asa cum se vede din liniile 6, 8, 10. În liniile 7 si 11, serverul MTA transmite un cod 250, ceea ce înseamna ca destinatarul specificat în comanda RCPT are cutie postala pe host-ul respectiv. În linia 9 se observa receptionarea unui cod de raspuns 550, ceea ce arata ca MTA nu poate îndeplini cererea clientului.
          Primind raspuns la toate comenzile RCPT, clientul trebuie sa trimita o comanda DATA pentru a comunica serverului ca va trimite datele mail. Linia 12 prezinta comanda DATA, iar linia 13 mesajul serverului cu codul de raspuns 354. Acest cod de raspuns spune clientului MTA sa initieze transferul datelor si sa semnalizeze sfârsitul lor cu o secventa de caractere . (o linie noua care contine doar un punct). În acest moment începe transmiterea datelor (liniile 14, 15, 16). Dupa primirea secventei ., serverul va raspunde cu codul 250 (linia 17). Pentru a încheia tranzactia mail, SMTP cere clientului MTA sa transmita o comanda QUIT (linia 18), fapt pentru care serverul va reactiona prin codul de raspuns 221 - accepta cererea de închidere a canalului de transmisie.
          În orice moment al tranzactiei mail, clientul poate utiliza o gama de comenzi optionale, cum ar fi:
    • NOOP (NO OPeration)- cere serverului MTA sa nu execute alta actiune decât returnarea unui raspuns OK,
    • HELP - cere serverului MTA sa transmita informatii suplimentare clientului,
    • VRFY - cere serverului sa verifice daca argumentul identifica un utilizator valid.
  2. Raspunsuri SMTP. Serverele MTA raspund fiecarei comanzi SMTP cu un cod de raspuns format din trei cifre urmat de informatie text auxiliara. Exista cazuri când un singur cod de raspuns poate include mai multe linii de text. Fiecare cifra din codul de raspuns SMTP are o semnificatie speciala:
    1. Prima cifra poate lua cinci valori: 1, 2, 3,. 4, 5 - cifra 1 indica faptul ca serverul MTA a accepta comanda, dar actiunea solicitata cere clientului MTA sa confirme informatia de raspuns. Clentul va trebui sa transmita o alta comanda care sa specifice daca actiunea se continua sau se abandoneaza. În implementarile actuale SMTP nu contine comenzi care sa permita acest gen de raspuns, el a fost inclus în specificatiile SMTP pentru posibile comenzi viitoare. Aceasta poate fi considerata o planificare în avans. - cifra 2 indica faptul ca serverul MTA a încheiat cu succes actiunea solicitata si clientul poate initia o noua comanda. - cifra 3 arata ca serverul MTA accepta comanda, dar cere informatii suplimentare pentru a executa actiunea solicitata. - cifra 4 indica faptul ca serverul nu accepta comanda, deci actiunea solicitata nu este îndeplinita. În acest cay eroarea este temporara si clientul poate sa încerce din nou. - cifra 5 are aproape aceeasi semnificatie cu cifra 4 cu deosebirea ca eroarea este mai grava si clientul nu trebuie sa mai repete aceeasi cerere.
    2. Cifra a doua precizeaza categoriile de erori: - cifra 0 identifica erorile de sintaxa, - cifra 1 desemneaza raspunsuri de informatie, - cifra 2 mentioneaza canalul de transmisie, - cifra 5 specifica raspunsuri legate de însusi sistemul de mail. În mod curent, SMTP nu aloca coduri de raspuns cu a doua cifra 3 sau 4.
    3. Cifra a trei-a are rol, doar, de numerotare a codurilor de raspuns diferite, dintr-o anumita serie. De exemplu, codurile de raspuns 500-504 sunt toate, mesaje de eroare de sintaxa. Cifra a trei-a are rol de a diferentia, între ele, mesajele din aceeasi categorie.
În acest articol am facut o scurta descriere a drumului parcurs de un e-mail pâna în cutia postala a destinatarului. În articolul urmator vom vedea cum un utilizator Internet poate sa-si citeasca mesajele din cutia postala.
 
Free Web Hosting