Bosh sahifa Wiki IMAP

IMAP

IMAP — elektron xatlarni pochta serverida saqlagan holda ko‘rish, papkalarga ajratish va bir nechta qurilmada sinxron ishlash uchun mo‘ljallangan protokol. Uning to‘liq nomi Internet Message Access Protocol hisoblanadi.

IMAPda serverdagi mailbox asosiy nusxa hisoblanadi. Telefon, noutbuk, desktop dastur va webmail bir xil xatlar, papkalar va o‘qilgan holatini ko‘rishi mumkin.

SMTP xatni yuboradi. IMAP esa qabul qilingan xatlarni foydalanuvchiga boshqarib beradi.

IMAP modeli

IMAP foydalanuvchiga serverdagi mailbox bilan masofadan ishlash imkonini beradi.

Asosiy imkoniyatlar:

  • papkalar ro‘yxatini olish;
  • papka yaratish va o‘chirish;
  • xatlar sarlavhasini ko‘rish;
  • xat body qismini yuklash;
  • attachmentni alohida olish;
  • xatni o‘qilgan deb belgilash;
  • flag qo‘yish;
  • xatni ko‘chirish yoki nusxalash;
  • server tomonida qidirish;
  • yangi xatni tez aniqlash;
  • bir nechta qurilma holatini sinxronlashtirish.

Client barcha xatlarni doim to‘liq yuklab olishi shart emas. Bu katta mailbox va mobil tarmoq uchun muhim.

Ulanish holatlari

IMAP sessiyasi bir necha holatdan o‘tadi.

Non-authenticated

Client serverga ulangan, lekin foydalanuvchi hali tasdiqlanmagan.

Bu holatda:

  • server imkoniyatlari olinadi;
  • TLSga o‘tish mumkin;
  • login yoki boshqa autentifikatsiya bajariladi.

Authenticated

Foydalanuvchi tasdiqlangan, lekin aniq mailbox tanlanmagan.

Client:

  • papkalar ro‘yxatini oladi;
  • papka yaratadi;
  • papka nomini o‘zgartiradi;
  • mailbox tanlaydi.

Selected

Client INBOX yoki boshqa mailboxni tanlagan. Endi xatlar bilan ishlash buyruqlari mavjud.

Logout

Sessiya yopiladi va server ulanishni tugatadi.

Buyruq va javoblar

IMAP matnli buyruq protokoli. Har client buyrug‘i alohida tag bilan boshlanadi.

Misol:

C: A001 CAPABILITY
S: * CAPABILITY IMAP4rev1 STARTTLS AUTH=PLAIN
S: A001 OK CAPABILITY completed

C: A002 LOGIN [email protected] password
S: A002 OK LOGIN completed

C: A003 SELECT INBOX
S: * 42 EXISTS
S: * 3 RECENT
S: A003 OK SELECT completed

Tag clientga bir nechta buyruq javoblarini ajratishga yordam beradi.

Server javoblari:

  • OK — amal muvaffaqiyatli;
  • NO — buyruq tushunilgan, ammo bajarilmadi;
  • BAD — sintaksis yoki protokol xatosi;
  • BYEserver sessiyani yopmoqda;
  • * — untagged status yoki ma’lumot;
  • + — davom ettirish so‘rovi.

Mailbox

IMAP papkani mailbox deb ataydi. INBOX maxsus mailbox bo‘lib, nomi case-insensitive hisoblanadi.

Boshqa papkalar:

  • Sent;
  • Drafts;
  • Trash;
  • Spam;
  • Archive;
  • foydalanuvchi yaratgan papkalar.

Papka ierarxiyasi delimiter orqali ifodalanadi. Masalan:

Projects/UzbekDevs
Projects/Archive

Delimiter serverga qarab / yoki boshqa belgi bo‘lishi mumkin.

Xabar tartib raqami

Selected mailbox ichida har xat message sequence numberga ega.

