IMAP (engl. Internet Message Access Protocol) je mali protokol za prijem elektronske pošte od servera do lokalnog klijenta. Koristi TCP priključak 143. Poslednja verzija IMAP4rev1 definisana je dokumentom RFC 3501. U eksperimentalnoj fazi je nova nadogradnja dokumentom RFC 5738, koja obuhvata podršku upotrebe UTF-8 internacionlnih simbola u korisničkim imenima, adresama i zaglavljima poruka.

Akcije nad porukama

уреди

Sa IMAP protokolom moguće je realizovati sledeće akcije[1]:

  • proveravanje novih poruka
  • trajno brisanje poruka sa servera
  • kreiranje i brisanje poštanskih sandučića
  • podešavanje zastavica za stanje poruke (nepročitana, pročitana, hitna, odgovorena, nova, obrisana i status formiranja poruke)
  • čitanje atributa poruka (veličina, struktura, zaglavlje i telo poruke)

Princip rada

уреди

Princip primopredaje poruka sa servera na klijenta obavlja se slično kao i kod drugih protokola: klijent i server u prvom trenutku uspostavljaju komunikaciju i razmenjuju „pozdrave“. Zatim klijent šalje instrukcije (komande) i podatke na server. Server obrađuje podatke, izvršava zahtevane komande i šalje odgovor klijentu. Posle razmene podataka, kanal za komunikaciju se zatvara. Sva komunikacija između klijenta i servera vrši se preko stringova (niski), odnosno niza bajtova određene dužine. Svaka nova komanda koju šalje klijent započinje novom ilinijom, a na samom početku linije nalazi se jedinstvena oznaka za identifikaciju komande (npr. А0001, А0002 itd.). Jedna komanda može da bude raspoređena u više linija. Prilkom obrade komandi, ako server konstatuje grešku, kao odgovor na komandu će stajati reč „BAD“ sa identifikatorom linije u kojoj je pronašao grešku. Ako se instrukcija izvrši korektno, šalje se sadržaj odgovor, a u koliko server iz bilo kog razloga nije u stanju da izvrši komandu, on odgovara sa NO uz identifikator komande koju nije izvršio.[2]

IMAP i POP3

уреди

IMAP I POP3 su veoma slični i gotovo jedini otvoreni protokoli koji omogućavaju prijem poruka kod većine aplikacija klijenata, tako da se IMAP, po svojim karakteristikama jedino može upoređivati sa POP3 protokolom.

POP3 protokol podrazumeva da je samo jedan klijent povezan sa poštanskim sandučetom. Nasuprot tome, IMAP protokol dozvoljava istovremeno povezivanje više klijenata na isto sanduče istovremeno, odnosno dozvoljava da se istom sandučetu na serveru pristupa sa više od jedne lokacije.

Osim toga, protokol POP3 zamišljen je tako da korisnik odmah prima poruke u celosti: zaglavlje i telo poruke, sa svim pridruženim datotekama, te klijent nema mogućnost da u toku primanja poruke odluči da istu ne primi do kraja, niti može da spreči njen prijem. Pri prijemu korisnik sam odlučuje kada će neku poruku smatrati pročitanom. Ova karakteristika kod nekih aplikacija za rad sa porukama na klijentu uzrokuje grešku, koja se sastoji u tome da klijent nekontrolisano, u beskrajnom procesu, nastavi ponovo da prima poruke koje je ranije već primio. Dobra strana ovog protokola je što omogućava da kada jednom primi poruke, rad nastavi lokalno, bez potrebe za odražavanjem veze sa serverom, a mana je da se poruke na serveru posle određnog vremena obično brišu, tako da klijent raspolaže samo sa svojom lokalnom kopijom poruka.

Za razliku od POP3, protokol IMAP podarazumeva čuvanje i rad sa porukama na serveru, mada istovremeno mogu da se čuvaju i lokalne kopije kod klijenta. Osim toga, postupak prijema se sastoji u tome da klijent prvo prima samo zaglavlja poruka, dok je istovremeno omogućena pretraga po ključnim rečima celog sadrzaja poruka na serveru, tako da korisnik za svaku poruku pojedinačno može da odluči da li želi da je primi u celosti ili želi da je obriše, pre nego što se ona u celosti stigne do klijenta, što je veoma pogodno u slučaju da se radi o neželjenim porukama. Negativna strana ovog protokola je što zahteva da korisnik ima otvorenu vezu sa serverom, sve dok se ne završi pregled i/ili prijem svih poruka, odnosno dokle god je klijent aktivan.[3]

Istorija

уреди

