IMAP | |
---|---|
Nume | Internet Message Access Protocol |
Nivel (conform modelului OSI ) | Aplicat |
Familie | TCP / IP |
Creat în | 1986 |
Port/ID | 143/ TCP , 993/TCP (IMAP peste SSL) |
Scopul protocolului | Acces la cutiile poștale |
Specificație | RFC 3501 |
Principalele implementări (clienți) | MUA ( Outlook Express , Opera , Mozilla Thunderbird , The Bat!, Claws Mail , mutt , etc.) |
Implementări de bază ( servere ) | UW IMAP , Courier , Cyrus , Dovecot |
IMAP ( Internet Message Access Protocol ) este un protocol de nivel de aplicație pentru accesarea e-mailului .
Se bazează pe protocolul de transport TCP și folosește portul 143, în timp ce IMAPS (IMAP peste SSL ) folosește portul 993. IMAP funcționează doar cu mesaje și nu necesită niciun pachet cu anteturi speciale [1] .
IMAP oferă utilizatorului oportunități ample de a lucra cu cutiile poștale situate pe serverul de e-mail . Un program de e-mail care utilizează acest protocol accesează stocarea corespondenței de pe server ca și cum această corespondență se află pe computerul destinatarului. E-mailurile pot fi manipulate de pe computerul utilizatorului ( client ) fără ca întregul conținut al e-mailurilor să fie trimis în mod constant înainte și înapoi de la server .
Protocolul SMTP este de obicei folosit pentru a trimite mesaje , deoarece comanda nativă IMAP send, numită APPEND, nu conține un mecanism de transfer de informații de serviciu [1] .
Pentru numele de cutie poștală (dosar) cu caractere în afara intervalului ASCII , este utilizată o versiune modificată a codificării UTF-7 [1] .
Protocolul IMAP este o alternativă la POP cu capabilități rudimentare de trimitere.
Prima versiune a protocolului POP a avut o serie de neajunsuri, iar cea mai gravă dintre ele a fost lipsa capacității de a gestiona mișcarea și stocarea mesajelor pe server. În POP , mesajele sunt descărcate de pe serverul de mail toate odată, după care sunt șterse de pe server, adică nu există posibilitatea de a selecta mesajele de primit.
Pentru a rezolva problemele asociate cu această caracteristică a POP , în 1986, Mark Crispin ( ing. Mark Crispin ), lucrând atunci la Universitatea Stanford , a creat un nou protocol pentru primirea e-mailurilor de pe server [2] .
Noul protocol a făcut posibil ca utilizatorii să primească e-mailuri în mai multe locații din aceeași cutie poștală. Utilizatorului i se oferă posibilitatea de a gestiona mesajele din căsuța poștală și funcții suplimentare pentru deservirea cutiilor poștale de pe server.
În viitor, protocolul POP a fost finalizat, în POP3 (POP versiunea 3) este posibil să primiți mesajele selectate de pe server și să lăsați mesajele selectate pe server. În versiunile recente între IMAP și POP , principala diferență pentru utilizator este că IMAP4 poate accesa litere din diferite foldere de e-mail de pe server și poate muta litere între ele, în timp ce POP3 accesează literele de pe server prin numere într-o listă liniară (adică, funcționează cu un singur folder de e-mail).
Versiuni ale protocolului IMAP [2]Când utilizați POP3 , clientul se conectează la server doar pentru timpul necesar pentru a descărca mesajele noi. Când utilizați IMAP, conexiunea nu este întreruptă în timp ce interfața cu utilizatorul este activă, iar mesajele sunt descărcate numai atunci când sunt solicitate de client. Acest lucru reduce timpul de răspuns pentru utilizatorii care au multe mesaje mari în cutiile poștale.
Protocolul POP necesită ca clientul curent să fie singurul conectat la cutie. IMAP permite mai multor clienți să acceseze o cutie poștală în același timp și îi oferă clientului posibilitatea de a urmări modificările făcute de alți clienți conectați în același timp.
Datorită sistemului de flag definit în IMAP4, clientul poate urmări starea unui mesaj (citit, răspuns la, șters etc.); datele flag sunt stocate pe server.
Clienții IMAP4 pot crea, redenumi și șterge cutii poștale și pot muta mesaje între cutiile poștale. Alternativ, puteți utiliza „IMAP4 Access Control List ( ACL ) Extension” ( RFC 4314 ) pentru a gestiona drepturile de acces la cutia poștală.
Mesajele sunt căutate pe partea serverului.
IMAP4 are un mecanism de extensie explicit. [3]
IMAP funcționează numai cu mesaje și nu necesită niciun pachet cu antete speciale. Fiecare mesaj are asociate mai multe atribute. Aceste atribute pot fi definite individual sau în combinație cu alte atribute.
Fiecărui mesaj i se atribuie un cod de 32 de biți , care, atunci când este utilizat împreună cu un identificator unic, formează o secvență de 64 de biți care garantează identificarea unică a mesajului în cutia poștală. Cu cât mesajul a sosit mai târziu, cu atât UID-ul său este mai mare.
Un UID este asociat cu o cutie poștală și trimis ca un cod de răspuns uidvalidity (ok) în timpul fazei de selecție a cutiei poștale. Dacă UID-ul din sesiunea anterioară nu poate fi utilizat dintr-un motiv oarecare, UID-ul trebuie să fie incrementat.
UID-ul unui mesaj nu trebuie să se schimbe în cadrul unei sesiuni și nici de la o sesiune la alta. Totuși, dacă nu este posibilă stocarea UID-ului mesajului într-o sesiune ulterioară, fiecare sesiune ulterioară trebuie să aibă un nou cod unic de identificare, care trebuie să fie mai mare decât orice UID utilizat anterior.
Numărul de secvență al unui mesaj dintr-o cutie poștală începe de la 1. Fiecare mesaj, începând cu al doilea, are un număr de secvență cu exact 1 mai mare decât cel care l-a precedat.
Este permisă schimbarea numărului de secvență al unui mesaj în timpul unei sesiuni. De exemplu, când un mesaj este șters dintr-o căsuță poștală, numerele tuturor mesajelor ulterioare se modifică.
Acest atribut este o listă de zero sau mai multe simboluri numite asociate cu mesajul dat. Steagul este setat prin adăugarea lui la această listă și resetat prin eliminarea acestuia. Există două tipuri de steaguri în IMAP 4.1. Steagul poate fi permanent sau activ doar pe durata acestei sesiuni.
Un steag de sistem este un steag al cărui nume este definit în specificația protocolului. Toate steaguri de sistem încep cu un \.
Următoarele steaguri de sistem sunt definite în prezent:
Ora și data la care a fost primit mesajul. Dacă mesajul a fost livrat prin protocolul SMTP , data și ora livrării la destinația finală. Pentru mesajele livrate prin comanda de copiere, data și ora internă ale expeditorului mesajului. Când utilizați comanda append , data și ora specificate de parametrii comenzii.
O conexiune IMAP 4.1 implică stabilirea unei conexiuni între un client și un server . Clientul trimite comenzi către server, serverul trimite date și notificări despre starea cererii către client. Toate mesajele, atât client cât și server, sunt sub formă de șiruri terminate printr-o secvență specială.
Orice procedură începe cu comanda clientului. Orice comandă client începe cu un prefix de identificare (de obicei un șir alfanumeric scurt, cum ar fi , A0001etc. A0002) numit etichetă. Pentru fiecare comandă, clientul își generează propria etichetă.
Există două cazuri în care șirul trimis de client nu reprezintă o comandă completă. În primul, argumentul comenzii este furnizat cu un cod care determină numărul de octeți din șir. În al doilea, argumentele comenzii necesită un răspuns de la server. În ambele cazuri, serverul trimite o cerere de continuare a comenzii începând cu caracterul +.
Clientul trebuie să finalizeze trimiterea unei comenzi înainte de a trimite alta.
Receptorul de protocol al serverului citește șirul de comandă primit de la client, îl analizează, extrage parametrii și trimite datele către server. Când comanda este finalizată, serverul trimite un răspuns.
Datele transmise de server către client, precum și răspunsurile de stare care nu indică finalizarea comenzii, sunt prefixate * și se numesc răspunsuri neetichetate.
Datele pot fi trimise de către server ca răspuns la o comandă client sau din proprie inițiativă. Formatul datelor nu depinde de motivul trimiterii.
Răspunsul indică succesul/eșecul operației. Folosește aceeași etichetă ca și comanda client care a început procedura. Astfel, dacă sunt executate mai multe comenzi, eticheta serverului indică comanda care a provocat răspunsul. Există trei tipuri de răspuns la terminarea serverului: ok(succes), no(eșec), bad(eroare de protocol, de exemplu comanda nerecunoscută sau eroare de sintaxă detectată).
Ascultătorul protocolului client IMAP 4.1 citește șirul de răspuns de pe server și ia măsuri în funcție de primul *sau caracter +.
Clientul trebuie să fie gata să accepte orice răspuns de la server în orice moment. Datele serverului trebuie scrise astfel încât clientul să le poată utiliza direct fără a trimite cereri de căutare către server.
Serverul IMAP 4.1 se află într-una din cele patru stări.
Majoritatea comenzilor pot fi utilizate numai în anumite stări.
În starea neautentificată , clientul trebuie să furnizeze un nume de utilizator și o parolă înainte ca majoritatea comenzilor să fie disponibile pentru el. Tranziția la această stare se face atunci când se stabilește o conexiune fără autentificare prealabilă.
În starea autentificat , clientul este identificat și trebuie să selecteze o cutie poștală, după care comenzile pentru lucrul cu mesajele îi vor deveni disponibile. Trecerea la această stare are loc atunci când se stabilește o conexiune cu pre- autentificare , când sunt emise toate datele de identificare necesare sau când o cutie poștală este selectată din greșeală.
Sistemul intră în starea de selecție atunci când cutia poștală este selectată cu succes.
Sistemul intră în starea de ieșire atunci când conexiunea este întreruptă ca urmare a unei solicitări a clientului sau datorită unei decizii independente a serverului.
URI | scheme|
---|---|
Oficial | |
neoficial |
TCP /IP pe straturi ale modelului OSI | Protocoale de bază|
---|---|
Fizic | |
canalizat | |
reţea | |
Transport | |
sesiune | |
Reprezentare | |
Aplicat | |
Altele aplicate | |
Lista de porturi TCP și UDP |