الخلاصة

  • يجعل RFC 5256 الفرز وبناء السلاسل قابلين للتكرار، لكن كل نتيجة تبقى إسقاطاً يتحدد بنطاق البحث والخوارزمية والمقارنة وجودة الرؤوس وحالة الصندوق.
  • قد تنشأ الحافة من مرجع Message-ID معلن، أو سلف وهمي يسد غياباً، أو دمج بالموضوع؛ ولا يثبت أي منها وحده قصد الرد أو النسب الكامل أو الحيازة أو التسليم.

رسمٌ أنيق سبق الملف الكامل

في مراجعة حادثة ظهرت سبع رسائل تحت جذر واحد. قرأها الفريق كسلسلة أمر وموافقة وتنفيذ. لم يظهر في الرسم أن البحث بدأ بعد يومين من فتح القضية. لم يكذب الخادم؛ فقد نظم المجموعة التي طُلبت منه. الخطأ كان في تحويل الجزء المنظم إلى تاريخ كامل.

يبدأ THREAD ببحث. لا يستخرج محادثة قائمة بذاتها، بل يختار الرسائل المطابقة ثم يطبق الخوارزمية المطلوبة. تغيير الفترة أو الكلمة أو صندوق البريد أو حالته قد يبدل الشجرة من دون تغيير بايت واحد في الرسائل. النتيجة تجيب: كيف ترتب هذه القاعدة هذه السجلات الآن؟ ولا تجيب وحدها: ماذا جرى بين الأشخاص بالكامل؟

ينبغي فصل طبقة السجل عن طبقة التحويل وعن العرض. الرسائل وبيانات الخادم الوصفية سجل. البحث وفك الترميز والتطبيع والمقارنة وبناء الشجرة تحويل. الإزاحة والخطوط ووسم «محادثة» عرض. يمكن للواجهة جمع الطبقات لتسهيل القراءة، لكنها لا تكتسب بذلك سلطة لم تمنحها المادة الأصلية.

تتوزع السيطرة بين أربعة أطراف

يختار العميل معايير البحث ومجموعة المحارف والخوارزمية. يعالج الخادم لقطة من الصندوق ويفسر الرؤوس ويعيد أرقام تسلسل أو UID. أنشأ برنامج المرسل حقول Message-ID وReferences وIn-Reply-To. ثم تختار الواجهة شكل الرسم.

قد يتصرف الجميع وفق المعيار وتبقى الخلاصة خاطئة. مرجع زائف تعالجه الخوارزمية بصورة صحيحة يصبح فرعاً مقنعاً. وقد يغيب الأب لأنه استُبعد من البحث أو حُذف أو لم يصل أصلاً. الخط لا يصادق على صاحب الرأس، والفراغ لا يشرح سبب نفسه.

هنا تظهر مشكلة الوكالة: من اختار كل تحويل، ومن يتحمل الضرر إذا صار المنظر رواية المؤسسة الرسمية؟ لا يجوز أن يحدد مالك الواجهة وحده من رد ومن وافق ومن تحمّل المسؤولية.

ORDEREDSUBJECT يجمع الموضوعات ولا يعيد بناء النيات

يسمي RFC 5256 خوارزمية ORDEREDSUBJECT «poor man's threading». تستخرج موضوعاً أساسياً بإجراء إلزامي، وتجمع الرسائل ذات النتيجة المتساوية، ثم ترتبها بتاريخ الإرسال. تصبح الأولى جذراً، وكل ما بعدها أبناء مباشرين وإخوة بعضهم لبعض. لا يوجد أحفاد.

هذه البساطة مقصودة. إنها تصنيف بالموضوع حين تندر المراجع، وليست شجرة لمن رد على من. قد تجمع رسالتين مستقلتين تحملان الموضوع نفسه، وقد تقسّم حواراً حقيقياً عندما يغير أحدهم العنوان.

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

REFERENCES يرتب ادعاءات ناقصة

تستخدم REFERENCES معرفات الرسائل في References، وتلجأ في شروط محددة إلى أول معرف صالح في In-Reply-To. تطبّع الصيغ المتكافئة وترفض رابطاً يصنع حلقة.

