عیبیابی · پاسخ مستند
عیبیابی خطای DKIM: body hash did not verify
خطای DKIM body hash did not verify زمانی رخ میدهد که بدنه ایمیل پس از اعمال امضای DKIM تغییر کرده باشد. سرور گیرنده هش بدنه دریافتی را دوباره محاسبه میکند و میبیند با هش ذخیرهشده در هدر DKIM-Signature مطابقت ندارد و در نتیجه تأیید شکست میخورد.
علتهای تغییر بدنه
رایجترین علت، تغییر محتوای پیام توسط یک سرور ایمیل میانی یا تجهیزات امنیتی است؛ از جمله افزودن فاصلههای خالی در انتهای خطوط، درج پیکسلهای ردیابی، اضافه کردن سلب مسئولیت حقوقی یا تبدیل پایان خطوط از CRLF به LF. حتی تغییر یک کاراکتر در بدنه یا ساختار MIME هش رمزنگاریشده را نامعتبر میکند و نتیجه fail را به دنبال دارد.
تنظیمات canonicalization
DKIM از الگوریتمهای canonicalization (یکسانسازی) استفاده میکند تا مشخص کند پیش از شکست هش چه مقدار تغییر مجاز است. canonicalization نوع simple سختگیرانه است و با هر تغییری شکست میخورد. نوع relaxed برخی تغییرات فاصلهگذاری و تفاوت حروف بزرگ و کوچک در هدرها را نادیده میگیرد. اگر پیامهای شما مرتب توسط relayها تغییر میکنند، استفاده از canonicalization نوع relaxed میتواند از شکستهای غیرضروری جلوگیری کند.
مشکلات MIME و کدگذاری
مدیریت نادرست Content-Transfer-Encoding میتواند به عدم تطابق هش منجر شود. اگر یک relay پیام را از quoted-printable به 8bit تبدیل کند یا charset را تغییر دهد، هش بدنه حاصل تغییر میکند. مطمئن شوید عامل امضاکننده و لایههای انتقال از استانداردهای تعریفشده در RFC 2045 پیروی میکنند تا یکپارچگی بدنه حفظ شود.
مراحل عیبیابی
برای رفع این مشکل، هدرهای خام پیام ناموفق را بررسی کنید. بدنه اصلی ارسالشده را با بدنه دریافتی مقایسه کنید تا دقیقاً بفهمید تغییر کجا رخ داده است. میتوانید با SendHQ یا ابزارهای رایگان آن (https://sendhq.cc/tools) پیکربندی فعلی رکورد DKIM خود را بررسی کنید و مطمئن شوید کلید عمومی بهدرستی در DNS شما منتشر شده است.
راهکارهای پیشگیری
از mail relayهایی که محتوا را تغییر میدهند استفاده نکنید. اگر ناچارید از سرویسی استفاده کنید که پانویس اضافه میکند، مطمئن شوید امضا در آخرین گام زنجیره تحویل انجام میشود. راه دیگر، پیادهسازی ARC (Authenticated Received Chain) است تا نتایج احراز هویت اولیه در چند گام حفظ شود و گیرنده نهایی بتواند به امضای اولیه اعتماد کند.
پرسشهایی که تیمها میپرسند
آیا شکست body hash بر SPF اثر دارد؟
خیر، SPF و DKIM مستقل از هم هستند. شکست body hash در DKIM نتیجه pass در SPF را نامعتبر نمیکند، اما اگر DKIM روش اصلی احراز هویت بوده باشد، ممکن است بر همراستایی DMARC اثر بگذارد.
آیا افزودن پانویس میتواند این خطا را ایجاد کند؟
بله، افزودن سلب مسئولیت سازمانی یا پانویس فهرست پستی پس از امضای پیام، محتوای بدنه را تغییر میدهد و body hash در DKIM را نامعتبر میکند.
تفاوت canonicalization نوع simple و relaxed چیست؟
simple سختگیرانه است و با هر تغییری شکست میخورد. relaxed تغییرات جزئی در فاصلهگذاری و حروف بزرگ و کوچک هدرها را مجاز میداند و در برابر تغییرات relayها مقاومتر است.
آیا تغییر موضوع ایمیل باعث شکست body hash میشود؟
خیر، موضوع بخشی از هدر است. تغییر موضوع باعث شکست هش هدر میشود، نه شکست body hash.
منابع اصلی
- RFC 6376: امضاهای DomainKeys Identified Mail (DKIM) — RFC Editor
- RFC 2045: MIME بخش اول: قالب بدنه پیامهای اینترنتی — RFC Editor
- RFC 8617: زنجیره دریافت احرازشده (ARC) — RFC Editor