การวินิจฉัย · คำตอบพร้อมแหล่งอ้างอิง
DKIM Fail Body Hash Did Not Verify: วิธีวินิจฉัยและแก้ไข
ข้อผิดพลาด DKIM body hash did not verify เกิดขึ้นเมื่อเนื้อหาอีเมลถูกแก้ไขหลังจากใส่ลายเซ็น DKIM แล้ว เซิร์ฟเวอร์ผู้รับคำนวณแฮชของเนื้อหาที่ได้รับใหม่และพบว่าไม่ตรงกับแฮชที่เก็บไว้ในเฮดเดอร์ DKIM-Signature จึงตรวจสอบไม่ผ่าน
สาเหตุของการแก้ไขเนื้อหา
สาเหตุที่พบบ่อยที่สุดคือเมลเซิร์ฟเวอร์ตัวกลางหรืออุปกรณ์รักษาความปลอดภัยเปลี่ยนเนื้อหาข้อความ เช่น เพิ่มช่องว่างท้ายบรรทัด แทรก tracking pixel ต่อท้ายด้วยข้อความปฏิเสธความรับผิดทางกฎหมาย หรือเปลี่ยนตัวจบบรรทัดจาก CRLF เป็น LF แม้เปลี่ยนตัวอักษรเพียงตัวเดียวในเนื้อหาหรือโครงสร้าง MIME ก็ทำให้แฮชเข้ารหัสใช้ไม่ได้และได้ผล fail
การตั้งค่า Canonicalization
DKIM ใช้อัลกอริทึม canonicalization เพื่อกำหนดว่าอนุญาตให้แก้ไขได้มากเพียงใดก่อนแฮชจะล้มเหลว Canonicalization แบบ simple เข้มงวดและล้มเหลวเมื่อมีการเปลี่ยนแปลงใด ๆ ส่วนแบบ relaxed ไม่สนใจการเปลี่ยนช่องว่างบางแบบและความต่างของตัวพิมพ์ในเฮดเดอร์ หากข้อความของคุณถูก relay แก้ไขบ่อย การเปลี่ยนเป็น canonicalization แบบ relaxed ช่วยป้องกันความล้มเหลวที่ไม่จำเป็นได้
ปัญหา MIME และการเข้ารหัส
การจัดการ Content-Transfer-Encoding ไม่ถูกต้องอาจทำให้แฮชไม่ตรงกัน หาก relay แปลงข้อความจาก quoted-printable เป็น 8bit หรือแก้ไข charset body hash ที่ได้จะเปลี่ยนไป ตรวจสอบให้แน่ใจว่าตัวลงลายเซ็นและชั้นการขนส่งเป็นไปตามมาตรฐานใน RFC 2045 เพื่อรักษาความสมบูรณ์ของเนื้อหา
ขั้นตอนการวินิจฉัย
เพื่อแก้ปัญหา ให้ตรวจสอบเฮดเดอร์ดิบของข้อความที่ล้มเหลว เปรียบเทียบเนื้อหาต้นฉบับที่ส่งกับเนื้อหาที่ได้รับเพื่อหาว่าถูกแก้ไขตรงไหน คุณใช้ SendHQ หรือเครื่องมือฟรีของ SendHQ (https://sendhq.cc/tools) ตรวจสอบการตั้งค่าเรคคอร์ด DKIM ปัจจุบันและยืนยันว่า public key เผยแพร่ใน DNS ถูกต้องได้
แนวทางป้องกัน
หลีกเลี่ยง mail relay ที่แก้ไขเนื้อหา หากจำเป็นต้องใช้บริการที่ต่อท้ายข้อความ ให้แน่ใจว่าการลงลายเซ็นเกิดที่ hop สุดท้ายของห่วงโซ่การส่ง หรือใช้ ARC (Authenticated Received Chain) เพื่อรักษาผลการยืนยันตัวตนเดิมข้ามหลาย hop ให้ผู้รับปลายทางเชื่อถือลายเซ็นเดิมได้
คำถามที่ทีมมักถาม
ความล้มเหลวของ body hash กระทบ SPF หรือไม่
ไม่ SPF และ DKIM เป็นอิสระต่อกัน ความล้มเหลวของ DKIM body hash ไม่ทำให้ผล SPF pass เสียไป แต่อาจกระทบ DMARC alignment หาก DKIM เป็นวิธียืนยันตัวตนหลัก
การเพิ่มท้ายข้อความทำให้เกิดข้อผิดพลาดนี้ได้หรือไม่
ได้ การเพิ่มข้อความปฏิเสธความรับผิดขององค์กรหรือท้ายข้อความของเมลลิสต์หลังจากลงลายเซ็นแล้วทำให้เนื้อหาเปลี่ยน ซึ่งทำให้ DKIM body hash ใช้ไม่ได้
canonicalization แบบ simple กับ relaxed ต่างกันอย่างไร
แบบ simple เข้มงวดและล้มเหลวเมื่อมีการเปลี่ยนแปลงใด ๆ ส่วนแบบ relaxed อนุญาตให้เปลี่ยนช่องว่างและตัวพิมพ์ของเฮดเดอร์เล็กน้อย จึงทนต่อการแก้ไขของ relay ได้ดีกว่า
การเปลี่ยนหัวข้อเมลทำให้ body hash fail หรือไม่
ไม่ หัวข้อเมลเป็นส่วนของเฮดเดอร์ การเปลี่ยนหัวข้อจะทำให้ header hash ล้มเหลว ไม่ใช่ body hash