قابلية تسليم البريد وDNS

مولد سجل SPF: دقق الناتج قبل نشره في DNS

بقلم Alexey Bulygin
تدقيق ناتج مولد سجل SPF في إعدادات DNS

عثرت على مولد سجل SPF مجاني، وحددت كل الخيارات - Google Workspace وMailchimp ونظام CRM - ثم لصقت الناتج مباشرة في DNS. بعد أسبوعين، ترفض Gmail فواتيرك بالرمز 550 5.7.26، وتعيد Outlook الرمز 550 5.7.515. وتمتلئ قائمة طلبات الدعم.

أعطاك مولد سجل SPF ناتجا صحيح البنية، لكنه لم يعطك بالضرورة سجلا عاملا. عند هذه الفجوة تتضرر قابلية التسليم. إذا كنت لا تزال تبني إعداد DNS الكامل، فابدأ بدليل إعداد البريد على نطاقك؛ إذ يمثل SPF جزءا من منظومة أوسع تشمل MX وDKIM وDMARC.

يشرح هذا الدليل أسباب فشل المولدات الآلية في بيئة الإنتاج، وكيفية تدقيق ناتجها في خمس دقائق بأدوات متاحة لديك، والشكل الفعلي لسجل SPF الجاهز للإنتاج.

ما الذي يفعله مولد سجل SPF فعليا

مولد سجل SPF أداة ويب تنشئ سجل TXT في DNS بجمع آليات include: الخاصة بالمزودين وفقا للخيارات التي تحددها. تختار المرسلين فتحصل على نص. لكنه لا يستعلم من DNS الفعلي، ولا يحسب عمليات البحث المتداخلة، ولا يعرف عدد سجلات SPF الموجودة أصلا على نطاقك.

معظم مولدات SPF المجانية ليست أكثر من أدوات متقدمة لجمع النصوص؛ تنتج شيئا يبدو صحيحا من دون التحقق من عمله في بيئة DNS الحقيقية. صحة البنية لا تعني الصحة التشغيلية.

أنماط الفشل الـ3 التي يفوتها كل مولد SPF

ترجع معظم أعطال SPF المهمة في الإنتاج إلى واحدة من ثلاث مشكلات. ولا يرى مولد SPF المعتاد أيا منها لأنه يعمل من دون بيانات DNS الفعلية أو منطق حساب عمليات البحث الذي تستخدمه الخوادم المستلمة أثناء التقييم.

1. خطأ PermError بسبب سجل مزدوج

يجب أن يملك النطاق سجل SPF واحدا بالضبط. ينص RFC 7208 بوضوح على أن عثور الخادم المستلم على سجلي TXT يبدآن بـ v=spf1 يعيد PermError، أي فشل دائم. قد تعامل Gmail وYahoo هذا الخطأ معاملة غياب SPF. عندها ترتد الرسائل أو تنقل بصمت إلى البريد المزعج.

لا تتحقق المولدات من وجود سجل سابق. إذا كان نطاقك نشطا منذ أكثر من بضعة أشهر، فمن المرجح وجود سجل أنشأه المسجل أو المضيف السابق أو من أعد Google Workspace قبل ثلاث سنوات. نشر ناتج المولد من دون فحص ينشئ سجلا مكررا ويعطل إعدادا كان يعمل.

2. حد عمليات البحث المتداخلة

يقصر RFC 7208 تقييم SPF على 10 عمليات بحث DNS بالضبط. ويشمل العدد كل include: وa وmx وexists وredirect، إلى جانب كل عملية متداخلة تطلقها include. يحسب مولد SPF الآليات التي تختارها، لكنه لا يحسب ما بداخلها.

المزود المحددعدد المولدعمليات البحث الفعلية
Google Workspace14 (تتضمن _netblocks.google.com المتداخلة وغيرها)
Zendesk12-3
Mailchimp12
Salesforce12-3
الإجمالي410-12 → PermError

يعرض المولد 4 عمليات بحث، لكن الخادم المستلم يصل إلى #11 ويتوقف. تفشل رسائل نطاقك كلها في SPF. لا يظهر تحذير في الواجهة، وقد لا تصلك رسالة ارتداد. وربما لا تعرف بالمشكلة حتى يشكو العملاء.

3. حد عمليات البحث الفارغة (RFC 7208 §11.1)

هناك قيد ثانوي: لا يجوز أن تعيد أكثر من 2 من استعلامات DNS نتيجة فارغة (NXDOMAIN). يسبب خطأ مطبعي واحد في include: عملية بحث فارغة. ومع خطأين من هذا النوع يفشل سجل SPF كله، حتى لو اجتاز فحص البنية في المولد.

مثال: include:spf.trekmaill.net (حرف 'l' زائد). البنية صحيحة ويضع مولد SPF علامة الصحة. يجري الخادم المستلم البحث ولا يجد شيئا - عملية البحث الفارغة #1. وعند وجود include ثانية معطوبة يفشل السجل بالكامل.

كيفية تدقيق ناتج مولد SPF قبل النشر

