SPF siyosatini yozishni o'rganish

Domeningiz nomidan yuboriladigan elektron pochta xabarlari uchun SPF siyosatini qanday yozish/to‘g‘ri sozlashni o‘rganib oling

Har bir SPF yozuvi v=spf1 bilan boshlanishi shart, so‘ng mexanizmlar ketma-ketligi (chapdan → o‘ngga), keyin kerak bo‘lsa modifikatorlar; tekshiruv birinchi mos keladigan mexanizmda to‘xtaydi va odatda yakuniy natijani all mexanizmi belgilaydi (-all, ~all, ?all).

Umumiy tuzilma (tartib muhim)

v=spf1  <mechanism> <mechanism> <mechanism>  [modifier]

Har bir mexanizm oldidan belgilagich (qualifier) bo‘lishi mumkin:

  • + : Pass (agar qualifier yozilmasa u + qualifier deb qabul qilinadi) — qabul qilish;
  • - : Fail (qattiq rad etish) — rad qilish;
  • ~ : SoftFail — qabul qilinadi, lekin shubhali deb belgilanadi;
  • ? : Neutral — belgilangan siyosat mavjud emas.

Misollar: -all, ~mx, ?include:example.uz.

1. Boshlanishi: versiya (majburiy)

Har doim SPF yozuvi quyidagidan boshlanadi:

v=spf1

Bu elektron xabar qabul qiluvchilarga “SPF 1-versiyasi” ekanini anglatib turadi. Agar bu qiymat bilan boshlanmasa — yozuv noto‘g‘ri hisoblanadi.

2. Mexanizmlar — asosiy qurilish bloklari (sintaksis, ma’nosi, DNS ishlashi)

ip4:<ip4/cidr>

  • Masalan: ip4:203.0.113.5 yoki ip4:203.0.113.0/24.
  • Xabar jo'natuvchi IP manzili shu tarmoqda bo‘lsa, mos keldi deb belgilanadi.
  • DNS lookup amalga oshmaydi (10 talik limit hisobida olinmaydi).

Misol:

v=spf1 ip4:203.0.113.5 -all

ip6:<ip6/cidr>

  • ip4 bilan bir xil, faqat bunisi IPv6 uchun. Bunda ham DNS lookup amalga oshmaydi.

Misol:

ip6:2001:db8::/32

a yoki a:

  • Masalan: a yoki a:mail.example.uz;
  • Domen A/AAAA yozuvini tekshiradi va jo'natuvchi IP manzili bilan solishtiradi;
  • Yaxshisi mail.example.uz ni ko‘rsatish maqulroq;
  • DNS lookup amalga oshiriladi (limitga kiradi). Imkoni bo‘lsa ip4/ip6 ishlatganingiz maqulroq.

Misol:

a:example.uz

yoki shunchaki a.

mx yoki mx:

  • Masalan: mx yoki mx:example.uz;
  • MX yozuvlarini va ularning IP manzillarini tekshiradi;
  • Asosiy domenni (example.uz) ko‘rsatish tavsiya etiladi;
  • DNS lookup amalga oshiriladi.

include:

  • Masalan: include:_spf.google.com;
  • Bu mexanizm domen SPF siyosatini ushbu domen SPF siyosati sifatida o'ziga qo‘shadi. Agar Pass(+) bilan berilsa — mos keldi deb qabul qilinadi;
  • DNS lookup amalga oshiriladi, 10 talik limitda hisobga olinadi.

exists:

  • Masalan: exists:%{i}._spf.example.uz;
  • Domen A yozuvi mavjudligini tekshiradi. 10 talik limitda hisobga olinadi.

all

  • Yakunlovchi va "istalgan, har qanday boshqa holatlar uchun" kabi ma'noda ishlatiladi:
    • -all = butunlay rad etish;
    • ~all = qisman rad etish;
    • ?all = neytral.
  • DNS lookup amalga oshirilmaydi.

3. Modifikatorlar

redirect=

  • Agar mexanizmlar mos kelmasa, SPF tekshiruvini boshqa domenga yo‘naltiradi;
  • Agar all mavjud bo‘lsa, redirect ishlamaydi.

exp=

  • Qandaydir FAIL bo‘lsa, sababini matn shaklida qaytaradi;
  • 10 lik limitga qo‘shilmaydi.

Muhim qoidalar: 10 talik DNS lookup limiti

SPF bo‘yicha mexanizm va modifikatorlar maksimum 10 ta bo'lishi mumkin. Bundan oshadigan bo'lsa — PermError-ga olib keladi.
Hisobga olinmaydiganlari: ip4, ip6, all, exp.
Hisobga olinadiganlari: include, a, mx, ptr, exists, redirect.

Tekshiruv algoritmi

  1. Qabul qiluvchi server example.uz TXT yozuvini tekshiradi;
  2. SPF satrini tahlil qiladi (bu yozuv bitta bo‘lishi kerak);
  3. Mexanizmlarni chapdan o‘ngga tekshirishni boshlaydi;
  4. Agar birortasiga mos kelsa — natijani qaytaradi;
  5. Agar hech qaysinisi to'g'ri kelmasa va redirect mavjud bo'lsa — mana shu redirect-da berilgan domen tekshiruviga uzatadi;
  6. Agar hech qaysinisi to'g'ri kelmasa va redirect mavjud bo'lmasa — ?all (neytral) sifatida tekshiruv to'xtaydi;
  7. Agar 10 dan limit oshsa — PermError qaytariladi.

Amaliy misollar

Hammasini rad etish (email serverga ega bo'linmagan holat uchun muqobil variant)

v=spf1 -all

Bitta server (IP orqali ruxsat berish)

v=spf1 ip4:203.0.113.5 -all

Domen A/MX va Google Workspace ishlatsa

v=spf1 a mx include:_spf.google.com -all

Bir nechta "uchinchi taraf" xizmatlaridan foydalanilsa

v=spf1 include:_spf.google.com include:spf.sendgrid.net include:mailgun.org -all

Sinov rejimi (yumshoq rad etish)

v=spf1 ip4:203.0.113.5 ~all

Ko‘p uchraydigan xatolar

  • 10 dan ortiq DNS lookup qoidalari → PermError. Yechimi: include-larni kamaytirish, o'rniga ip4/ip6 ishlatish;
  • Bir nechta SPF TXT yozuvi → bu noto‘g‘ri;
  • +all yoki all umuman yo‘qligi → spufingga ruxsat berish bilan bir amal;
  • ptr → sekin va ishonchsiz. Foydalanish tavsiya etilmaydi;
  • Har doim DKIM+SPF+DMARC ishlatish eng maqul variant hisoblanadi. Ularning birortasini berilmasligi tushunarsiz tizimni yuzaga keltirishi mumkin.

Qo‘shimcha

  • redirect — ko‘plab subdomenlar uchun SPF siyosati sozlanayotgan bo'lsa, mana shu modifikatordan foydalanish qulayroq variant hisoblanadi;
  • exp — kamdan-kam qo‘llanadi, lekin tushunarli tilda taqdim qilinadigan xatolik sharhlarini beradi.

SPF yozuv sozlangandan so'ng quyidagilar bo'yicha tekshirib oling:

  • SPF yozuvi domen uchun faqat bitta TXT yozuvi bilan sozlanganmi?
  • Faqat real IP/hostlarni yozib sozlanganmi?
  • DNS lookup amal qiluvchi mexanizmlar umumiy hisobda ≤ 10 holatdami?
  • Avval ~all, keyin -all kabi qulay struktura qo'llanganmi?
  • DKIM + DMARC bilan birgalikda sozlanganmi?