Bosh sahifa Wiki LIST

LIST

LIST — POP3 protokolida pochta qutisidagi xabarlarning raqami va hajmini olish uchun ishlatiladigan buyruqdir. U transaction holatida, ya’ni foydalanuvchi muvaffaqiyatli autentifikatsiyadan o‘tgandan keyin bajariladi. LIST xabar sarlavhasi yoki matnini bermaydi; u keyingi RETR yoki TOP so‘rovi uchun qisqa ro‘yxat taqdim etadi.

Buyruq shakllari

LIST argumentsiz yuborilganda server ko‘p qatorli javob qaytaradi. Birinchi satr +OK bilan boshlanadi, keyingi satrlarda xabar raqami va uning oktetlarda ifodalangan hajmi yoziladi. Ro‘yxat faqat nuqtadan iborat satr bilan tugaydi. Mijoz aynan shu yakunlovchi satrni tanishi kerak; TCP paketining tugashi javob tugaganini bildirmaydi.

LIST dan keyin xabar raqami berilsa, server faqat shu xabar haqidagi ma’lumotni qaytaradi. Masalan, uchinchi xabar mavjud bo‘lsa, javobda 3 va uning hajmi ko‘rsatiladi. Raqam mavjud bo‘lmasa yoki xabar joriy sessiyada o‘chirish uchun belgilangan bo‘lsa, server -ERR qaytaradi.

Xabar raqami va identifikator

POP3 message number faqat joriy maildrop holatidagi tartib raqamidir. Xabarlar o‘chirilgach yoki yangi sessiya boshlangach raqamlar o‘zgarishi mumkin. Shu sababli mijoz uzoq muddatli sinxronlashda raqamni barqaror identifikator sifatida saqlamaydi. UIDL buyrug‘i server taqdim etsa, xabar uchun nisbatan barqaror unique-id beradi.

LIST natijasi bilan UIDL natijasi bir sessiyada xabar raqami orqali bog‘lanadi. Mijoz ilgari yuklangan unique-idlarni mahalliy bazada saqlab, yangi xabarlarni aniqlashi mumkin. Faqat hajmga tayanish noto‘g‘ri, chunki ikki xabar bir xil uzunlikka ega bo‘lishi mumkin.

Hajm semantikasi

LIST ko‘rsatadigan qiymat xabar uzatilganda olinadigan oktetlar soniga yaqin bo‘lishi kerak. Qator oxiri formatlari va POP3ning dot-stuffing qoidasi tufayli serverdagi fizik fayl hajmi bilan qiymat doim aynan teng bo‘lmasligi mumkin. Mijoz hajmni tarmoq va disk limitini rejalashtirish uchun ishlatadi, lekin uni kriptografik yaxlitlik tekshiruvi deb qabul qilmaydi.

Katta xabarlar mavjud bo‘lsa, mijoz foydalanuvchidan ruxsat olish yoki faqat sarlavhani TOP orqali ko‘rish siyosatini qo‘llashi mumkin. Server esa bitta sessiyadagi ro‘yxatni izchil saqlashi lozim. Parallel yetkazilgan yangi xatlar odatda keyingi sessiyada ko‘rinishi mumkin, bu implementatsiya maildropni qanday bloklashiga bog‘liq.

O‘chirish holati

DELE buyrug‘i xabarni joriy sessiyada o‘chirish uchun belgilaydi. Shundan keyin u LIST natijasida ko‘rsatilmaydi. RSET bajarilsa belgilar bekor qilinadi va xabar yana ro‘yxatga qaytadi. Fizik o‘chirish odatda mijoz QUIT yuborib, sessiya update holatida muvaffaqiyatli yakunlanganda sodir bo‘ladi.

Ulanish kutilmaganda uzilsa, server belgilangan xabarlarni o‘chirmasligi mumkin. Bu qoida xatlarning tarmoq nosozligi sabab tasodifan yo‘qolish xavfini kamaytiradi. Mijoz mahalliy nusxa to‘liq va tekshirilganidan keyingina DELE yuboradi.

Xavfsizlik va resurslar

LIST xabar mazmunini bermasa ham mailboxdagi xatlar soni va hajmini oshkor qiladi. Buyruq faqat autentifikatsiyalangan sessiyada qabul qilinadi va ulanish TLS bilan himoyalanadi. Juda katta ro‘yxat server va mijoz xotirasiga yuk bo‘lmasligi uchun javob oqim sifatida qayta ishlanadi. Server noto‘g‘ri raqamlar va haddan tashqari uzun argumentlarni qat’iy tekshiradi.

STAT bilan aloqasi

STAT mailboxdagi xabarlar soni va umumiy hajmni bitta satrda beradi, LIST esa har xabarni alohida ko‘rsatadi. Mijoz STAT natijasini tez tekshiruv uchun, LISTni esa yuklash rejasini tuzish uchun ishlatishi mumkin. Ikkala natija joriy transaction snapshotiga mos talqin qilinadi.

Bog‘liq tushunchalar

POP3, UIDL, RETR, TOP, DELE, Maildrop, Transaction state