قبل نشر أي ناتج من مولد SPF، أجر هذه الفحوص الثلاثة على DNS الفعلي. تستغرق خمس دقائق وتكشف المشكلات الحرجة التي فاتها المولد: السجلات المكررة، والعمق الزائد لعمليات البحث، والبنية المعطوبة. وتعمل على macOS وLinux وموجه أوامر Windows.

الخطوة 1: تحقق من وجود سجل

نفذ هذا الأمر قبل إجراء أي تغيير في DNS:

nslookup -type=txt yourdomain.com

إذا رأيت سطرين يبدآن بـ v=spf1، فلديك سجل مكرر. ادمجهما يدويا في سجل واحد قبل نشر أي شيء جديد.

# Broken - two records, PermError guaranteed:
"v=spf1 include:_spf.google.com -all"
"v=spf1 include:spf.trekmail.net -all"

# Fixed - merged into one:
v=spf1 include:_spf.google.com include:spf.trekmail.net -all

الخطوة 2: احسب عمليات البحث المتداخلة

استعلم عن محتوى كل include: في سجلك:

dig +short txt _spf.google.com

الناتج:

"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"

تطلق include:_spf.google.com الواحدة 4 عمليات بحث فعلية. كرر ذلك لكل مزود في سجلك واجمع النتائج. إذا تجاوز الإجمالي 10، فعليك إعادة الهيكلة، وعادة يكون ذلك بنقل بريد المعاملات إلى نطاق فرعي (send.yourdomain.com) له سجل أقصر مستقل.

الخطوة 3: دقق الآليات

قارن النص الذي أنشأه مولد SPF بالجدول التالي:

الآليةالحالةالإجراء
ptrمهملةاحذفها - ينصح RFC 7208 صراحة بعدم استخدامها، فهي بطيئة وغير موثوقة.
+allغير آمنةاحذفها - تسمح للإنترنت كله بالإرسال باسم نطاقك.
ip4: 1.2.3.4بنية غير صالحةاحذف المسافة. يجب أن تكون ip4:1.2.3.4.
?allضعيفةتجنبها - فالسياسة المحايدة لا توفر حماية من الانتحال.
~allمقبولةSoftFail - استخدمها خلال الترحيل فقط، لا كإعداد دائم.
-allصحيحةHardFail - ترفض المرسلين غير المصرح لهم. استخدمها في الإنتاج.

قائمة تدقيق بنية SPF

سواء استخدمت مولد SPF للمسودة الأولى أو كتبت النص يدويا، راجع هذه القائمة قبل لمس DNS. تغطي الفحوص كل خطأ لا يستطيع المولد اكتشافه، من السجلات المكررة وحدود البحث المتداخل إلى محددات السياسة غير الآمنة.

  1. سجل واحد لكل نطاق. ادمج السجلات عند وجود تكرار. لا تنشر سجلين.
  2. يبدأ بـ v=spf1. لا تستخدم أي صيغة مختلفة. النص دقيق.
  3. ينتهي بـ -all أو ~all. لا تستخدم +all أو ?all.
  4. عناوين IP قبل include. لا تكلف آليات ip4: وip6: أي عمليات بحث DNS - ضعها أولا لتسريع التقييم.
  5. لا توجد إحالة ذاتية. تنشئ include:yourdomain.com حلقة لا نهائية. احذفها.
  6. لا تسطح عناوين IP يدويا إلا إذا حافظت أتمتة على تحديثها. إذا غيرت Google العناوين ولم تحدث السجل، فقد يتعطل بريدك بصمت.
  7. إجمالي عمليات البحث ≤ 10. احسب كل شيء، بما فيه include المتداخلة.

سجل جاهز للإنتاج:

v=spf1 ip4:192.0.2.1 include:spf.trekmail.net include:_spf.google.com -all

عناوين IP أولا (لا تكلفة بحث)، ثم include، ثم hard fail في النهاية. هذا كل المطلوب.

لماذا تتجاوز الوكالات والشركات الصغيرة مولدات SPF

يناسب مولد SPF نطاقا واحدا بمرسل أو اثنين. لكن عند التوسع - وكالة تدير عشرات العملاء أو شركة تستخدم مجموعة SaaS كاملة - يتحول إلى خطر تشغيلي متكرر بلا رؤية مركزية لعدد عمليات البحث أو السجلات المكررة في المحفظة.

الطريقة القديمة: سجل SPF فريد لكل عميل، ناتج من جلسة مولد مختلفة، ومن دون سجل تدقيق. يبلغ نطاق ما حد البحث. تمر ثلاثة أيام قبل أن يلاحظ أحد. وتتضرر سمعة التسليم لدى العميل.

لرؤية متكاملة لحماية بنية البريد على مستوى الشركة، راجع دليل تأمين البريد التجاري، فهو يغطي الأساس الكامل الذي يتجاوز SPF وحده.

كيف يزيل TrekMail مشكلة مولد SPF

ينشأ تعقيد SPF من إدارة عدة مرسلين خارجيين والبقاء تحت سقف 10 عمليات بحث. يقلل TrekMail المشكلتين في بنية بريدك الأساسية، بحيث لا تحتاج إلى تشغيل مولد SPF أو حساب العمليات المتداخلة أو تدقيق آليات نطاق الإرسال الرئيسي.

