التعريف
DKIM (DomainKeys Identified Mail) مواصفة لمصادقة البريد الإلكتروني تستخدم تشفير المفتاح العام لتوقيع الرسائل الصادرة، فيتمكن خادم البريد المستلم من تأكيد أن الرسالة جاءت من النطاق الذي تدّعي مصدره ومن أن جسم الرسالة والرؤوس المختارة لم تُعدَّل أثناء النقل. ينشر النطاق الموقّع مفتاحه العام في DNS؛ وتسترد الخوادم المستلِمة هذا المفتاح وتستخدمه للتحقق من التوقيع المُدمج في رأس البريد DKIM-Signature.
طُوّر DKIM من اقتراحَين سابقَين متداخلَين — DomainKeys من Yahoo وIdentified Internet Mail من Cisco — ونُشر أول مرة كـIETF RFC 4871 في 2007. المواصفة المعتمدة الحالية هي RFC 6376 المنشورة في سبتمبر 2011، وقد حُدّثت بـRFC 8301 (2018) وRFC 8463 (2018) لفرض خوارزميات تشفير أقوى. DKIM منتشر على نطاق واسع في النظام البيئي للبريد، وهو مكون مطلوب لسياسة DMARC التي توفر حماية ذات معنى.
كيف يعمل
عند إرسال خادم بريد لمنظمة رسالة، تنفذ وحدة توقيع DKIM (المدمجة في خوادم MTA مثل Postfix وExim وMicrosoft Exchange، أو المقدمة كخدمة من مزودين معاملاتيين كـSendGrid وMailgun وAmazon SES وPostmark) العمليات التالية.
يختار الموقّع مجموعة فرعية من الرؤوس لإدراجها في التوقيع — عادةً From وTo وSubject وDate وContent-Type — ويُنمّطها باستخدام إحدى خوارزميتين معرّفتين: simple (تطبيع مساحة بيضاء بحدّه الأدنى) أو relaxed (أكثر تساهلًا، يتسامح مع إعادات كتابة طفيفة للرؤوس أثناء النقل). يُنمّط جسم الرسالة بالمثل ويُجزّأ باستخدام SHA-256 (الخوارزمية المفروضة منذ أن أهملت RFC 8301 SHA-1 الأقدم). ثم يحسب الموقّع توقيعًا رقميًا RSA أو Ed25519 على تجزئة الرأس بالإضافة إلى سلسلة منظمة لبيانات التوقيع، ويدرج رأس DKIM-Signature في أعلى الرسالة.
يحتوي رأس DKIM-Signature على: v=1 (الإصدار)، a=rsa-sha256 (الخوارزمية)، d=example.com (نطاق التوقيع، يُعرف بوسم d=)، s=selector1 (المُحدِّد، يُستخدم لاسترداد المفتاح العام المعين)، h=from:to:subject (الرؤوس الموقّعة)، bh=<تجزئة الجسم>، وb=<التوقيع base64>.
ينشر مالك النطاق المفتاح العام المقابل في <المُحدِّد>._domainkey.<النطاق> كسجل DNS TXT. عندما يستلم Gmail أو Outlook أو Yahoo Mail أو أي MTA متوافق مع RFC 6376 الرسالة، يستعلم DNS عن هذا السجل، ويسترد المفتاح العام، ويتحقق من التوقيع التشفيري. التوقيع الصالح ينتج نتيجة DKIM pass. التوقيع المفقود أو غير الصالح، أو أي تعديل على الرؤوس الموقّعة أو الجسم أثناء النقل، ينتج fail أو neutral، وتُمرر النتيجة إلى محرك تقييم DMARC.
تتيح المُحدِّدات (وسم s=) لنطاق نشر عدة مفاتيح DKIM في الوقت ذاته — مفيد لتدوير المفاتيح دون انقطاع الخدمة، أو لعزل المفاتيح عبر أنظمة إرسال مختلفة (مثل marketing._domainkey.example.com مقابل transactional._domainkey.example.com).
أين تصادفها
DKIM متطلب أساسي لقابلية التسليم لأي خدمة تعتمد على البريد. يتضمن مزودو البريد المعاملاتي مثل Amazon SES وSendGrid (جزء من Twilio) وMailgun (جزء من Sinch) وPostmark وSparkPost توقيع DKIM كخطوة تهيئة إلزامية أثناء التحقق من النطاق. يولّد المزود زوج مفاتيح RSA-2048 أو Ed25519، ويعرض المفتاح العام كسجل DNS TXT، ويطلب من مالك النطاق نشره قبل تمكين الإرسال من ذلك النطاق.
بالنسبة لمنصات المسابقات التي ترسل أصوات تأكيد عبر البريد، يُعدّ توقيع DKIM مهمًا للغاية لأن رسائل التأكيد يجب أن تجتاز فحوصات المصادقة التي يطبقها كبار مزودي صناديق البريد — Google Workspace / Gmail وMicrosoft Outlook وExchange Online Protection وYahoo Mail وApple iCloud Mail وProtonMail. الرسائل غير الموقّعة أو التي تفشل توقيعاتها أكثر احتمالًا بكثير أن تُسلَّم إلى البريد العشوائي أو تُحجب كليًا، فيُمنع الناخبون من تأكيد إرسالاتهم.
أدوات اختبار البريد مثل Mail-Tester وGlockApps وMXToolbox DKIM Lookup تتيح للمرسلين فحص تهيئة DKIM وصلاحيتها قبل الإرسال إلى الإنتاج. توفر Google Postmaster Tools وMicrosoft SNDS بيانات قابلية تسليم على المستوى التجميعي تعكس معدلات نجاح DKIM مع الزمن.
أمثلة عملية
تنشر منصة مسابقة مهيأة بمحدِّد DKIM s=contest لنطاق votes.example.com المفتاح العام في contest._domainkey.votes.example.com. كل رسالة تأكيد صادرة تحمل رأس DKIM-Signature موقعًا بالمفتاح الخاص المقابل. عندما يستلم حساب Gmail لناخب الرسالة، يستعلم فلتر Gmail الوارد DNS، ويتحقق من التوقيع، ويسجل نجاحًا، ويُمرر النتيجة إلى مصنف البريد العشوائي. نجاح DKIM المؤكد، إلى جانب محاذاة SPF، يستوفي شروط الامتثال لـDMARC.
يدوّر مدير مسابقة من مفتاح RSA بطول 1024 بت (لم يعد كافيًا تشفيريًا) إلى مفتاح RSA بطول 2048 بت بعد قراءة RFC 8301. يُبقى المُحدِّد القديم نشطًا لسبعة أيام لتغطية أي رسائل قيد النقل، ثم يُزال من DNS. تستخدم كل الرسائل الجديدة المُحدِّد والمفتاح المُحدّثَين.
مفاهيم ذات صلة
يعمل DKIM جنبًا إلى جنب مع سجل SPF — الذي يصادق على عنوان IP لخادم الإرسال — و**DMARC** — الذي يحدد إجراء سياسة وآلية إبلاغ بناءً على نتائج SPF وDKIM. يجب فهم الإشارتين معًا؛ اجتياز DKIM وحده لا يجعل الرسالة متوافقة مع DMARC إذا لم يتطابق نطاق d= مع نطاق RFC5322.From. أما العواقب العملية لإخفاقات DKIM في سياق تشغيل المسابقات فتُشرح في تأكيد الصوت بالبريد، حيث يحدد وضع الرسالة في صندوق الوارد ما إذا كان الصوت المُلقى سيُحسب.