Sequence number mailbox holatiga bog‘liq:

  • xat o‘chirilsa raqamlar o‘zgarishi mumkin;
  • yangi xat qo‘shilganda son ortadi;
  • boshqa client EXPUNGE qilsa raqamlar siljishi mumkin.

Shu sababli uzoq muddatli identifikatsiya uchun faqat sequence numberga tayanish xavfli.

UID

Har mailbox ichidagi xatga Unique Identifier beriladi. UID sequence numberga qaraganda barqarorroq.

UID bilan ishlash:

UID FETCH
UID STORE
UID COPY
UID SEARCH

Mailbox UIDVALIDITY qiymatiga ham ega. Server mailboxni qayta yaratib, eski UIDlar ma’nosini yo‘qotsa, UIDVALIDITY o‘zgaradi. Client lokal cache ni yangilashi kerak.

UID global emas. Bir xat boshqa papkaga ko‘chirilsa, yangi mailboxda boshqa UID olishi mumkin.

Flags

IMAP xat holatini flaglar orqali saqlaydi.

Standart flaglar:

Flag Mazmuni
\Seen Xat o‘qilgan
\Answered Xatga javob berilgan
\Flagged Muhim yoki belgilangan
\Deleted O‘chirish uchun belgilangan
\Draft Qoralama
\Recent Server sessiyasiga yaqinda kelgan xat

Server custom keywordlarni ham qo‘llashi mumkin.

Bir qurilmada xat \Seen qilinsa, boshqa IMAP client ham o‘qilgan holatni ko‘radi.

FETCH

FETCH xatning kerakli qismini olish uchun ishlatiladi.

Client quyidagilarni alohida so‘rashi mumkin:

  • envelope;
  • headerlar;
  • body structure;
  • matnli body;
  • HTML body;
  • attachment;
  • xat hajmi;
  • internal date;
  • flags.

Masalan, telefon dasturi avval faqat jo‘natuvchi, mavzu va sana ma’lumotini oladi. Foydalanuvchi xatni ochganda body, attachment bosilganda esa fayl yuklanadi.

Bu yondashuv trafik va lokal storage sarfini kamaytiradi.

BODYSTRUCTURE va MIME

Elektron xat multipart MIME tuzilishiga ega bo‘lishi mumkin.

Misol:

multipart/mixed
├── multipart/alternative
│   ├── text/plain
│   └── text/html
└── application/pdf

IMAP BODYSTRUCTURE orqali clientga xat qismlarini ko‘rsatadi. Client kerakli partni alohida oladi.

Shu sababli 50 MB attachmentli xat ro‘yxatda ko‘rinishi uchun attachmentni darhol yuklash shart emas.

STORE

STORE xat flaglarini o‘zgartiradi.

Misollar:

  • \Seen qo‘shish;
  • \Flagged olib tashlash;
  • \Deleted belgilash;
  • custom label qo‘shish.

Bir nechta client bir mailbox bilan ishlaganda flag yangilanishlari serverda saqlanadi.

O‘chirish va EXPUNGE

IMAPning klassik modelida xat darhol o‘chirilmasligi mumkin.

  1. Xatga \Deleted flagi qo‘yiladi.
  2. EXPUNGE buyrug‘i \Deleted belgilangan xatlarni mailboxdan butunlay olib tashlaydi.

Bu ikki bosqich xatni vaqtincha belgilash imkonini beradi. Biroq boshqa client EXPUNGE qilsa sequence numberlar o‘zgarishi mumkin.

Yangi kengaytmalarda aniq UIDni xavfsizroq expunge qilish va MOVE buyrug‘i mavjud bo‘lishi mumkin.

COPY va MOVE

COPY xatni boshqa mailboxga nusxalaydi. Asl xat o‘z joyida qoladi.

Klassik IMAPda ko‘chirish:

  1. COPY;
  2. asl xatga \Deleted;
  3. EXPUNGE

orqali bajarilgan.

MOVE kengaytmasi buni bitta mantiqiy amal sifatida bajaradi va race conditionlarni kamaytiradi.

IMAP server tomonida qidirish imkonini beradi.

