طريقة الاستخدام
- ضع علامة على a: عناوين النطاق نفسه وmx: خوادم بريد النطاق إذا كان النطاق يرسل بريده بنفسه.
- اكتب شبكات خوادمك في شبكات IPv4 وشبكات IPv6، واكتب نطاق أي مزوّد في تضمين هذه النطاقات.
- اختر النتيجة للمرسلين الآخرين تحت كل المرسلين الآخرين. -all هو الخيار الصارم.
- انسخ سجل SPF (TXT) وانشره كسجل TXT على النطاق. تحقق من أن استعلامات DNS (الحد 10) يبقى عند 10 أو أقل.
كيف يقرأ المستقبِل سجل SPF
سجل SPF هو سجل TXT على النطاق الذي يصفه. يبدأ بـ v=spf1 ثم يسرد عناصر: a وmx وip4 وip6 وinclude، ولكل منها مؤهل اختياري. يفحصها المستقبِل من اليسار إلى اليمين، وأول عنصر يطابق يعطي النتيجة: + نجاح، و- فشل، و~ فشل ناعم، و? محايد. والعلامة + هي الافتراضية (RFC 7208، القسم 4.6.2).
- all تطابق كل مرسل آخر، والعناصر التي تأتي بعدها تُتجاهل (RFC 7208، القسم 5.1). وتكتب هذه الصفحة all دائمًا في آخر السجل.
- عندما لا يطابق أي عنصر ولا يوجد redirect، تكون النتيجة محايدة، كأن ?all أنهى السجل (القسم 4.7).
حدّ الاستعلامات العشرة لـ DNS
تكلّف العناصر a وmx وptr وexists وinclude وredirect كل منها استعلام DNS واحدًا، وكذلك الاستعلامات التي يجريها السجل المضمّن. يعيد المستقبِل الذي يحتاج أكثر من 10 استعلامات لفحص واحد خطأً (RFC 7208، القسم 4.6.4). لا تكلّف العناصر ip4 وip6 أي استعلام، ولهذا يمكن كتابة نطاقات عناوين مزوّد منشورة بعناصر ip4 وip6 بدلًا من include.
الطول ونصوص TXT
يتسع النص المفرد في سجل TXT لـ 255 حرفًا على الأكثر. والسجل الأطول يُكتب على هيئة عدة نصوص، ويجمعها المستقبِل دون مسافات (RFC 7208، القسم 3.3). ويجب أن يبقى ردّ DNS للسجل المنشور تحت 512 أوكتيت (القسم 3.4).
مثال: نطاق يرسل من خوادمه وعبر مزوّد واحد
السجل v=spf1 a mx ip4:192.0.2.0/24 ip6:2001:db8:1::/48 include:_spf.example.net -all يسمح لعناوين السجلات الخاصة بالنطاق وخوادم بريده بالإرسال، ويسمح للشبكتين بالإرسال، ويسمح للمرسلين الذين يسمح بهم سجل _spf.example.net بالإرسال. ويفشل كل مرسل آخر (-all).
تكلّف الآليات a وmx وinclude استعلامًا واحدًا لكل منها، وآليتا الشبكة لا تكلّفان شيئًا، فالسجل يُجري 3 استعلامات. ويضيف سجل _spf.example.net استعلاماته، وهذه الصفحة لا تحصيها.
| المقياس | القيمة |
|---|---|
| السجل | v=spf1 a mx ip4:192.0.2.0/24 ip6:2001:db8:1::/48 include:_spf.example.net -all |
| استعلامات DNS | 3 من أصل 10 استعلامات DNS |
| عدد الأحرف | 78 |
الأسئلة الشائعة
هل أستخدم -all أم ~all؟
تطلب -all من المستقبِلين إفشال كل مرسل لم يذكره سجلك، لذلك هي الخيار الصارم. أما ~all فتعلّم المرسلين الآخرين بالفشل الناعم، وتستخدمها نطاقات كثيرة وهي تتحقق من اكتمال القائمة. إذا لم تكن متأكدًا من اكتمالها، فابدأ بـ ~all.
لماذا يفشل سجل فيه أكثر من 10 استعلامات؟
يُجري المستقبِل 10 استعلامات DNS على الأكثر لفحص واحد، والفحص الذي يحتاج أكثر من ذلك يعيد خطأً (RFC 7208، القسم 4.6.4). احذف include التي لم تعد تستخدمها، أو اكتب نطاقات مزوّدك المنشورة بعناصر ip4 وip6، فهي لا تكلّف أي استعلام.
هل يجب أن يكون سجل SPF نصًا واحدًا؟
لا. النص في TXT يتسع لـ 255 حرفًا على الأكثر، والسجل الأطول يُنشر على هيئة عدة نصوص بين علامتي اقتباس، يجمعها المستقبِل دون مسافات (RFC 7208، القسم 3.3). يبيّن ناتج التقسيم في هذه الصفحة النصوص لسجل طويل لا يتسع في نص واحد.
ماذا تفعل include؟
تطلب include:domain من المستقبِل أن يفحص سجل SPF لذلك النطاق ضمن سجلك (RFC 7208، القسم 5.2). وتُحسب استعلامات ذلك السجل ضمن حدك البالغ 10، لذلك قد تكلّف include لمزوّد ما أكثر من الاستعلام الواحد الذي تراه هنا.
هل يكفي سجل SPF لمنع البريد المزيف؟
لا. يفحص SPF الخادم الذي أرسل الرسالة، ثم يتحقق DMARC من أن النطاق في سطر From يطابقه (RFC 7489، القسم 3.1). انشر توقيعات DKIM وسياسة DMARC أيضًا.
هل يرسل هذا المولّد نطاقي إلى أحد؟
لا. يُبنى السجل في متصفحك مما تكتبه، ولا يُجرى أي بحث على الشبكة، ولا يُخزَّن شيء.
المصادر
- RFC 7208 (باللغة الإنجليزية): Sender Policy Framework (SPF)
- RFC 7489 (باللغة الإنجليزية): DMARC, section 3.1 on alignment
- RFC 4291 (باللغة الإنجليزية): IP Version 6 Addressing Architecture
آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.