للشركات الصغيرة: Include واحدة بلا صيانة

في خطة Starter من TrekMail ($3.50/شهر)، يمر التسليم الصادر عبر SMTP المدار من TrekMail. يصبح سجل SPF سطرا واحدا:

v=spf1 include:spf.trekmail.net -all

يدير TrekMail تدوير IP وسمعة المرسل خلف include. لا تحتاج عادة إلى تغيير السجل مجددا من أجل TrekMail. لا جلسة مولد مطلوبة، ولا تدقيق عمليات بحث بعد ستة أشهر عند إضافة أداة SaaS جديدة.

للوكالات: قالب واحد لكل عميل

الطريقة القديمة: 100 عميل و100 سجل SPF من 100 تشغيل مختلف للمولد، لكل منها خطره في البحث المتداخل. وقد يفشل أي واحد دون تنبيه مباشر.

طريقة TrekMail: قالب واحد عبر كل نطاقات العملاء:

v=spf1 include:spf.trekmail.net -all

في خطة Agency ($23.25/شهر)، تدير 1,000+ نطاق من لوحة واحدة. توحيد بريد الشركة على TrekMail يزيل مشكلة البحث المتداخل من قناة الاتصال الأساسية. إذا كنت توسع إعدادا متعدد النطاقات، فاقرأ كيف تغير استضافة البريد متعدد النطاقات صورة الإدارة.

لإعداد DNS الكامل الذي يتوقعه TrekMail مع SPF - MX وDKIM وDMARC - توضح وثيقة سجلات DNS المطلوبة الأربعة في مكان واحد.

الأسئلة الشائعة عن مولد سجل SPF

تظهر هذه الأسئلة بعد أن تنتج جلسة مولد SPF الأولى سجلا لا يعمل. وترجع كلها إلى الفجوة بين التحقق البنيوي الذي يجريه المولد والتحقق التشغيلي الذي يتطلب فحص DNS الفعلي.

هل يمكنني استخدام مولدين لمقارنة الناتج؟

يمكنك ذلك، لكن تشغيل مولد ثان لا يحل المشكلة الأساسية. قد تمنحك أداتان نصين مختلفين، ولا تكتشف أي منهما السجلات المكررة في DNS الفعلي أو تحسب البحث المتداخل دائما بدقة. خطوات CLI أعلاه هي الفحص الأكثر موثوقية.

يقول المولد إن السجل صالح. لماذا يرتد البريد؟

تعني كلمة "صالح" لدى مولد SPF أن البنية صحيحة، لا أن السجل يعمل في بيئتك. السببان الأكثر شيوعا لهذه الفجوة هما سجل مكرر يطلق PermError، أو عدد عمليات بحث متداخلة يزيد على 10. يتطلب كلاهما فحص DNS الفعلي لا مجرد تحقق في الواجهة.

متى أستخدم -all بدلا من ~all؟

استخدم -all (HardFail) في الإنتاج لرفض المرسلين غير المصرح لهم مباشرة. استخدم ~all (SoftFail) فقط أثناء الترحيل عندما لا تكون متأكدا من إدراج كل مرسل. إنها حالة مؤقتة وليست غاية. مولد SPF الذي يختار ?all أو +all افتراضيا يهتم بمظهر العمل أكثر من قابلية التسليم الفعلية.

الخلاصة

مولد SPF المجاني نقطة بداية معقولة لصياغة النص، لكنه نهاية سيئة للاستخدام في الإنتاج. أنماط الفشل الثلاثة التي يفوتها - السجلات المكررة، وتجاوز البحث المتداخل، وأخطاء البحث الفارغ - تسبب ارتدادات صامتة وأخطاء PermError قد يستغرق تشخيصها ساعات.

الحل ليس مولد SPF أفضل، بل تدقيق CLI في خمس دقائق: افحص السجلات المكررة، واحسب البحث المتداخل، وراجع الآليات، ثم انشر.

إذا فضلت تجاوز عملية التوليد تماما، يجمع TrekMail الإرسال الصادر في include: واحدة. سطر واحد في DNS، بلا حساب للبحث أو تشخيص PermError.

ابدأ تجربة مجانية لمدة 14 يوما - تتطلب بطاقة ائتمان ويمكن الإلغاء في أي وقت.

شارك هذه المقالة

نستخدم التقنيات الضرورية لتشغيل TrekMail وحمايته. عند التأكيد، تسمح أيضًا بتحليلات محدودة وقياس الإعلانات كما هو موضح في سياسة ملفات تعريف الارتباط.

تسجيل الدخول إلى TrekMail

الوصول إلى لوحة التحكم وصناديق البريد وإعدادات DNS الخاصة بك.

أو

12 أحرف كلمتا المرور متطابقتان

أو

تم إرسال بريد إعادة التعيين

إذا كان هناك حساب مرتبط بهذا البريد الإلكتروني، فقد أرسلنا تعليمات إعادة تعيين كلمة المرور.

بالمتابعة، فإنك توافق على شروط TrekMail و سياسة الخصوصية.