Bosh sahifa Wiki STORE

STORE

STORE — IMAP protokolida mailbox ichidagi bir yoki bir nechta xabarning bayroqlarini o‘zgartirish uchun ishlatiladigan buyruqdir. U xabar matnini tahrirlamaydi; Seen, Answered, Flagged, Deleted, Draft va server qo‘llaydigan kalit so‘zlar kabi holat atributlarini yangilaydi.

Buyruq tuzilishi

Oddiy shaklda mijoz xabarlar ketma-ketligi, amal turi va bayroqlar ro‘yxatini yuboradi. Masalan, 2:4 oralig‘idagi xabarlarga o‘qilgan belgisini qo‘shish uchun STORE 2:4 +FLAGS (Seen) mazmunidagi buyruq ishlatiladi. IMAP sintaksisida system flag oldidan teskari qiya chiziq keladi; bu yerda nom mazmuniy ko‘rinishda berildi.

Uch asosiy amal mavjud:

  • FLAGS mavjud bayroqlar to‘plamini yangisi bilan almashtiradi;
  • +FLAGS ko‘rsatilgan bayroqlarni mavjud to‘plamga qo‘shadi;
  • -FLAGS ko‘rsatilgan bayroqlarni olib tashlaydi.

Bayroqlarni to‘liq almashtirishda mijoz bilmagan holatlarni yo‘qotish xavfi bor. Masalan, boshqa qurilma Flagged qiymatini qo‘shgan, eski holatga tayangan mijoz esa FLAGS (Seen) yuborgan bo‘lsa, Flagged o‘chib ketadi. Faqat kerakli farqni +FLAGS yoki -FLAGS bilan ifodalash ko‘pincha xavfsizroq.

Sequence number va UID

STORE xabarlarga sequence number orqali murojaat qiladi. Bu raqam mailboxdagi joriy tartibga bog‘liq va EXPUNGE sodir bo‘lganda o‘zgarishi mumkin. Uzoq muddatli sinxronlash uchun UID STORE ishlatiladi. UID mailbox doirasida barqarorroq bo‘lsa-da, UIDVALIDITY o‘zgarganidan keyin eski identifikatorlar qayta tekshiriladi.

Bir sessiyada xabarlar o‘chirilayotgan paytda noto‘g‘ri sequence numberga STORE yuborish boshqa xabar bayrog‘ini o‘zgartirishi mumkin. IMAP serveri ekspunj hodisalarini mijozga bildiradi, mijoz esa mahalliy raqamlar xaritasini darhol yangilashi kerak.

Server javobi

Odatiy STORE muvaffaqiyatli o‘zgargan xabarlar uchun FETCH javoblari orqali yangi FLAGS qiymatini qaytaradi. Amal nomiga .SILENT qo‘shimchasi berilsa, aynan shu o‘zgarishlardan keladigan javoblar kamayadi. Bu katta to‘plamda trafikni tejaydi. Biroq mijoz boshqa sessiya kiritgan yangiliklar haqida keladigan javoblarni baribir qayta ishlashi lozim.

Server buyruqni OK, NO yoki BAD natijasi bilan yakunlaydi. OK sintaksis va bajarilish muvaffaqiyatini, NO ruxsat yoki holat sababli amal bajarilmaganini, BAD esa ko‘pincha buyruq tuzilishi noto‘g‘riligini bildiradi. Faqat aloqaning uzilmaganiga qarab o‘zgarish saqlangan deb hisoblash mumkin emas.

Shartli yangilash

Bir mailboxni telefon, brauzer va ish stoli dasturi bir vaqtda o‘zgartirishi mumkin. CONDSTORE kengaytmasi har bir xabarning modifikatsiya ketma-ketligi qiymatini kuzatadi. UNCHANGEDSINCE sharti bilan yuborilgan STORE faqat xabar mijoz bilgan nuqtadan keyin o‘zgarmagan bo‘lsa bajariladi. Mojaro aniqlansa, server bajarilmagan xabarlarni qaytaradi va mijoz yangilangan holatni olishi mumkin.

Bu mexanizm ma’lumotlar bazasidagi optimistik bloklashga o‘xshaydi: resurs doimiy qulflanmaydi, lekin yozishdan oldingi versiya tekshiriladi. U barcha mojaroni avtomatik hal qilmaydi; qaysi bayroq ustunligini mijoz siyosati belgilaydi.

Deleted bayrog‘i va ruxsatlar

STORE orqali Deleted qo‘yish xabarni darhol yo‘q qilmaydi. Fizik olib tashlash EXPUNGE bilan bajariladi. Shu sababli o‘chirish amali ko‘pincha belgilash va tozalash bosqichlariga ajraladi. Shared mailboxda foydalanuvchi xabarni o‘qish huquqiga ega bo‘lib, bayroq o‘zgartirish huquqiga ega bo‘lmasligi mumkin. Server ACL va mailbox holatiga qarab STOREni rad etadi.

Read-only rejimida ochilgan mailboxda ham o‘zgarish saqlanmaydi. Mijoz SELECT va EXAMINE farqini, PERMANENTFLAGS javobini hamda server qo‘llaydigan keywordlarni hisobga olishi kerak.

Bog‘liq tushunchalar

IMAP, Flags, UID, FETCH, EXPUNGE, CONDSTORE, Access control list