IDLE — IMAP protokolining kengaytma buyrug‘i bo‘lib, mijozga ulanishni ochiq tutgan holda mailboxdagi o‘zgarishlar haqida serverdan tezkor xabar olish imkonini beradi. U klassik push xizmati emas, ammo davriy NOOP so‘rovlarini juda tez-tez yubormasdan yangi xat va bayroq o‘zgarishlarini bilish usulini beradi.
Sessiya jarayoni
Mijoz avval server capability ro‘yxatida IDLE mavjudligini tekshiradi va kerakli mailboxni SELECT qiladi. So‘ng tegishli teg bilan IDLE buyrug‘ini yuboradi. Server davom etish javobini bergach, mijoz buyruq holatiga kiradi va odatiy yangi IMAP buyruqlarini yubormaydi. Server EXISTS, EXPUNGE, FETCH kabi untagged javoblar orqali o‘zgarishlarni bildiradi.
Mijoz IDLE holatini tugatish uchun alohida DONE satrini yuboradi. Server dastlabki teg bilan yakuniy OK javobini qaytarganidan keyingina keyingi buyruq boshlanadi. DONE mustaqil IMAP buyrug‘i emas; u davom etayotgan IDLE uchun yakunlovchi signal hisoblanadi.
Yetkaziladigan hodisalar
Yangi xat kelganda mailboxdagi xabarlar soni oshgani EXISTS javobi bilan ko‘rsatiladi. Xabar olib tashlansa EXPUNGE, bayroq o‘zgarsa FETCH ma’lumoti kelishi mumkin. IDLE xabarning to‘liq mazmunini avtomatik yubormaydi. Hodisani olgan mijoz yangi UIDni aniqlaydi va kerakli sarlavha yoki tanani FETCH orqali yuklaydi.
Bu ajratish tarmoq sarfini nazorat qiladi. Telefon dasturi yangi xat borligini bilishi mumkin, ammo katta ilovani faqat foydalanuvchi ochganda oladi. Shuningdek, server bir o‘zgarish uchun aynan bitta bildirishnoma yetkazishini kafolatlaydigan umumiy xabar navbati sifatida ishlamaydi; mijoz uzilishdan keyin holatni qayta solishtirishi zarur.
Ulanish muddati
Tarmoq qurilmalari, NAT va serverlar uzoq faoliyatsiz TCP sessiyasini yopishi mumkin. IMAP tavsifida server IDLE holatidagi mijozni kamida ma’lum muddat davomida uzmasligi ko‘zda tutiladi, amalda mijozlar IDLEni vaqti-vaqti bilan tugatib, qayta boshlaydi. Bu ulanishning tirikligini tekshiradi va infratuzilma timeoutlariga moslashadi.
Mobil tarmoq almashganda yoki qurilma uyqu rejimiga o‘tganda socket uzilishi tabiiy. Qayta ulanishda faqat oldingi bildirishnomaga tayanib bo‘lmaydi. UID, UIDVALIDITY va zarur bo‘lsa QRESYNC ma’lumotlari orqali mailbox holati qayta sinxronlanadi.
Ko‘p mailbox bilan ishlash
Bitta tanlangan IMAP sessiyasi odatda bitta mailboxni kuzatadi. Ko‘p papkani bir vaqtda kuzatish uchun bir nechta ulanish ochish server limitlari va batareya sarfini oshiradi. Ayrim server kengaytmalari tanlanmagan mailboxlardagi o‘zgarishlar haqida qo‘shimcha ma’lumot bera oladi, ammo mijoz capability tekshiruvisiz ularga tayanmaydi.
Ko‘pincha INBOX uchun IDLE saqlanadi, boshqa papkalar esa davriy yoki foydalanuvchi ochganda yangilanadi. Server bir hisob uchun parallel sessiyalar sonini cheklashi mumkin. Shu sababli ulanishlar havzasi va qayta ulanish oralig‘i ehtiyotkor boshqariladi.
Resurs va xavfsizlik
IDLE so‘rovlar sonini kamaytirsa-da, serverda uzoq yashovchi TCP ulanishlari va sessiya holatini ko‘paytiradi. Katta xizmat file descriptor, xotira, load balancer timeouti va bir foydalanuvchiga ulanish limitini hisobga oladi. Hodisalarni ichki message broker orqali IMAP jarayonlariga tarqatish taqsimlangan arxitekturada keng uchraydi.
Ulanish autentifikatsiyalangan mailbox holatini tashiydi, shuning uchun TLS bilan himoyalanishi lozim. Mijoz tarmoq xatosidan keyin credential va sessiya holatini xavfsiz tiklaydi; eski ulanish tirik deb taxmin qilib, maxfiy ma’lumotni noto‘g‘ri kanalga yubormaydi.
Server IDLE hodisalarini audit va metrikalarda oddiy buyruqlardan ajratib kuzatishi mumkin.