Ek A. Toplu ABNF
Bu bölüm uyulması zorunlu bölümlendendir ve önceki metindeki ABNF dizilimleri ile ilgili her çelişki bu dilbilgisinin yardımıyla çözümlenir.
ABNF gösterimi için [RFC4234]'e bakınız. Bu ABNF tanımına göre, dizgesel sabitlerin (tırnak içine alınmış olanlar) harf büyüklüğüne duyarsız oluşuna lütfen dikkat ediniz. Yani, "mx" ile "mx", "MX", "mX" ve "Mx" eşleşir.
kayıt = sürüm terimler *BOŞLUK sürüm = "v=spf1" terimler = *( 1*BOŞLUK ( yönerge / değiştirici ) ) yönerge = [ niteleyici ] mekanizma niteleyici = "+" / "-" / "?" / "~" mekanizma = ( tümü / dahili / A / MX / PTR / IP4 / IP6 / exists ) tümü = "all" dahili = "include" ":" alan-belirtimi A = "a" [ ":" alan-belirtimi ] [ çifte-cidr-uzun ] MX = "mx" [ ":" alan-belirtimi ] [ çifte-cidr-uzun ] PTR = "ptr" [ ":" alan-belirtimi ] IP4 = "ip4" ":" ip4-ağı [ ip4-cidr-uzun ] IP6 = "ip6" ":" ip6-ağı [ ip6-cidr-uzun ] mevcut = "exists" ":" alan-belirtimi değiştirici = sevket / izahat / bilinmeyen-değiştirici sevket = "redirect" "=" alan-belirtimi izahat = "exp" "=" alan-belirtimi bilinmeyen-değiştirici = isim "=" makro-dizgesi ip4-cidr-uzun = "/" 1*RAKAM ip6-cidr-uzun = "/" 1*RAKAM çifte-cidr-uzun = [ ip4-cidr-uzun ] [ "/" ip6-cidr-uzun ] ip4-ağı = dörtlü "." dörtlü "." dörtlü "." dörtlü dörtlü = RAKAM ; 0-9 / %x31-39 RAKAM ; 10-99 / "1" 2RAKAM ; 100-199 / "2" %x30-34 RAKAM ; 200-249 / "25" %x30-35 ; 250-255 ; bilinen noktalı dörtlü gösterim, 192.0.2.0 gibi ip6-ağı = <[RFC3513], 2.2. bölüme göre> ; örn, 2001:DB8::CD30 alan-belirtimi = makro-dizgesi alan-sonu alan-sonu = ( "." tepeyafta [ "." ] ) / makro-genleş tepeyafta = ( *harfrakam HARF *harfrakam ) / ( 1*harfrakam "-" *( harfrakam / "-" ) harfrakam ) ; HRT kuralı artı ek TLD kısıtlamaları ; (bkz, [RFC3696], 2. Bölüm) harfrakam = HARF / RAKAM izahat-dizgesi = *( makro-dizgesi / SP ) makro-dizgesi = *( makro-genleş / makro-sabiti ) makro-genleş = ( "%{" makro-harfi dönüştürücüler *ayraç "}" ) / "%%" / "%_" / "%-" makro-sabiti = %x21-24 / %x26-7E ; "%" hariç görünür karakterler makro-harfi = "s" / "l" / "o" / "d" / "i" / "p" / "h" / "c" / "r" / "t" dönüştürücüler = *RAKAM [ "r" ] ayraç = "." / "-" / "+" / "," / "/" / "_" / "=" name = HARF *( HARF / RAKAM / "-" / "_" / "." ) başlık-alanı = "Received-SPF:" [AKBOŞ] sonuç KBOŞ [açıklama KBOŞ] [ anah-değer-list ] CRLF sonuç = "Pass" / "Fail" / "SoftFail" / "Neutral" / "None" / "TempError" / "PermError" anah-değer-list = anah-değer-çifti *( ";" [AKBOŞ] anah-değer-çifti ) [";"] anah-değer-çifti = anahtar [AKBOŞ] "=" ( nokta-atom / tırnaklı-dizge ) anahtar = "client-ip" / "envelope-from" / "helo" / "problem" / "receiver" / "identity" / mekanizma / "x-" isim / isim kimlik = "mailfrom" ; "MAIL FROM" kimliği için / "helo" ; "HELO"kimliği için / isim ; diğer kimlikler nokta-atom = <[RFC2822]'ye göre tırnaksız sözcük> tırnaklı-dizge = <[RFC2822]'ye göre tırnaklı dizge> açıklama = <[RFC2822]'ye göre açıklama dizgesi> AKBOŞ = <[RFC2822]'ye göre açıklamalı katlama boşlukları> KBOŞ = <[RFC2822]'ye göre katlama boşlukları> CRLF = <[RFC2822]'ye göre standart satır sonu dizgeciği>