شرح SPF و DKIM و DMARC بلغة بسيطة مع سجلات مثال جاهزة، وأخطاء شائعة كسجلي SPF وحد 10 عمليات بحث، وخطة DMARC من none إلى reject.
- شركة برمجيات مصرية منذ 2010
- دعم فني على واتساب
شرح SPF و DKIM و DMARC بلغة بسيطة يبدأ من فكرة واحدة: أي شخص في العالم يستطيع أن يكتب اسم شركتك في خانة «من»، فكيف يعرف المستقبِل أن الرسالة منك فعلًا؟ الجواب ثلاثة سجلات تضيفها في إعدادات DNS لدومينك. نشرحها هنا بأمثلة جاهزة تستبدل فيها example.com باسم دومينك، ثم نعرض الأخطاء التي تكسر البريد، وخطة لتفعيل DMARC تدريجيًا دون أن يضيع بريد مشروع.
شرح SPF و DKIM و DMARC بتشبيه من الحياة اليومية
تخيّل شركة ترسل خطابات رسمية. SPF هو كشف بأسماء السعاة المسموح لهم بتسليم خطابات الشركة. DKIM هو ختم الشركة على الخطاب نفسه، يثبت أنه خرج منها ولم يُغيَّر في الطريق. DMARC هو تعليمات لموظف الاستقبال عند الطرف الآخر: إذا لم تطابق الأسماء والأختام فاقبل الخطاب أو ضعه جانبًا أو ارفضه، وأرسل لنا تقريرًا.
تقنيًا، الثلاثة سجلات من نوع TXT في منطقة DNS (قائمة السجلات التي تحدد أين يذهب موقعك وبريدك). وتُضاف في المكان الذي يدير DNS فعليًا لدومينك: لوحة المضيف إذا كانت خوادم الأسماء (nameservers) له، أو Cloudflare أو مسجّل الدومين إذا كانت عندهم. تعديل سجل في مكان لا يدير DNS لن يؤثر في شيء.
SPF: من يحق له الإرسال باسم دومينك
سجل SPF واحد يسرد المصادر المسموحة. هذا مثال لدومين يرسل من خادم الاستضافة ومن Google Workspace:
النوع TXT، الاسم @ (أي الدومين نفسه)، القيمة:
v=spf1 ip4:203.0.113.10 include:_spf.google.com ~all
معنى الأجزاء: v=spf1 إعلان أن هذا سجل SPF. ip4: عنوان IP الخاص بخادمك (العنوان المستخدم هنا للتوضيح فقط). include: يضم قائمة مزود آخر مثل Google. ~all يعني أن ما عدا ذلك «مشبوه» (softfail)، بينما -all يعني «مرفوض». يمكنك البدء بـ ~all.
حد مهم: يقول المعيار RFC 7208 إن الفحص لا يجوز أن يتجاوز 10 عمليات بحث DNS. تُحسب include و a و mx و ptr و exists و redirect، ولا تُحسب ip4 و ip6 و all. وإذا زاد العدد فالنتيجة permerror، أي أن SPF يُعدّ فاشلًا. كل include يُحتسب مع ما بداخله من سجلات، فكثرة الخدمات (نشرة بريدية، نظام فواتير، CRM) تقرّبك من الحد بسرعة.
وإذا كان بريدك على الاستضافة وحدها فالصيغة الأبسط غالبًا v=spf1 a mx ~all أو ما تولّده لك لوحة المضيف. لا تحذف ما أضافه المضيف قبل أن تعرف سببه، واسأله عن عنوان خادم الإرسال إن كنت تحتاج ip4.
DKIM: ختم رقمي على كل رسالة
الخادم الذي يرسل يوقّع الرسالة بمفتاح خاص يبقى عنده، وتنشر أنت المفتاح العام في DNS ليتحقق منه المستقبِل. اسم السجل يتكون من «selector» ثم _domainkey:
النوع TXT، الاسم:
default._domainkey.example.com
القيمة:
v=DKIM1; k=rsa; p=PUBLIC_KEY_HERE
الـselector اسم اختياري يسمح بوجود أكثر من مفتاح، وقيمته في cPanel غالبًا default وفي Google Workspace هي google. لا تكتب المفتاح بيدك: ولّده من لوحة المزود (في cPanel من Email Deliverability) وانسخه كما هو. وتذكر Google أن طول المفتاح يجب ألا يقل عن 1024 بت وتوصي بـ2048 إن دعمه مزودك. والمعيار هو RFC 6376.
DMARC: ماذا يفعل المستقبِل عند الفشل؟
سجل DMARC يوضع على اسم خاص هو _dmarc:
النوع TXT، الاسم:
_dmarc.example.com
القيمة (بداية آمنة):
v=DMARC1; p=none; rua=mailto:dmarc@example.com
تنجح الرسالة في DMARC إذا نجح SPF أو DKIM وكان نطاق التوثيق متوافقًا (aligned) مع نطاق عنوان From الظاهر للمستلم. وكل ما في الأمر: لا يكفي أن ينجح SPF لدومين المزود، بل يجب أن يطابق دومينك. وتصلك على عنوان rua تقارير مجمّعة (ملفات XML) تعرض من يرسل باسمك.
| السياسة | معناها | متى تستخدمها |
|---|---|---|
| p=none | راقب فقط، لا تغيّر معاملة الرسائل | البداية، لقراءة التقارير |
| p=quarantine | ضع الرسالة الفاشلة في السبام | بعد التأكد من أن المصادر المشروعة كلها تنجح |
| p=reject | ارفض الرسالة الفاشلة | أقوى حماية من انتحال الاسم، بعد استقرار quarantine |
ملاحظة: حلّ RFC 9989 محل RFC 7489 كمعيار لـDMARC، وبقيت السياسات الثلاث كما هي. وأزال المعيار الجديد وسم pct الذي كان يُستخدم للتدرج بالنسبة المئوية (لأن القيمتين 0 و100 فقط كانتا تعملان بثبات)، وأضاف بدلًا منه وسم t للاختبار. لذلك نتدرج بتغيير السياسة نفسها على مراحل.
خطة التفعيل على ثلاث مراحل
- المرحلة 1 (p=none): انشر السجل أعلاه واقرأ التقارير لعدة أسابيع. اكتب قائمة بكل ما يرسل باسمك: الاستضافة، Workspace، النشرة، الفواتير، نماذج الموقع.
- المرحلة 2 (p=quarantine): بعد أن ينجح كل مصدر مشروع في SPF أو DKIM بتوافق مع From، انتقل إلى quarantine وراقب شكاوى الفقد.
- المرحلة 3 (p=reject): بعد فترة هادئة، شدّد إن كان انتحال دومينك يهمك. لا يوجد مدة إلزامية؛ نقترح أسبوعين إلى أربعة لكل مرحلة، وهذه قاعدة عملية وليست معيارًا.
مثال عملي: لماذا ينجح SPF ويفشل DMARC؟
تستخدم خدمة نشرات بريدية لإرسال رسائل باسم info@example.com. تخرج الرسالة بعنوان إرجاع (Return-Path) يتبع دومين الخدمة، فينجح SPF لدومين الخدمة لا لدومينك. وإذا لم توقّع الخدمة بمفتاح DKIM يخص دومينك، فلن يتوافق أي توثيق مع example.com، ويفشل DMARC رغم أن SPF يعرض PASS. الحل أن تفعّل في الخدمة خيار توثيق الدومين (Custom domain authentication) وتنشر ما تطلبه من سجلات DKIM و CNAME.
تحقق بعد النشر
- انتظر حتى ينتشر السجل، ثم أرسل رسالة من كل مصدر إلى حساب Gmail شخصي.
- افتح Show original وتأكد من PASS في SPF و DKIM و DMARC لكل مصدر على حدة.
- تأكد أن النطاق الظاهر بجوار DKIM و SPF هو دومينك أو يتبعه.
- أعد الفحص بعد أي تغيير في الخدمات التي ترسل باسمك.
أخطاء شائعة تكسر السجلات
| الخطأ | النتيجة | الإصلاح |
|---|---|---|
| سجلا SPF للدومين نفسه | permerror، فيفشل SPF | ادمجهما في سجل واحد: v=spf1 a mx include:_spf.google.com ~all |
| أكثر من 10 عمليات بحث | permerror | احذف الخدمات غير المستخدمة، واستبدل include بـip4 حين يكون العنوان ثابتًا |
| include لمزود خاطئ أو بخطأ إملائي | المصدر الحقيقي غير مسموح | انسخ القيمة من وثائق المزود |
| تعديل DNS في مكان لا يديره | لا يتغير شيء | اعرف خوادم الأسماء الفعلية للدومين أولًا |
| مفتاح DKIM انكسر بسطر جديد أو علامة اقتباس | DKIM فاشل | أعد النسخ كسطر واحد، وبعض المزودين يقسّم القيمة الطويلة تلقائيًا |
| سجل DMARC على الدومين بدل _dmarc | لا يُقرأ | ضعه على _dmarc.example.com |
| الانتقال إلى reject مباشرة | فقد رسائل مشروعة | ابدأ بـnone |
وتذكّر أن سجل SPF يوضع كنوع TXT، فالنوع المخصص باسم SPF لم يعد مستخدمًا. وتجنب +all فهي تسمح للعالم كله بالإرسال باسمك.
قائمة فحص سريعة
- أعرف من يدير DNS لدومينك فعلًا.
- سجل SPF واحد، وعدد عمليات البحث في حدود 10.
- DKIM مولّد من المزود ومنشور، ورسالة اختبار تُظهر PASS.
- DMARC على _dmarc بالسياسة none وبعنوان تقارير أقرؤه فعلًا.
- قائمة بكل خدمة ترسل باسمي قبل أي تشديد.
اختبر كل سجل بعد نشره بطريقة قراءة رأس الرسالة وأدوات الفحص. وإن كنت تبحث عن الصورة الكاملة للأسباب فالمرجع الأسباب الثمانية لذهاب بريد الشركة إلى السبام، وإن نقلت استضافتك حديثًا فراجع ما يضيع من إعدادات البريد عند النقل. وللبداية الأساسية في تجهيز بريد باسم شركتك اقرأ دليل البريد الرسمي للشركة.
ما الذي نفعله في برمجلى؟ نضبط لك السجلات ونختبرها
برمجلى شركة برمجة واستضافة في القاهرة منذ 2010، ولدينا 89 موقعًا لعملاء نشغّل لهم الاستضافة ونجهّز بريد الشركة. إذا كنت لا تريد تعديل سجلات DNS بنفسك، فنحن نضبط لك السجلات ونختبرها بإرسال فعلي إلى حسابات حقيقية، ونشرح لك ما وجدناه بلغة مفهومة. وإن كنت تحتاج صناديق بريد جاهزة على دومينك فتجدها في باقات ايميل الشركة. لا نعد بوصول مطلق إلى صندوق الوارد، لأن القرار الأخير عند المستقبِل، لكننا نزيل الأسباب الفنية التي تحت سيطرتك. تواصل معنا على واتساب إن أردت أن نفحص حالتك.
المصادر
- IETF RFC 7208, Sender Policy Framework (SPF), sections 3.2 and 4.6.4
- IETF RFC 6376, DomainKeys Identified Mail (DKIM) Signatures
- IETF RFC 9989, DMARC (obsoletes RFC 7489)
- Google, Email sender guidelines (Gmail Help)
- Yahoo Sender Hub, Sender Requirements and Recommendations
أسئلة شائعة
هل أحتاج SPF و DKIM و DMARC معًا؟
تشترط Google على كل مرسل SPF أو DKIM، وعلى من يرسل 5,000 رسالة أو أكثر يوميًا الثلاثة معًا. وننصح بالثلاثة للجميع، فالتوافق في DMARC لا يعمل إلا بوجود أحد الاثنين على الأقل.
لماذا يقول فاحص SPF إن عندي سجلين وأنا لم أضف إلا واحدًا؟
غالبًا أضافت الاستضافة سجلًا تلقائيًا، وأضفت أنت سجل Workspace أو خدمة أخرى. ادمج المصادر كلها في سجل واحد واحذف الآخر.
هل يؤثر p=none في وصول رسائلي؟
لا يغيّر معاملة الرسائل، فهو للمراقبة وتلقي التقارير. وتقبل Google و Yahoo و Microsoft أن تكون السياسة none كحد أدنى للمرسلين الكبار.
كم يستغرق ظهور السجلات بعد إضافتها؟
يتوقف على إعدادات DNS، وقد يصل لساعات. تذكر Google في وثائق Workspace أن SPF و DKIM قد يحتاجان حتى 48 ساعة، فلا تعدّل مرارًا قبل أن تنتظر.
هل أنسخ مفتاح DKIM من دومين آخر عندي؟
لا. لكل دومين وخادم مفتاحه، ويتولد مع المفتاح الخاص عند الموقِّع. ولّد مفتاحًا جديدًا من لوحة المزود وانشره.
خدمات مرتبطة
- تصميم مواقع الشركات في مصر
- إنشاء متجر إلكتروني
- برمجة مواقع وأنظمة خاصة
- ايميل رسمي للشركات
- أتمتة واتساب للشركات
- نظام شركات السياحة