IMAP protokol je razvijen na Stenfordovom univerzitetu 1986. godine.[4] Njegov autor je Mark Krispin (engl. Mark Crispin). Međutim, ovakav protokol je tada radio samo na određenim Xerox Lisp mašinama i TOPS-20 operativnom sistemu. U kasnijim fazama nastaje IMAP2 sa mogućnošću primanja povratne informacije, a zatim nastaje IMAP2bits sa MIME ekstenzijama. Početkom 90-tih o ovom protokolu se brine grupa IETF, koja razvija IMAP4. U prvom trenutku verija 4 je imala izvesnih grešaka, koje su otklonjene u poslednjoj revizijii IMAP4ref1 (1996), pri čemu postoji kompatibinost sa svim prethodnim verzijama. Ova poslednja verzija omogućava različite oblike enkripcije (šifrovanje) poruka, uključujući i protokol bezbednog prenosa SSL.[1]

IMAP komande[5]

уреди

IMAP je fleksibilan protokol, koji radi sa različitim komandama:

Komande dostupne u bilo kom stanju:

  • CAPABILITY — klijent traži informaciju o mogućnostima servera, kao npr. dozvoljeni mehanizmi autentifikacije
  • NOOP — prazna komanda, koristi se da se ne prekine veza kada istekne vreme (tajm aut) ili za periodično podsticanje primanja novih poruka ili aktualizaciju statusa postojećih poruka.
  • LOGOUT — odjavljivanje klijenta

Komande dostupne u neautorizovanom stanju:

  • STARTTLS — proširenje običnog protokola za komunikaciju koje omogućava šifrovanu TCL vezu, umesto posebnih portova za šifrovanje komunikacija
  • LOGIN — prijavljivanje klijenta na sever posle uspostavljanja veze. Argument sadrži ime naloga i šifru u svom osnovnom obliku, bez šifrovanja.
  • AUTHENTICATE prijavljivanje uz pomoć određenog mehanizma šifrovanje iza kojeg slede korisničko ime naloga i šifra klijenta

Komande dostupne u autorizovanom stanju, kada je korisnik već prijavljen na server:

  • SELECT — uspostavlja aktivnu fascikle (direktorijuma), odnosno sandučeta sa kojim će klijent trenutno raditi (npr. INBOX, OUTBOX itd.)
  • EXAMINE — komanda slična komandi SELECT, ali je samduče namenjeno samo za čitanje
  • CREATE — napraviti novo sanduče
  • DELETE — brisanje sandučeta
  • RENAME — promena imena sandučeta
  • SUBSCRIBE — dodaje određeno sanduče u listu aktivnih računa klijenata na serveru. Komanda sadrži samo jedan argument: ime sandučeta korisnika, pri čemu ono ne mora da postoji pre dodavanja na listu.
  • UNSUBSCRIBE — briše određeno sanduče sa liste aktivnih računa klijenata na serveru
  • LIST — zahtev za sadržaj određenog sandučeta i njegovih fascikli (poddirektorijuma). U koliko je u pitanju trenutni aktivno sanduče šalje se prazna niska "", kao argument comande
  • LSUB — vraća podskup iz seta poštanskih sandučića koje je korisnik označio kao aktivne na serveru
  • STATUS — upit o trenutnom stanju poruka u sandučetu, uključujući i broj nepročitanih poruka, pri čemu mogu da se zahtevaju sledeći kriterijumi:
  1. MESSAGES — ukupan broj poruka u sandučetu
  2. RECENT — broj poruka sa zastavicom „nedavna“
  3. UIDNEXT — jedinstveni identifikator za sledeću novu poruku
  4. UIDVALIDITY — jedinstveni identifikator sandučeta
  5. UNSEEN — broj poruka koji ne nose zastavicu „pregledano“
  • APPEND — dodaje poruku u određeno elektronsko sanduče

Komande dostupne u stanju SELECTED:

  • CHECK — traži kontrolnu tačku za trenutno odabrano sanduče.
  • CLOSE — zatvara poštansko sanduče
  • EXPUNGE — uklanja iz sandučeta sve poruke obeležene kao obrisane, pri čemu sanduče još uvek nije zatvoreno.
  • SEARCH — pretraga poruka sa odeđenim filterom
  • FETCH — nakon dobijanja liste glavne fascikle (direktorijuma) sa poddirektorijumima (comandom LIST), klijent može se zatražiti preuzimanje poruka koje se nalaze u njoj
  • STORE — pošto klijent pročita poruku, može da je obeleži određenom zastavicom za smeštanje ili za brisanje
  • COPY — kopiranje poruke iz određene fascikle
  • UID — koristi se u kombinaciji sa komandama SEARCH, FETCH ili STORE i vraća jedinstvene identifikacione brojeve poruka koje odgovaraju rezultatima tih komandi.

Vidi još

уреди

Spoljašnje veze

уреди