الخلاصة
- ظل كل جزء في
message/partialرسالة بريد مستقلة في النقل؛ جمعidالأجزاء المقصودة، وحددnumberترتيبها، وأعلنtotalعددها المتوقع كي يحاول وكيل المستخدم المستقبل إعادة البناء. - أخذ الناتج معنى كيان MIME الداخلي، لا معنى غلاف دائم يحتوي رسالة أخرى. جمعت القواعد ترويسات من الغلاف الأول ومن الداخل، وأسقطت ترويسات الأغلفة اللاحقة من الكيان المشتق.
- لم يثبت تطابق المعرّف واكتمال التسلسل هوية المرسل أو تساوي النسخ أو سلامة المحتوى أو عرضه. السجل وصف مرشحين؛ والتحقق المحلي وحده أنتج شيئاً قابلاً للاستخدام.
كيان واحد أمام حدود محلية متعددة
يرى المرسل وثيقة واحدة، بينما يراها مسار البريد سلسلة من قرارات التخزين والانتظار والقبول. قد يقبلها خادم، ثم تضعها عقدة في الطابور، وترفضها بوابة لاحقة لأن حدها أصغر. لم يحدد SMTP حجماً أقصى عالمياً لكل المسارات.
وثّق RFC 1123 هذه الفجوة سنة 1989. ألزم برمجيات البريد بإرسال واستقبال رسائل لا تقل قدرتها عن 64 كيلوبايت، وعدّ حداً أكبر بكثير أمراً مرغوباً جداً، وأشار إلى استخدام البريد لنقل وثائق تبلغ ميغابايت أو أكثر. رفع الشرط الحد الأدنى المشترك، لكنه لم يحوّل قدرة كل قفزة إلى ضمان من الطرف إلى الطرف.
كان ممكناً ربط الحل بترقية متزامنة لكل خادم. اختار MIME بدلاً من ذلك إبقاء الرسالة وحدة نقل معروفة، وفصلها عن وحدة المعنى. تحمل رسائل كاملة متعددة كياناً أكبر، ولا يصبح الكل حقيقة تشغيلية إلا عند المستقبل الذي يملك البيانات والقواعد اللازمة لاختباره.
غلاف كامل يحمل محتوى غير مكتمل
عرّف RFC 1341، المنشور في يونيو 1992، النوع message/partial. يعني النوع أن جسم الرسالة الخارجية جزء من رسالة أكبر. أما الرسالة الخارجية نفسها فكانت رسالة بريد حقيقية، يمكن أن يكون لها Message-ID وسلسلة Received ووقت وصول ونتيجة تسليم خاصة بها.
لا يشبه ذلك multipart/mixed. يجمع multipart أجزاء عدة داخل تسليم واحد؛ أما partial فيوزع كياناً مقصوداً على تسليمات عدة. لذلك يجوز أن يصل الجزء الثالث قبل الأول، وأن يسلك كل غلاف بوابة مختلفة، من دون أن تتغير رتبة البايتات داخل الكيان.
قبول SMTP لغلاف يثبت قبول ذلك الغلاف في نقطة معينة. وجود ثلاثة أغلفة في صندوق يثبت تخزينها. لا ينشئ أي من هذين السجلين الرسالة الداخلية، لأن الملاحظة الجزئية لا تملك سلطة إعلان الكل.
ثلاثة معاملات ترسم مجموعة ولا تصادق عليها
يربط id الأجزاء، وكان ينبغي توليده قريباً قدر الإمكان من التفرد العالمي. يضع number الجزء في موقعه، ويبدأ العد من 1. يعلن total العدد المتوقع. ولا يغير ترتيب كتابة المعاملات معناها.
يجب أن يحمل الجزء الأخير total، ويمكن للأجزاء السابقة حذفه، وإن شجعت المراجعات اللاحقة على إدراجه. يستطيع المرسل بذلك أن يبدأ التقسيم قبل معرفة العدد النهائي، لكنه يقدم عند الجزء الذي يصفه بالأخير حداً يمكن للمستقبل فحصه.
أبقى RFC 1521 الآلية سنة 1993 وشدد بعض تفاصيلها. لكنه لم يجعل id بصمة للمحتوى. قد يحمل نسختان من الرقم نفسه بايتات مختلفة، وقد يعاد استخدام المعرّف خطأ، وقد يتعارض العدد الكلي بين الأغلفة. هذه حقول تنسيق لمطالبات التجميع وليست شهادة تشفيرية.
على المستقبل أن يبحث عن سلسلة متصلة من 1 إلى العدد، ويعالج النسخ وفق سياسة معلنة، ويرفض الأعداد المتناقضة، ويضع حدوداً للحجم والوقت، ثم يتأكد من أن الوصل ينتج كيان MIME صالحاً. تحدد المواصفة أسئلة مشتركة قابلة للتكرار؛ ويحدد الكود الجاري ما إذا كانت الأدلة المحلية تجيب عنها.
تعود دلالة الداخل بعد زوال السقالة
بعد التجميع يكون الناتج كيان MIME كاملاً له Content-Type خاص به. إذا كان الداخل صوتاً، يظهر صوتاً، لا رسالة تحتوي رسالة تحتوي صوتاً. كان الغلاف الجزئي سقالة لعبور حد النقل، لا هوية دائمة للمحتوى.
يفصل ذلك بين نوعين من المعرّفات. لكل غلاف خارجي Message-ID لأنه قام برحلة مستقلة. وقد يحمل الداخل Message-ID آخر للرسالة المعاد بناؤها. الأول يصف حدث تسليم، والثاني يسمّي الكيان الناتج. إحلال أحدهما محل الآخر يمحو الفرق بين الرحلة والشيء.
وينطبق الفصل على الزمن أيضاً. وصول number=4 أولاً دليل على المسار والطابور، لا أمر بوضعه أولاً في الجسم. يحكم number الوصل. السرعة ملاحظة وليست سلطة على المعنى.
حمل الجزء الأول أساس الترويسات
لا تكفي إضافة الأجسام، لأن لكل غلاف ترويسات قد تتعارض. لذلك أوجب MIME التقسيم عند حدود الأسطر فقط، ووضع قانوناً غير متماثل لدمج الترويسات.
تنسخ الترويسات العادية من الرسالة الخارجية الأولى، باستثناء Content-* وSubject وMessage-ID وEncrypted وMIME-Version. ويضيف الكيان الداخلي Content-* وتلك الحقول المحددة؛ وتسقط ترويساته الأخرى. ولا تدخل أي ترويسة من الرسالة الخارجية الثانية أو اللاحقة في الناتج.
ثبّت RFC 2046 هذا التقسيم سنة 1996. يوفر الغلاف number=1 السياق الخارجي الباقي، ويوفر الداخل نوع الوسائط وحقول الهوية المختارة. تبقى الأغلفة الأخرى مهمة كأدلة لمسارات منفصلة، لكنها لا تصوت على ترويسة الكيان النهائي.
لذلك لا يمثل الجزء الأول مجرد أول نطاق من البيانات. قد يحفظ نظام كل مقاطع الجسم ويحذف الغلاف الأول مبكراً، فيفقد أساس الترويسة المحدد. كما يخطئ إذا اختار أول غلاف وصل بدلاً من الغلاف ذي الرقم 1.
يحتفظ النظام القابل للتدقيق بالمستويين: الأغلفة الخام لتفسير التسليم والتأخير والتكرار، والكيان المشتق لتسجيل ما بناه المستقبل. حذف الأدلة الخام يجعل قراراً محلياً يبدو كأنه رسالة وصلت كاملة عبر مسار واحد.
اختلاف البوابات فرض قاسماً مشتركاً من نوع 7bit
أنشأت بيانات 8bit أو binary مأزقاً. لا يمكن ببساطة تغليف جسم من نوع message خارجياً بـbase64 أو quoted-printable. إذا قُسم داخل ثنائي احتاج كل جزء إلى نقل ثنائي. والبوابة التي لا ترى إلا جزءاً واحداً لا تستطيع انتظار البقية وإعادة ترميز الكل، لأن الأجزاء الأخرى قد تسلك بوابات مختلفة.
لذلك وجب أن يستخدم message/partial ترميز نقل 7bit، وألا يعتمد الداخل على 8bit أو binary. قدم RFC 2045 الإطار العام لترميزات MIME، وفرض RFC 2046 القيد الأشد على الرسائل الجزئية.
تعترف القاعدة بأن لا وسيط يرى المجموعة كلها. يهيئ المرسل تمثيلاً يمكن لكل مسار مستقل حمله، بدلاً من تعيين بوابة مركزية متخيلة لإعادة البناء. زادت القيود، لكنها حفظت التشغيل البيني بين أطراف لا تشترك في رؤية شاملة.
وقد تقسم عوامل نقل مختلفة الرسالة عند حدود مختلفة. بعد إعادة مجموعة، يمكن أن يكشف الناتج message/partial آخر. سمحت المواصفة بذلك صراحة. يكرر المستقبل الإجراء طبقة بعد طبقة، مع حد محلي للعمق والموارد.
أعلن SIZE حدود القبول ولم ينشئ الداخل
أضاف RFC 1870 امتداد SMTP SIZE سنة 1995. يستطيع الخادم إعلان حد ثابت، ويستطيع العميل إعلان تقدير للحجم قبل إرسال الجسم، فيحدث الرفض المتوقع مبكراً.
لكن SIZE وmessage/partial يعملان في طبقتين مختلفتين. يتناول الأول قبول رسالة واحدة في جلسة SMTP. ويتناول الثاني تفسير رسائل وصلت منفصلة لدى وكيل المستخدم. الرد الإيجابي على إعلان الحجم ليس ضماناً مطلقاً لاكتمال النقل أو التسليم، ولا يقول شيئاً عن دعم إعادة التجميع.
جعل SIZE حداً محلياً مرئياً في وقت أبكر؛ وحفظ partial معنى كيان عبر حدود متعددة. لا تلغي الأداة الجديدة وظيفة القديمة ببساطة، لأن قرار النقل ليس قرار التمثيل.
يحتاج التدقيق إلى ثلاث روايات منفصلة
يسجل دفتر الأغلفة البايتات الخام وMessage-ID الخارجي وReceived ووقت الوصول ونتيجة كل تسليم. ويسجل دفتر المجموعة id والأرقام والأعداد الكلية والفجوات والنسخ المتعارضة والانتهاء. ويسجل دفتر إعادة البناء الجزء المختار لكل رقم، والترتيب، ودمج الترويسات، ونوع الناتج، وأي طبقة جزئية أخرى.
تبقى مصادقة المصدر وسلامة المحتوى وأمانه أحكاماً مستقلة. قد تكون المجموعة الرقمية كاملة وتحمل محتوى ضاراً. وقد تختلف نتائج المصادقة بين الأغلفة. نجاح محلل MIME لا يثبت توقيعاً، ولا يثبت أن التطبيق عرض الناتج أو أن الإنسان قرأه.
تظهر قيمة التصميم في ضيق ادعائه. نسق معرّف صغير بين أنظمة مستقلة من دون أن يصبح سلطة مركزية على الحقيقة. وصف السجل العلاقة؛ وتحقق التنفيذ المحلي منها؛ ثم دخل الكيان الناتج فقط إلى طبقة الاستخدام التالية.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
