IMAP

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 1 august 2018; controalele necesită 47 de modificări .
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] .

Scopul protocolului IMAP

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]

Avantaje față de POP3

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]

Mesajele și atributele lor

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.

UID

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 ordine al mesajului

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ă.

Semnale de mesaje

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:

Data și ora internă a mesajului pe server

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.

Alte atribute

Interacțiunea dintre client și server

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.

Stările serverului IMAP

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.

  1. Conexiune fără autentificare prealabilă
  2. Conexiune cu pre-autentificare
  3. Conexiune respinsă
  4. Finalizarea cu succes a comenzii LOGINsauAUTHENTICATE
  5. Finalizarea cu succes a comenzii SELECTsauEXAMINE
  6. Executarea comenzii sau CLOSEcomandă eșuată SELECTsauEXAMINE
  7. Executarea unei comenzi LOGOUT, închiderea serverului sau terminarea conexiunii

Comenzi protocol IMAP

AUTENTIFICARE Permite clientului să utilizeze un ID de utilizator și o parolă în text simplu atunci când se conectează la serverul IMAP. Aceasta nu este cea mai bună metodă, dar uneori este singura modalitate de a vă conecta la server. AUTENTIFICA Permite clientului să utilizeze metode alternative de autentificare atunci când se înregistrează la serverul IMAP. Autentificarea individuală a utilizatorului este opțională și nu este acceptată de toate serverele IMAP. În plus, implementarea unei astfel de verificări poate varia în funcție de server. Când clientul lansează o comandă AUTHENTICATE, serverul răspunde cu un șir de invocare codificat în base64 . Apoi, clientul trebuie să trimită un răspuns la provocarea de autentificare a serverului, de asemenea codificat în base64. Dacă serverul nu acceptă metoda de autentificare propusă de client, acesta include cuvântul în răspunsul său NO. Clientul trebuie apoi să continue negocierea metodei de autentificare. Dacă toate încercările de a determina metoda de autentificare au eșuat, atunci clientul încearcă să se înregistreze la server folosind LOGIN. ÎNCHIDE Închide căsuța poștală. Când o cutie poștală este închisă cu această comandă, mesajele marcate cu steag \DELETEDsunt eliminate din căsuța poștală. Nu are opțiuni. LOGOUT Încheie sesiunea pentru ID-ul utilizatorului curent. CREA Creează o nouă căsuță poștală. Numele și locația noilor cutii poștale sunt determinate în funcție de specificațiile generale ale serverului. ȘTERGE Se aplică pentru cutiile poștale. Serverul IMAP, la primirea acestei comenzi, va încerca să ștergă cutia poștală cu numele specificat ca argument al comenzii. Mesajele sunt șterse împreună cu căsuțele poștale și nu pot fi restaurate. RENUMIRE Schimbă numele cutiei poștale . Această comandă are doi parametri - numele cutiei poștale pe care doriți să o redenumiți și noul nume al cutiei poștale. ABONATI-VA Adaugă o cutie poștală la lista de cutii poștale active a clientului. Singurul parametru folosit în această comandă este numele căsuței poștale care urmează să fie listată. O cutie poștală nu trebuie să existe pentru a fi adăugată la lista de cutii poștale active - acest lucru vă permite să adăugați cutii poștale care nu au fost încă create la lista cu cutiile poștale active sau să le ștergeți dacă sunt goale. DEZABONEAZĂ-TE Elimină cutiile poștale din lista activă. De asemenea, folosește un parametru - numele cutiei poștale, care este eliminat din lista de cutii poștale active ale clientului . Cu toate acestea, cutia poștală în sine nu este ștearsă. LISTĂ Obțineți o listă cu toate cutiile poștale ale clienților; are doi parametri. LSUB Spre deosebire de comandă LIST, este folosită pentru a obține o listă de cutii poștale activate de comandă SUBSCRIBE. Parametrii sunt aceiași ca pentru LIST. STARE Generează o interogare despre starea curentă a căsuței poștale. Primul parametru pentru această comandă este numele căsuței poștale la care se aplică. Al doilea parametru este o listă de criterii după care clientul dorește să primească informații. Comanda STATUSpoate fi folosită pentru a obține informații despre starea unei căsuțe poștale fără a o deschide cu comenzile SELECTsau EXAMINE. Utilizatorul poate obține informații conform criteriilor: ADĂUGA Adaugă un mesaj la sfârșitul căsuței poștale specificate. Argumentele sunt numele cutiei poștale, steagurile mesajului (opțional), marcajul temporal (opțional) și mesajul în sine - antet și corp. Următoarele steaguri de mesaje sunt disponibile: Dacă în comandă sunt specificate steaguri, acestea sunt setate pentru mesajul adăugat. În ambele cazuri, steag-ul este setat pentru mesaj \Recent. Dacă în comandă este specificată un marcaj de timp, atunci acest timp va fi setat ca ora de creare a mesajului, în caz contrar, ora curentă este luată ca timp de creare. Deoarece mesajul nu este o singură linie, se folosesc literale . Exemplu: C A003 ANEXĂ mesaje-salvate (\Seen) {247} S + Pregătit pentru date literale C Data: Luni, 7 februarie 1994 21:52:25 -0800 (PST) C De la: Fred Foobar <[email protected]> Subiect: întâlnire de după-amiază C Către: [email protected] C ID-ul mesajului: <[email protected]> C C Bună Joe, crezi că ne putem întâlni mâine la 3:30? S A003 OK APPEND finalizat , MULTIAPPENDdescris în RFC 3502 , permite unei singure comenzi să adauge mai multe mesaje la o cutie poștală. VERIFICA Setează un punct de control pe o cutie poștală. Orice operațiuni, cum ar fi, de exemplu, scrierea datelor din memoria serverului pe hard diskul acestuia , trebuie efectuată atunci când cutia poștală este în starea corespunzătoare. Comanda este utilizată pentru a verifica integritatea cutiei poștale după disc și alte operațiuni similare CHECK. Această comandă este utilizată fără parametri. ȘTERGERE Șterge toate mesajele marcate cu steag \DELETEDdin căsuța poștală fără a închide cutia poștală. Răspunsul serverului la comandă EXPUNGEeste un raport al noii stări a căsuței poștale. CĂUTARE Caută mesaje după criterii în căsuța poștală activă, apoi afișează rezultatele ca număr de mesaj. Este posibil să căutați mesaje care au un anumit șir de text în corp, sau au un anumit steag, sau primite înainte de o anumită dată etc. FETCH Obțineți textul mesajului de e-mail. Comanda este folosită doar pentru afișarea mesajelor. Spre deosebire de POP3 , clientul IMAP nu stochează o copie a mesajului pe computerul client . MAGAZIN Modifică informații despre un mesaj. COPIE Copiază mesajele dintr-o căsuță poștală în alta. UID Folosit împreună cu comenzile FETCH, COPYsau . Permite acestor comenzi să folosească UID-uri reale în loc de o secvență de numere dintr-o serie de numere de mesaje.STORESEARCH CAPACITATE Interogați un server IMAP pentru informații despre capacitățile acestuia. NOOP Echipa nu face nimic. Poate fi folosit pentru a menține sesiunea în viață, astfel încât sesiunea să nu fie expirată de un temporizator de expirare. Răspunsul serverului la comandă NOOPtrebuie să fie întotdeauna pozitiv. Deoarece serverul returnează adesea starea execuției unei anumite comenzi într-un răspuns, NOOPacesta poate fi folosit ca declanșator pentru o interogare periodică despre starea serverului.

Literatură

Link -uri

Note

  1. 1 2 3 Semenov, 2014 .
  2. 12 Universitatea din Washington .
  3. Care este diferența dintre POP și IMAP?  (rusă)  ? . support.microsoft.com . Preluat la 19 iulie 2021. Arhivat din original la 19 iulie 2021.