Summary
- يظهر
INPROGRESSداخل ردOKغير موسوم، وقد يحمل عداداً للعمل أو يترك الإجمالي مجهولاً أو يعمل فقط كنبضة تمنع انتهاء مهلة الاتصال. - لا ينتهي أمر IMAP إلا برد نهائي يحمل وسمه ويكون
OKأوNOأوBAD. أما بيانات النتيجة وآثارها خارج الخادم فتحتاج إلى أدلة منفصلة.
حين تقترب دائرة التقدم من نهايتها، يبدأ الناس في التصرف كما لو أن النتيجة أصبحت مضمونة. قد يحجز نظام آلي المرحلة التالية، أو يحذف نسخة مصدر، أو يبلغ عميلاً بأن العملية انتهت. الرقم لم يقل شيئاً من ذلك.
في RFC 9585 يستطيع الخادم أن يبلغ عن معالجة 999 عنصراً من هدف قدره 1,000، ثم يكتشف عملاً إضافياً. قد يتغير الهدف أو يتراجع التقدم أو ينتهي الأمر بالفشل. والشيء الذي عده الخادم قد لا يكون هو الشيء الذي ينتظره المستخدم في النتيجة النهائية.
يعالج المعيار مشكلة حقيقية في IMAP. قد يستغرق البحث أو النسخ في صندوق كبير وقتاً يجعل العميل غير قادر على التمييز بين الحساب البطيء والاتصال المتوقف. كان من الممكن إرسال عبارة حرة مثل «ما زلت أعمل»، لكن البرامج لا تستطيع بناء سلوك متوافق على جملة بشرية غير موحدة. لذلك عرّف RFC 9585، المنشور في مايو 2024، قدرة ورمز الاستجابة INPROGRESS.
تبدأ السلسلة بإعلان القدرة. على الخادم الداعم أن يدرج INPROGRESS في رد CAPABILITY. يثبت هذا أن الآلية مدعومة، ولا يَعِد بأن كل أمر سيصدر إشعاراً. إذا اكتمل العمل قبل موعد الإشعار الأول، فقد لا تظهر أي رسالة تقدم.
وإذا اختار الخادم الإشعار، يوصي المعيار بفاصل يتراوح بين عشر وخمس عشرة ثانية. قد يكون الغرض الوحيد منع العميل من إغلاق الاتصال بسبب المهلة. في أبسط صيغة لا توجد تفاصيل، وتُفهم قيمة وسم الأمر والتقدم والهدف جميعاً على أنها NIL. إنها علامة حياة، لا مقياس إنجاز.
تضيف الصيغة المفصلة ثلاثة حقول. يربط CMD-TAG الرسالة بالأمر حين يكون الربط ممكناً. ويحصي PROGRESS العناصر المعالجة. أما GOAL فيمثل إجمالياً إيجابياً يتوقع أن يصل إليه العداد بعد اكتمال الأمر. وإذا تعذر استخدام عدد طبيعي للعناصر، يجوز تمثيل النسبة بهدف 100 وتقدم بين صفر و99.
عدم اليقين جزء من البنية. إذا كان التقدم مجهولاً، يكون التقدم والهدف NIL. وإذا عُرف العداد دون الإجمالي، يبقى الهدف NIL. وإذا تعذر الحصول على الوسم أو احتوى الوسم الأصلي على ]، يصبح وسم الإشعار NIL. يمكن الاستفادة من ذلك حين يوجد أمر واحد فقط؛ أما مع عدة أوامر قيد التنفيذ فلا يمكن نسبة النبضة إلى عملية بعينها بثقة.
ولا ينبغي قراءة القيم كجدول زمني ثابت. من الأفضل أن يرتفع التقدم وأن يبقى الهدف ثابتاً، لكن العميل ملزم بالتعامل مع العكس. عند تغير الهدف أو رجوع العداد، توصي الوثيقة بفهم الأمر على أن هدفاً سابقاً تحقق ثم اكتشف الخادم مرحلة إضافية طويلة. هذا تفسير للاستمرار، وليس برهاناً على حجم العمل الكلي أو وقت الانتهاء.
يفصل تركيب IMAP4rev2 بين النشاط والاكتمال. تبدأ الردود غير الموسومة بعلامة *، وهي تحمل بيانات أو حالة لا تنهي الأمر. أما رد الاكتمال فيعيد الوسم الذي اختاره العميل ويكون OK للنجاح أو NO للفشل أو BAD لخطأ في البروتوكول. ولهذا يجب أن يكون INPROGRESS في OK غير موسوم، ويحظر وضعه في رد موسوم.
وجود كلمة OK لا يكفي. فالرد * OK [INPROGRESS ...] لا يساوي A001 OK الذي ينهي الأمر A001. الأول يصف لحظة داخل التنفيذ، والثاني يقفل الحالة. إذا حذفت منصة السجلات النجمة أو الوسم فقد حذفت المعنى الذي يميز الإشارتين.
حتى نجاح الأمر لا يساوي محتوى النتيجة. في مثال SEARCH تأتي إشعارات بأعداد العناصر المعالجة، ثم يأتي رد SEARCH غير الموسوم بقائمة معرفات الرسائل المطابقة، وبعد ذلك يصل OK الموسوم. الهدف ليس عدد النتائج، والعداد ليس قائمة الرسائل، ورد النجاح لا يخبر وحده بما عثر عليه البحث.
ينص RFC 9585 صراحة على عدم اعتبار القيم مرجعاً لأي استعمال غير تقييم تقدم الأمر. لا يجوز استخدام GOAL بدلاً من خرج SEARCH لمعرفة عدد الرسائل في مجلد. وينطبق الحد نفسه على COPY: عدد الوحدات المعالجة لا يثبت عدد النسخ التي ثبتت في الوجهة أو فُهرست أو نُسخت إلى نظام آخر.
الصمت بدوره ليس دليلاً على التوقف. قبل وصول أول إشعار يفترض العميل تقدماً صفراً وهدفاً مجهولاً. هذا وصف لما يعرفه العميل، لا لما يحدث داخل الخادم. قد ينجح أمر سريع بلا أي إشعار، وقد يستمر خادم معطل في إرسال نبضات من دون إنتاج أثر مفيد.
وتقتضي الحماية فحص الأرقام كما لو جاءت من مصدر معاد. يحذر المعيار من قيم قد تسبب أخطاء حسابية. يجب تجاهل هدف يساوي صفراً أو قيمة سالبة أو ضخمة على نحو غير صالح أو تقدم يتجاوز الهدف. كما ينبغي حفظ التراجعات وتغييرات الهدف كوقائع، لا تنعيمها لإنتاج رسم مريح.
النموذج التشغيلي الصحيح هو آلة حالات. تسجل الاتصال والجلسة الموثقة والقدرة المعلنة والأمر ووسمه وعدد الأوامر المتزامنة. تحفظ كل إشعار خاماً، وتفصل عنه خرج الأمر. لا تنتقل من «قيد التنفيذ» إلى النجاح أو الفشل إلا عند وصول الرد الموسوم المطابق. وإذا كان الأثر المهم في نظام آخر، تجري مطابقة إضافية بعد النجاح.
فالـOK الموسوم إيصال بروتوكولي من خادم IMAP. لا يثبت تلقائياً أن محرك الأرشفة فهرس الرسالة، أو أن النسخة المتماثلة تقاربت، أو أن التزام الاحتفاظ تحقق، أو أن العميل تلقى إشعاراً. كل طبقة جديدة تضيف مطالبة جديدة وتحتاج إيصالها الخاص.
تكمن قيمة RFC 9585 في أنه يكشف النشاط من دون الادعاء بأنه النتيجة. ينبغي أن تحافظ التطبيقات على هذا التواضع.
Sources
- RFC 9585: إشعارات تقدم أوامر IMAP
- سجل RFC 9585 في IETF Datatracker
- سجل تصويبات RFC 9585
- تاريخ مسودة IMAP INPROGRESS
- RFC 9051: بروتوكول IMAP4rev2
- RFC 5530: رموز استجابة IMAP
- RFC 2683: توصيات تنفيذ IMAP4
- RFC 5234: صيغة ABNF لمواصفات البنية
- RFC 2119: الكلمات المفتاحية لمستويات المتطلبات
- RFC 8174: توضيح الكلمات المفتاحية في BCP 14
- سجل IANA لقدرات IMAP
- سجل IANA لرموز استجابة IMAP
- Heng Lu: طبقات الواقع والسلطة الرمزية
- Heng Lu: أولوية الشفرة العاملة
- Heng Lu: الواقع لا المناصرة
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات

