مهارات الحياة

سجل SPF: هل تعني قطعتان نصيتان وجود سجلين؟

أعداد السجلات والقطع في خمس لقطات مؤلفة، من واحد واثنين إلى واحد وثلاثة
الأعداد من البطاقات المؤلفة؛ لا نعطي بها حكم نجاح رسالة.

الفرق بين أجزاء سجل SPF وتعدد السجلات يبدأ بحفظ حدود كل سجل، لا بعد علامات الاقتباس.

الخلاصة السريعة

قطعتان داخل سجل واحد لا تعنيان سجلين منفصلين.

  • تجمع نصوص السجل دون مسافة مضافة؛ وحد السلسلة 255 بايت من ثماني بتات، لا حد السجل كله. [1]
  • في بطاقاتنا: أ سجل واحد وقطعتان، وب سجلان وقطعتان. يتساوى عدد القطع ويختلف عدد السجلات.
  • أ وهـ يعطيان النص نفسه بقطعتين وثلاث؛ حذف المسافة المعطاة في د يغير النص وبداية الإصدار.
  • بعد v=spf1 تلزم مسافة أو نهاية السجل. يستبعد الاختيار غير المطابق؛ صفر مطابق ينتج none، وأكثر من واحد ينتج permerror. [1]
  • احتفظ باسم المالك ومعرف السجل وترتيب أجزائه ونصه الخام ووقت اللقطة. لا تستنتج البنية من أسطر ملتفة.
  • العد والجمع هنا لا يثبتان نجاح فحص رسالة أو وصولها أو قراءتها؛ لم نختبر نطاقًا فعليًا.

حدد الشيء الذي تعده

يسمح RFC7208 بأجزاء نصية في سجل TXT واحد، تجمع دون مسافات إضافية. حد 255 بايت من ثماني بتات يخص السلسلة الواحدة. وفي الاختيار تنتهي بداية الإصدار v=spf1 بمسافة أو نهاية السجل؛ يستبعد غير المطابق، وصفر مطابق ينتج none، وأكثر من واحد ينتج permerror. [1]

سنفصل في تمريننا بين ثلاث خانات: عدد السجلات المعطاة، وعدد القطع داخلها، وعدد النصوص التي تبقى بعد تطبيق شرط البداية. لا نعطي الخانات الثلاث اسم العدد الصحيح ثم نترك القارئ يخمن المقصود. قد يكون لكل منها جواب مختلف في اللقطة نفسها، دون تناقض حسابي. السؤال الجيد يحدد أولًا هل نعد الحاويات أم محتوياتها أم مجموعة مختارة من الحاويات.

نؤلف خمس لقطات نسميها أ وب وج ود وهـ. كل لقطة مستقلة، وتحتوي جميع سجلات TXT المعطاة لاسم مالك واحد في تمريننا، وفي لحظة واحدة مفترضة. لا نجمع لقطتين في إجابة واحدة، ولا نزعم أنها بيانات منشورة. كلمة كامل هنا شرط للمسألة؛ فإذا كان المقتطف في حالة واقعية ناقصًا، فلا نستطيع إعطاء حكم عن كل السجلات الغائبة منه.

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

عدد القطع نفسه وبنية مختلفة

في اللقطة أ نضع سجلًا واحدًا له المعرف أ١. يحتوي قطعتين مرتبتين: الأولى نصها v=spf1 ثم مسافة محفوظة، والثانية نصها mx -all. إذن لدينا حاوية واحدة وقطعتان داخلها. بعد الجمع نحصل على v=spf1 mx -all. نسجل هذه النتيجة في عمود جديد، ونبقي القطعتين الأصليتين في موضعهما كي يستطيع قارئ آخر مراجعة نقطة الالتقاء بدل الاكتفاء بالنص النهائي.

أما اللقطة ب ففيها سجلان مستقلان: ب١ يحتوي قطعة واحدة نصها v=spf1 mx -all، وب٢ يحتوي قطعة واحدة نصها v=spf1 -all. عدد القطع الكلي اثنتان أيضًا، لكننا لم نضعهما داخل السجل نفسه. لذلك لا نجمع نهاية ب١ مع بداية ب٢. ولو حذفنا معرفي السجلين من ورقة المقارنة، فلن يعود رقم اثنين كافيًا لإظهار الفرق بين هذه اللقطة واللقطة أ.

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

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

راجع موضع المسافة قبل لوم التقسيم

ننشئ اللقطة هـ بسجل واحد وثلاث قطع: v= ثم spf1 مع مسافة محفوظة في النهاية، ثم mx -all. الجمع يعيد النص الذي حصلنا عليه في أ تمامًا. ازداد عدد القطع من اثنتين إلى ثلاث، ولم يتغير النص الناتج في هاتين البطاقتين. هذا مثال على أن تغيير موضع التقسيم يمكن أن يبقي المحتوى نفسه، إذا احتفظنا بجميع المحارف المعطاة وبترتيبها.

في المقابل، نؤلف د من قطعتين داخل سجل واحد: v=spf1 بلا مسافة في نهايتها، ثم mx -all. الناتج هو v=spf1mx -all. لقد التصقت نهاية القطعة الأولى ببداية الثانية. ليست النتيجة مساوية لنص أ، رغم أن عدد السجلات وعدد القطع متساويان بينهما. الذي تغير هنا محرف محدد، وليس ضرورة وجود سجل إضافي أو نقص في عدد أسطر العرض.

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

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

وجود TXT إضافي لا يجيب وحده

تحتوي ج سجلين: ج١ نصه v=spf1 mx -all، وج٢ نصه site-verification=demo. لكل منهما قطعة واحدة، وبذلك تساوي ج اللقطة ب في عدد السجلات والقطع. لكن ج٢ لا يبدأ بقسم الإصدار الذي حددناه. تبقى في ج بطاقة مطابقة واحدة، بينما تبقى في ب بطاقتان. نحتاج محتوى كل سجل بجانب عدده، فلا يستطيع العدد الخام وحده الإجابة عن سؤال الاختيار.

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

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

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

احتفظ بالبنية عندما تنقل التقرير

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

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

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

يمكن كذلك حفظ نسخة قبل المعالجة ونسخة ناتجة عنها، مع وصف العملية التي أجريت. في المقارنة بين أ وهـ نكتب أن التقسيم اختلف والنص النهائي تساوى. وفي المقارنة بين أ ود نكتب أن مسافة معطاة غابت فتغير النص. يتيح هذا الوصف المحدد مراجعة الخطوة المختلف عليها، بدل عبارة عامة تقول إن السجل أصلح أو تعطل دون بيان ما تبدل في المدخلات.

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

افصل قراءة السجل من نتيجة الحملة

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

كما لا نصف النص v=spf1 mx -all بأنه إعداد مناسب لكل متجر؛ لقد استعملناه مادة قصيرة للمقارنة الحرفية، ولم نحصر خدمات إرسال نشاط معين أو نختبر اعتمادها على إعداد محدد. نسخ بطاقاتنا إلى خدمة فعلية ينقلها إلى سؤال آخر لم نعالجه. ما يستطيع القارئ أخذه مباشرة هو طريقة حفظ الحدود ومراجعة النص الناتج وتسمية العدد قبل مناقشة أي تعديل مع المسؤول المختص.

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

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

المصادر ومتابعة القراءة

  1. RFC7208: النصوص واختيار السجل، الأقسام 3.2 و3.3 و4.5 (يفتح في نافذة جديدة)rfc-editor.org

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