تشخيص · إجابة موثَّقة المصادر
تشخيص خطأ DKIM «body hash did not verify»
يحدث خطأ DKIM «body hash did not verify» عندما يُعدَّل نص الرسالة بعد تطبيق توقيع DKIM. إذ يعيد الخادم المستلِم حساب تجزئة النص الذي استلمه فيجد أنها لا تطابق التجزئة المخزّنة في ترويسة DKIM-Signature، مما يؤدي إلى إخفاق التحقق.
أسباب تعديل نص الرسالة
السبب الأكثر شيوعًا هو تعديل خادم بريد وسيط أو جهاز أمني لمحتوى الرسالة. ويشمل ذلك إضافة مسافات بيضاء في نهاية الأسطر، أو إدراج بكسلات تتبّع، أو إلحاق إخلاءات مسؤولية قانونية، أو تحويل نهايات الأسطر من CRLF إلى LF. وحتى تغيير حرف واحد في النص أو في بنية MIME يُبطل التجزئة التشفيرية ويؤدي إلى نتيجة fail.
إعدادات التوحيد القياسي (Canonicalization)
يستخدم DKIM خوارزميات التوحيد القياسي (canonicalization) لتحديد مقدار التعديل المسموح به قبل أن تُخفق التجزئة. فالتوحيد البسيط (simple) صارم ويُخفق عند أي تغيير، أما التوحيد المرن (relaxed) فيتجاهل بعض تغييرات المسافات البيضاء واختلافات حالة الأحرف في الترويسات. وإذا كانت خوادم الترحيل تعدّل رسائلك كثيرًا، فقد يمنع الانتقال إلى التوحيد المرن إخفاقات لا داعي لها.
مشكلات MIME والترميز
قد تؤدي المعالجة الخاطئة لـ Content-Transfer-Encoding إلى عدم تطابق التجزئة. فإذا حوّل خادم ترحيل الرسالة من quoted-printable إلى 8bit أو عدّل مجموعة المحارف، فستتغير تجزئة النص الناتجة. تأكد من التزام وكيل التوقيع وطبقات النقل بالمعايير المحددة في RFC 2045 للحفاظ على سلامة نص الرسالة.
خطوات التشخيص
لحل هذه المشكلة، افحص الترويسات الخام للرسالة التي أخفقت، وقارن نص الرسالة الأصلي المُرسَل بالنص المستلَم لتحديد موضع التعديل بدقة. يمكنك استخدام SendHQ أو أدواته المجانية (https://sendhq.cc/tools) للتحقق من إعداد سجل DKIM الحالي والتأكد من نشر المفتاح العام بشكل صحيح في DNS.
استراتيجيات الوقاية
تجنّب استخدام خوادم ترحيل البريد التي تعدّل المحتوى. وإذا اضطررت إلى استخدام خدمة تُلحق تذييلات، فتأكد من أن التوقيع يتم عند القفزة الأخيرة في سلسلة التسليم. أو بدلًا من ذلك، طبّق ARC (Authenticated Received Chain) للحفاظ على نتائج المصادقة الأصلية عبر قفزات متعددة، مما يتيح للمستلِم النهائي الوثوق بالتوقيع الأصلي.
أسئلة تطرحها الفرق
هل يؤثر إخفاق تجزئة النص في SPF؟
لا، فـ SPF وDKIM مستقلان. ولا يُبطل إخفاق تجزئة نص DKIM نجاح SPF، لكنه قد يؤثر في محاذاة DMARC إذا كان DKIM هو طريقة المصادقة الأساسية.
هل يمكن أن تسبب إضافة تذييل هذا الخطأ؟
نعم، فإضافة إخلاء مسؤولية مؤسسي أو تذييل قائمة بريدية بعد توقيع الرسالة يغيّر محتوى النص، مما يُبطل تجزئة نص DKIM.
ما الفرق بين التوحيد القياسي البسيط والمرن؟
التوحيد البسيط (simple) صارم ويُخفق عند أي تغيير. أما المرن (relaxed) فيسمح بتغييرات طفيفة في المسافات البيضاء وحالة أحرف الترويسات، مما يجعله أكثر تحمّلًا للتعديلات التي تجريها خوادم الترحيل.
هل يسبب تغيير سطر الموضوع إخفاق تجزئة النص؟
لا، فالموضوع جزء من الترويسة. وتغيير الموضوع يسبب إخفاق تجزئة الترويسة، لا إخفاق تجزئة النص.