Mezonlar:

  • jo‘natuvchi;
  • qabul qiluvchi;
  • subject;
  • sana;
  • flag;
  • body matni;
  • hajm;
  • UID;
  • o‘qilgan yoki o‘qilmagan holat.

Server qidiruvni bajargani uchun client barcha xatlarni lokal yuklab olishi shart emas. Qidiruv tezligi server indeksiga va mailbox hajmiga bog‘liq.

IDLE

Oddiy pollingda client har ma’lum vaqtda yangi xat borligini so‘raydi. IDLE kengaytmasi ulanishni ochiq saqlab, serverga o‘zgarish haqida darhol xabar berish imkonini beradi.

IDLE orqali client:

  • yangi xat kelganini;
  • xat o‘chirilganini;
  • flag o‘zgarganini

tez bilishi mumkin.

Mobil push tizimi har doim bevosita IMAP IDLE bo‘lavermaydi. Ilova ishlab chiqaruvchining alohida push serveri va operatsion tizim notification xizmatidan foydalanishi mumkin.

IMAP portlari

Port Vazifasi
143 Oddiy IMAP; STARTTLS orqali himoyalanishi mumkin
993 TLS boshidan yoqilgan IMAPS

Login va xat mazmunini himoyalanmagan kanal orqali yuborish xavfli. Zamonaviy server TLSni majburiy qiladi.

Autentifikatsiya

IMAP quyidagi usullardan foydalanishi mumkin:

  • login va parol;
  • SASL mexanizmlari;
  • OAuth 2.0 token;
  • client sertifikati;
  • platformaga xos single sign-on.

Ko‘p pochta provayderlari oddiy parol o‘rniga OAuth token yoki application password talab qiladi. Bu foydalanuvchining asosiy parolini uchinchi tomon dasturiga bermaslikka yordam beradi.

Bir nechta qurilmada sinxronlash

IMAPning asosiy afzalligi serverdagi umumiy holatdir.

Masalan:

  • telefon xatni o‘qilgan deb belgilaydi;
  • noutbuk shu flagni ko‘radi;
  • webmail xatni Archive papkasiga ko‘chiradi;
  • desktop client papka o‘zgarishini sinxronlashtiradi.

Client lokal cache saqlashi mumkin. Oflayn holatda xatlar o‘qiladi va o‘zgarishlar keyin serverga yuboriladi. Conflict holatlarini client UID, MODSEQ va boshqa kengaytmalar yordamida boshqarishi mumkin.

Quota

Server mailbox hajmi uchun quota belgilashi mumkin.

Quota to‘lsa:

  • yangi xat yetkazilmasligi;
  • attachment yuklanmasligi;
  • papkaga nusxalash ishlamasligi;
  • server ogohlantirish yuborishi

mumkin.

IMAP quota kengaytmasi clientga foydalanilgan va ruxsat etilgan hajmni ko‘rsatishi mumkin.

IMAP va POP3

Jihat IMAP POP3
Asosiy nusxa Serverda Ko‘pincha lokal qurilmada
Papkalar Server tomonida boshqariladi Standart protokolda yo‘q
Flag sinxronizatsiyasi Bor Juda cheklangan
Bir nechta qurilma Mos Noqulayroq
Qisman yuklash Keng imkoniyat Cheklangan
Server qidiruvi Bor Yo‘q
Oflayn ishlash Lokal cache bilan Yuklangan xatlar bilan

POP3 sodda yuklab olish uchun, IMAP esa zamonaviy ko‘p qurilmali mailbox boshqaruvi uchun mos.

Diagnostika

IMAP muammosida quyidagilar tekshiriladi:

Clientdagi xat soni serverdagi son bilan mos kelmasa, UID, papka holati, filter va lokal cache qayta ko‘riladi.

Bog‘liq tushunchalar

Email, Mailbox, SMTP, POP3, UID, UIDVALIDITY, Flags, FETCH, STORE, SEARCH, IDLE, EXPUNGE, MIME, TLS