الخلاصة

  • لم يكن نجاح DELE إيصالاً بالإزالة؛ بل حجب رقم الرسالة في المعاملة الحالية مع بقاء RSET قادراً على محو العلامات.
  • لا تدخل الجلسة UPDATE إلا بـQUIT من حالة TRANSACTION. الانقطاع غير الطبيعي وانتهاء مهلة الخمول يغلقان من دون إزالة.
  • سمحت RFC 1939 بإزالة بعض الرسائل المعلمة وبقاء بعضها عند نقص الموارد، ولذلك لم تكن الحدود وعداً بالذرية.

الرد الإيجابي وصف نية لا أثراً

قسمت RFC 1081 جلسة POP3 منذ 1988 إلى AUTHORIZATION وTRANSACTION وUPDATE. بعد التوثيق يفتح الخادم maildrop ويحصل عند الحاجة على قفل حصري ويرقم المشهد الحالي.

يشير DELE 4 إلى الموضع الرابع. بعد +OK تصبح الإشارة اللاحقة إلى الرقم خطأ، لكن الرسالة لم تُمح بعد. يستطيع RSET إزالة العلامات كلها ما دامت الجلسة في TRANSACTION. الدليل الذي قدمه الرد محدود: قُبلت النية التخريبية في هذه الجلسة.

حافظ القفل على معنى الأرقام حتى UPDATE، ولم يجعل الرقم هوية دائمة أو يمنح العميل سلطة على سياسة الاحتفاظ. أبقت RFC 1225 وRFC 1460 الترتيب نفسه: علامة، تراجع، UPDATE بواسطة QUIT، إزالة، تحرير القفل، رد ثم إغلاق.

غياب العميل لم يكن موافقة

نصت RFC 1725 صراحة على أن النهاية بغير QUIT صادر عن العميل لا تدخل UPDATE ولا تزيل رسائل. وتنطبق القاعدة على الخروج التلقائي بسبب الخمول.

تحمي القاعدة الفجوة بين استلام الشبكة والتخزين المحلي الدائم. قد يرسل الخادم آخر بايت بينما لم يثبت العميل النسخة على القرص. لو كان سقوط TCP إذناً بالحذف، لأزالت العلة نفسها النسخة الأصلية في اللحظة التي جعلت النسخة المحلية موضع شك.

حتى QUIT يختلف باختلاف الحالة: في AUTHORIZATION ينهي فقط؛ وفي TRANSACTION يفتح UPDATE لأن ثمة maildrop مقفلاً وعلامات محتملة. السلطة في الأمر مع حالته، لا في الكلمة منفردة.

UPDATE حد لا معاملة ذرية

اعترفت RFC 1939 بأن نقص الموارد قد يزيل بعض الرسائل المعلمة أو لا يزيل أياً منها. يمكن للخادم أن يرد -ERR some deleted messages not removed، ولا يجوز أن يمس رسالة غير معلمة. ثم يحرر القفل ويغلق سواء نجح أم فشل.

إذا ضاع الرد النهائي، لا يعرف العميل هل نجح UPDATE كلياً أو جزئياً أو لم يبدأ. ولا يجوز تكرار رقم قديم بعد الاتصال من جديد؛ فقد صار الرقم الرابع يخص رسالة أخرى. يساعد UIDL في مطابقة الباقي، لكنه لا يثبت سبب الغياب، لأن عميلاً آخر أو سياسة الموقع قد تكون حذفت الرسالة.

وسعت RFC 2449 مجموعة العلامات بسياسة EXPIRE 0: عند دخول UPDATE يستطيع الخادم افتراض DELE ضمني لكل رسالة جرى تنزيلها بـRETR. لم تنقل السياسة لحظة الإزالة إلى التنزيل أو الانقطاع.

يسجل دليل IANA خدمة pop3 على المنفذ 110، لكنه لا يقيس الانتشار أو صحة التنفيذ.

حافظ POP3 على أربعة أدلة منفصلة: ما عُلّم، وما حاول UPDATE إزالته، وما وصل من نتيجة، وما ظهر في المصالحة اللاحقة.

المصادر