لكن البيانات الحقيقية ناقصة. فالرسالة التي لا تملك Message-ID صالحاً تحصل على معرف فريد لأغراض الحساب. وإذا كررت رسائل عدة المعرف نفسه، تحتفظ به الأولى ذات رقم التسلسل الأدنى، وتحصل البقية على معرفات مصطنعة. وإذا أُشير إلى سلف غير موجود في المجموعة، ينشئ الخادم رسالة وهمية تمسك موضعه.

بعد ذلك يأتي التقليم. يُحذف الوهمي بلا أبناء. وقد يُحذف الوهمي ذو الأبناء مع رفع أبنائه مستوى. وقد يبقى وهمي بنيوي قرب الجذر إذا شوّه الرفع الشكل. وتُحل تعارضات القوائم المبتورة بقواعد تحدد متى يبقى الرابط ومتى يُكسر.

هذا إصلاح حتمي لا تنقيب تاريخي. العقدة الوهمية ليست رسالة مستعادة. رفع الأبناء لا يثبت غياب وسيط. والمعرف المصطنع لا يصبح هوية مصادقاً عليها. الشجرة تسجل قرار الخوارزمية أمام عدم اليقين ولا تلغي عدم اليقين.

قد يدمج الموضوع جذوراً لم تصلها المراجع مباشرة

بعد بناء علاقات المعرفات، تقارن REFERENCES الموضوع الأساسي للجذور. يمكن دمج سلاسل لها الموضوع غير الفارغ نفسه، وقد تُفضّل رسالة لا تبدو رداً أو يُنشأ أب وهمي جديد يجمع فرعين.

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

يقول RFC نفسه إن بيانات References: الكاذبة قد تدخل سلسلة في أخرى. يزيل تطبيع Message-ID اختلافات الكتابة، لكنه لا يصادق على من كتب الحقل ولا يثبت الرواية التي حملها.

ترتيب التاريخ قد يمزج ساعات مختلفة

ينفذ SORT البحث أولاً ثم يطبق المفاتيح بترتيب الأولوية. تتبع السلاسل المقارنة النشطة. وعند تساوي المفاتيح الصريحة يصبح رقم تسلسل الصندوق مفتاحاً ضمنياً أخيراً. لذلك لا يساوي REVERSE SUBJECT قلب نتيجة SUBJECT كاملة، لأن فض التعادل الضمني لا ينعكس.

يبدأ معيار DATE من رأس Date: بعد تحويله إلى UTC. تُعطى المناطق أو الأوقات غير الصالحة بدائل محددة. وإذا تعذر فهم تاريخ الإرسال يُستخدم INTERNALDATE. قد تجمع قائمة واحدة وقتاً صرح به الكاتب، وقيمة عولجت بقواعد، وتاريخاً يحتفظ به الخادم.

أضاف RFC 5957 فرز الاسم المعروض. يستخدم الاسم الكامل المفكوك إن وجد، ويرجع إلى صندوق البريد والمضيف عند غيابه، لكنه لا يخمن لقب العائلة بحسب اللغة. هذا الحد سليم: ينبغي للترتيب أن يعلن مفتاحه، لا أن يتنكر في صورة نظام بشري عالمي.

المنظر المتجدد ليس سجل حيازة

تتفوق UID على أرقام التسلسل، لكنها تحتاج إلى الصندوق وUIDVALIDITY. يسمح RFC 5267 بتحديث نتائج البحث والترتيب مع تغير الصندوق، ويسمح RFC 5182 بإعادة استعمال نتيجة محفوظة. كلاهما يحسن الكفاءة ولا يصنع دفتر تاريخ غير قابل للتبديل.

عند اتخاذ قرار حساس، احتفظ بحالة الصندوق، والاستعلام ومجموعة المحارف، والخوارزمية، والمقارنة، وقدرات الخادم وإصداره، وUIDVALIDITY وUID، والرؤوس الخام، والمعرفات المطبعة، وقاعدة كل حافة، والعقد الوهمية وترقياتها، ودمج الموضوعات، ومفاتيح فض التعادل، وبصمة النتيجة، وإصدار العرض.

عبارة «وضع منظر RFC 5256 الرسالة B تحت A في هذه اللقطة» قابلة للتدقيق. أما «كُتبت B رداً على A» فتحتاج دليلاً مستقلاً. و«قرأ المستلم A ووافق عليها» حدث آخر تماماً.

المصادر