إذا كنت ترسل البريد من نطاقك، فإن إعداد DKIM في DNS جزء مهم من التحقق من هوية المرسل ودعم قابلية الوصول. دون توقيع DKIM، لا يستطيع خادم الاستقبال استخدام DKIM للتحقق من سلامة المحتوى الموقع أثناء النقل. تفرض Google وYahoo وMicrosoft متطلبات DKIM على المرسلين بكميات كبيرة، وهو إشارة تحقق مهمة أيضا للنطاقات قليلة الإرسال.
يمر هذا الدليل بالعملية كاملة: إنشاء المفاتيح، ونشر سجل DNS، وتفعيل التوقيع، ثم التحقق. يركز على الخطوات والصياغة والمشكلات الشائعة. وسواء أنشأت السجلات يدويا أم استخدمت منصة مدارة، تبقى المبادئ نفسها.
ما سجل DKIM؟
سجل DKIM هو إدخال TXT في DNS يحمل الجزء العام من زوج مفاتيح تشفير. يوقع نظام الإرسال الرسائل بالمفتاح الخاص. يجلب خادم الاستقبال المفتاح العام ويفحص التوقيع، ليتحقق من تفويض النطاق الموقع ويكشف تغييرات الترويسات والمحتوى الموقع أثناء النقل. يعرف DKIM في RFC 6376، وهو عنصر أساسي في التحقق الحديث من هوية البريد.
إنشاء سجل DKIM في 4 خطوات
الخطوة 1: إنشاء زوج مفاتيح DKIM
تحتاج أولا إلى زوج مفاتيح: مفتاح خاص يبقى على نظام الإرسال، وعام ينشر في DNS. تعتمد طريقة الإنشاء على إعدادك.
إذا استخدمت خدمة بريد مستضافة مثل Google Workspace أو Microsoft 365 أو Zoho، فإن المزود يقدم عادة بيانات المفاتيح وتعليمات DNS. انسخ السجل الذي يوفره. في Google Workspace، انتقل إلى وحدة تحكم المشرف > التطبيقات > Google Workspace > Gmail > مصادقة البريد الإلكتروني، ثم اختر «إنشاء سجل جديد».
إذا كنت تدير خادم البريد بنفسك باستخدام Postfix أو Exim أو OpenDKIM، فأنشئ الزوج من سطر الأوامر:
openssl genrsa -out dkim_private.pem 2048
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem
استخدم مفاتيح 2048 بت حيثما تدعم. تذكر أدلة قديمة 1024 بت، لكنها خيار أضعف في 2026. وقد تختلف طريقة تقييم خوادم الاستقبال لتواقيع 1024 بت.
اختر أيضا محددا، وهو اسم يميز هذا المفتاح. تتيح المحددات تدوير المفاتيح أو تخصيص مفتاح لكل خدمة. من الأسماء الشائعة google وs1 وmail2026 أو اسم خدمة مثل sendgrid.
الخطوة 2: إضافة المفتاح العام إلى DNS
هنا تنشر السجل في DNS الخاص بنطاقك. سجل الدخول إلى مزود DNS مثل Cloudflare أو Route 53 أو GoDaddy أو Namecheap، وأضف سجل TXT وفق تعليمات نظام الإرسال. قد يطلب بعض المزودين CNAME بدلا منه.
حقل المضيف/الاسم:
selector._domainkey.yourdomain.com
استبدل selector بالاسم الذي اخترته في الخطوة 1. إذا كان المحدد s1 والنطاق example.com، فالاسم الكامل للسجل هو:
s1._domainkey.example.com
حقل القيمة:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2K4PavXoNY8eGK2u...truncated...base64encodedpublickey
يحمل الوسم p= المفتاح العام الكامل كسلسلة base64. احذف ترويسات PEM مثل -----BEGIN PUBLIC KEY----- وفواصل الأسطر، لتبقى بيانات المفتاح سلسلة متصلة.
مهم: يقتصر طول كل سلسلة TXT منفردة في DNS على 255 محرفا. لذلك تحتاج قيمة مفتاح 2048 بت إلى عدة أجزاء. يقسم بعض المزودين القيمة تلقائيا؛ وإلا فعليك إدخال أجزاء لا يتجاوز كل منها 255 محرفا بين علامتي اقتباس مزدوجتين. تجمع الأجزاء عند معالجة السجل.
الخطوة 3: تفعيل توقيع DKIM على خادم البريد
لا يوقع سجل DNS الرسائل بمفرده. يجب أن يوقع نظام الإرسال الرسائل الصادرة فعليا بالمفتاح الخاص.
Google Workspace: اختر «بدء المصادقة» في لوحة المشرف نفسها التي أنشأت فيها المفتاح.
OpenDKIM مع Postfix/Exim: عدل /etc/opendkim.conf:
Selector s1
KeyFile /etc/opendkim/keys/example.com/dkim_private.pem
Domain example.com
Socket inet:8891@localhost
ثم أضف milter إلى Postfix في /etc/postfix/main.cf:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
أعد تشغيل الخدمتين:
sudo systemctl restart opendkim
sudo systemctl restart postfix
خدمات الإرسال الخارجية مثل SendGrid وMailgun وAmazon SES لها إجراءات تفعيل خاصة بها. تقدم عادة سجل CNAME أو TXT تنشره في DNS، ثم تنفذ التحقق من لوحة المزود.
الخطوة 4: التحقق من السجل
لا تفترض أنه يعمل. تحقق مباشرة.
من سطر الأوامر:
dig TXT s1._domainkey.example.com +short
ينبغي أن يظهر المفتاح العام في الرد. إذا كان الرد خاليا، فافحص الاسم ونوع السجل أيضا؛ فقد يكون السبب التخزين المؤقت أو تأخر ظهور تحديث DNS. تذكر بعض الإرشادات انتظار ما يصل إلى 48 ساعة، لكنه ليس موعدا مضمونا، وتظهر تغييرات كثيرة خلال دقائق.
بإرسال رسالة تجريبية: أرسل إلى Gmail وافحص الترويسات الأصلية. ابحث عن:
Authentication-Results: mx.google.com;
dkim=pass header.i=@example.com header.s=s1
تعني dkim=pass أن توقيع الرسالة التجريبية تحقق، ثم افحص محاذاة DMARC أيضا. إذا ظهرت dkim=fail أو dkim=neutral، فراجع الإعداد والأخطاء الشائعة التالية.
شرح صياغة سجل DKIM
فهم الصياغة مهم، خصوصا في الإعداد الأول. هذه بنية السجل:
v=DKIM1; k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQE...
| الوسم | إلزامي | المعنى |
|---|---|---|
v=DKIM1 | نعم | الإصدار. يجب أن يكون DKIM1. |
k=rsa | لا | نوع المفتاح. RSA هو الافتراضي والشائع. يختلف دعم Ed25519 بين أنظمة الإرسال والاستقبال. |
p= | نعم | المفتاح العام بصيغة base64. تعني قيمة p= الخالية إلغاء المفتاح. |
t=s | لا | يقيد جزء النطاق من هوية التوقيع i= ليطابق نطاق التوقيع d= تماما. دون هذا العلم، يمكن أن يستخدم i= نطاقا فرعيا منه. هذه ليست محاذاة From الخاصة بـ DMARC. |
t=y | لا | وضع الاختبار. تنص المواصفة على ألا يعامل المستقبل الرسائل التي يفشل تحققها بشكل مختلف عن البريد غير الموقع. قد تختلف سياسات الاستقبال الفعلية. احذفه بعد الاختبار. |
أخطاء شائعة عند إنشاء سجلات DKIM
تتكرر الأخطاء نفسها عند الإعداد الأول.
1. فواصل الأسطر داخل المفتاح العام. مشكلة شائعة. قد يؤدي لصق المفتاح من ملف PEM مع فواصل الأسطر في قيمة DNS إلى قيمة غير صالحة. احذف فواصل الأسطر والمسافات من بيانات base64.
2. محدد خاطئ في اسم DNS. أنشأت المفتاح بالمحدد s1 لكن إعداد الخادم يستخدم default. يبحث المستقبل عن default._domainkey.example.com ولا يجد المفتاح المطلوب. يجب أن يطابق محدد DNS المحدد المستخدم في التوقيع تماما.
3. عدة سجلات DKIM للمحدد نفسه. على خلاف SPF الذي يتطلب سجلا واحدا للنطاق، يمكن استخدام عدة محددات DKIM، لكن يجب أن يكون كل منها واضحا وفريدا. قد يجعل نشر سجلي TXT عند s1._domainkey بيانات المفتاح غير صالحة أو ملتبسة.
4. نسيان تفعيل التوقيع. ينشر سجل DNS المفتاح العام فقط. يجب أن يوقع نظام الإرسال الرسائل بالمفتاح الخاص. دون ذلك، لا يؤدي السجل وظيفة التوقيع.
5. استخدام مفاتيح 1024 بت. قد تعمل تقنيا، لكن إرشادات Google للمرسلين والتوصيات الأمنية تفضل 2048 بت حيثما تدعم. للترقية، أنشئ زوجا جديدا وانشر المفتاح العام تحت محدد جديد ثم عدل نظام الإرسال. ألغ المفتاح القديم بإفراغ p= بعد إتاحة وقت للتحقق من الرسائل التي ما زالت في الطريق.
DKIM وSPF وDMARC: منظومة التحقق كاملة
لا يعمل DKIM بمعزل عن غيره، بل هو عنصر من منظومة تحقق ثلاثية.
SPF يفحص تفويض النطاق لعنوان IP الخاص بخادم الإرسال. قد يفشل عند إعادة التوجيه لأن عنوان الإرسال يتغير. ابدأ بـ دليل إعداد سجل SPF واقرأ كيفية عمل SPF للبريد لفهم حد 10 بنود مستدعية لـ DNS والقيود الأخرى.
DKIM قد يبقى صالحا بعد إعادة التوجيه لأن توقيعه مرتبط بالمحتوى لا بعنوان IP، بشرط ألا يتغير المحتوى الموقع بما يفشل التحقق. لذلك يكمل SPF.
DMARC يربط الآليتين ويعلن سياسة التعامل عندما لا يوجد مسار SPF أو DKIM صالح ومحاذ: الحجر أو الرفض أو المراقبة فقط. يجب أن ينجح أحدهما على الأقل وأن يحاذي نطاق From الظاهر.
استهدف نجاح SPF وDKIM ومحاذاتهما، ولا تطبق p=reject إلا بعد التحقق من تدفقات الإرسال المشروعة. يدعم ذلك حماية النطاق، لكنه لا يضمن سمعة نطاق قوية أو الوصول إلى صندوق الوارد.
للأعمال التجارية، تمثل هذه المنظومة أساسا مهما لـ تشغيل بريد آمن، لا ضمانا أمنيا شاملا.
كيف يساعد TrekMail في إعداد DKIM؟
الإدارة اليدوية ممكنة لنطاق واحد، لكن الأتمتة تصبح أنفع مع عشرات النطاقات. يزداد عبء تدوير المفاتيح وإدارة محددات الخدمات واكتشاف الإعدادات الخاطئة.
يوفر TrekMail معالج SPF وDKIM وDMARC مع تعليمات DNS لمسار الإرسال المختار. في الإرسال المدار تستخدم بيانات DKIM الظاهرة في TrekMail. أما مع SMTP الخارجي، فالمفاتيح وتعليمات التوقيع تأتي من المزود الفعلي. تساعد فحوص DNS على رصد الأخطاء، لكنها لا تمنع كل مشكلات الوصول مسبقا.
- Nano ($0): BYO SMTP مثل Amazon SES أو Mailgun. اتبع تعليمات DKIM الخاصة بالمزود. تعرض الخطة دون بطاقة ائتمان مطلوبة؛ تحقق من الشروط الحالية.
- Starter ($3.50 شهريا): SMTP مدار وبيانات DKIM عبر TrekMail. تحقق من نطاق دعم إنشاء المفاتيح وتدويرها حاليا. التجربة المذكورة 14 يوما وتتطلب بطاقة.
- Pro ($10 شهريا): يعتمد دعم نطاقات الإرسال المتعددة وإعدادات DKIM الخاصة بها على شروط الخطة. التجربة المذكورة 14 يوما.
- Agency ($23.25 شهريا): موجه للإدارة المركزية لنطاقات العملاء. تخضع سعة 100+ نطاق وميزات التدوير والمراقبة المذكورة للشروط الحالية. التجربة المعلنة 14 يوما.
ليس الهدف الراحة وحدها. قد لا يكتشف سجل DKIM الخاطئ حتى تظهر مشكلات التحقق. يمكن للفحص الآلي المساعدة على اكتشاف الخطأ أبكر.
الخلاصة
تحتاج إلى أربعة عناصر: زوج مفاتيح 2048 بت حيثما يدعم، وسجل TXT تحت المحدد الصحيح، ونظام إرسال يوقع فعليا، وفحص للتحقق. قد يستغرق العمل لنطاق واحد نحو عشر دقائق، لكن انتظار DNS وإعدادات المزود قد يطيلان العملية.
لا تتوقف عند نجاح DKIM. اجمعه مع SPF وDMARC لتقليل إساءة استخدام النطاق. تدعم المنظومة التحقق وحماية العلامة التجارية، لكنها لا تزيل كل مخاطر الوصول والأمان.
لتقليل إدارة DNS اليدوية، اطلع على خطة TrekMail المجانية واستخدم تعليمات المعالج للخطوات المتاحة.