Syntaxis van het SPF-record

We hebben deze uitgebreide gids ontwikkeld om je te vergroten SPF begrijpen en helpen bij het oplossen van problemen die onze applicatie mogelijk onder uw aandacht heeft gebracht. Geldig en nauwkeurig zijn SPF record zal leiden tot verbeterde verificatiedekking, afleverbaarheid en helpen bij het bevorderen van het gewenste beveiligingsniveau voor uw domeinen.

Heeft u geen dmarcian-account? U kunt altijd nog de inhoud van uw SPF-record opvragen met behulp van onze diagnostische SPF-tool.

Maak nu een gratis account aan nu te hebben dmarcian controleer uw SPF, DKIM en DMARC registreert automatisch voor u. Krijg direct inzicht in bezorgfouten, phishing- en imitatiepogingen met dmarcian'S SaaS-platform.

Gebruik het onderstaande navigatiemenu om naar het betreffende element van uw SPF-record te gaan. Aanvullende informatie over SPF is te vinden in de gekoppelde artikelen onderaan dit document.

Mechanismen

Mechanismen kunnen worden gebruikt om de set van hosts te beschrijven die zijn aangewezen als aanbieders van uitgaande e-mails voor het domein en kunnen worden voorafgegaan door een van de volgende kwalificatiewaardes:

+ Pass (slagen)
Fail (falen)
~ SoftFail
? Neutral

Als een mechanisme resulteert in een hit, wordt de kwalificatiewaarde ervan gebruikt. De standaard kwalificatiewaarde is dan "+", Dwz" Pass ". Mechanismen worden op volgorde geëvalueerd. Als er geen mechanisme of modifier overeenkomt, is het standaardresultaat "Neutraal".

Meer diepgaande informatie over de verschillen tussen "~" en "" vindt u hier

Voorbeelden:

"V = spf1 -all"

“v=spf1 a -all”

"V = spf1 a mx -all"

"V = spf1 + a + mx -all"

Als een domein geen SPF record, het resultaat is "Geen". Als een domein een tijdelijke fout vertoont tijdens DNS-verwerking, krijg je het resultaat "TempError" (in eerdere concepten "fout" genoemd). Als er een syntaxis of evaluatiefout optreedt (bijv. Het domein specificeert een niet-herkend mechanisme), is het resultaat "PermError" (voorheen "onbekend").

Evaluatie van een SPF-record kan een van deze resultaten opleveren:

Resultaat Uitleg Voorgenomen actie
Pass (slagen) Het SPF-record wijst de host aan die geautoriseerd is om te verzenden accepteren
Fail (falen) Het SPF-record heeft de host aangeduid als NIET geautoriseerd om te verzenden weigeren
SoftFail Het SPF-record heeft de host aangeduid als NIET toegestaan om te verzenden, maar in een overgangsfase accepteren maar markeren
Neutral In het SPF-record staat expliciet dat er niets over de geldigheid kan worden gezegd accepteren
None Het domein heeft geen SPF-record of het SPF-record komt niet tot een resultaat accepteren
PermError Er is een permanente fout opgetreden (bijvoorbeeld slecht geformatteerd SPF-record) niet gespecificeerd
TempError Er is een tijdelijke fout opgetreden accepteren of weigeren

Het "all"-mechanisme

all

Dit mechanisme komt altijd overeen. Het moet altijd aan het einde van het SPF-record staan.

Voorbeelden:

"V = spf1 mx ~ all"
Sta de MX'en van het domein toe om e-mails te versturen voor het domein, verbied alle andere.

"V = spf1 ~ all"
Het domein verzendt geen e-mails.

"V = spf1 + alles"
Het domein staat alle IP-adressen op het internet toe om e-mails te versturen. Hoewel 'geldig', wordt dit niet aanbevolen.

Het "ip4"-mechanisme

ip4:<ip4-address>
ip4: <ip4-netwerk> / <prefix-length>

Het argument voor het "ip4:"-mechanisme is een IPv4-netwerkbereik. Als er geen prefix-lengte wordt gegeven, gaat men ervan uit dat het /32 is (waarbij een individueel host-adres wordt uitgekozen). Let erop dat u een prefix-lengte kiest die groter is dan /16, omdat dit anders impact kan hebben op de levering aan kleinere ontvangers.

Voorbeelden:

"V = spf1 ip4: 192.168.0.1/16 ~ all"
Elk IP-adres toestaan ​​tussen 192.168.0.1 en 192.168.255.255.

Het "ip6"-mechanisme

ip6:<ip6-address>
ip6: <ip6-netwerk> / <prefix-length>

Het argument voor het "ip6:"-mechanisme is een IPv6-netwerkbereik. Als er geen prefix-lengte wordt opgegeven, gaat men ervan uit dat het / 128 is (waarbij een individueel host-adres wordt uitgekozen).

Voorbeelden:

“v=spf1 ip6:1080::8:800:200C:417A/96 ~all”
Elk IPv6-adres toestaan ​​tussen 1080 :: 8: 800: 0000: 0000 en 1080 :: 8: 800: FFFF: FFFF.

“v=spf1 ip6:1080::8:800:68.0.3.1/96 ~all”
Elk IPv6-adres toestaan ​​tussen 1080 :: 8: 800: 0000: 0000 en 1080 :: 8: 800: FFFF: FFFF.

Het "a" -mechanisme

a
a / <prefix-length>
a:<domain>
a:<domain>/<prefix-length>

Alle A-records voor domein worden getest. Als het IP-adres van de klant ertussen zit, komt dit mechanisme overeen. Als de verbinding via IPv6 tot stand wordt gebracht, wordt in plaats daarvan een AAAA-lookup uitgevoerd.

If domein niet wordt gespecificeerd, wordt het huidig ​​domein gebruikt.

De A-records moeten exact overeenkomen met het IP-adres van de klant, tenzij er een prefix-lengte wordt verstrekt, waarbij elk IP-adres dat door de A-lookup wordt geretourneerd, wordt uitgebreid tot het bijbehorende CIDR-prefix en het IP-adres van de klant binnen dat subnet zal worden gezocht.

Voorbeelden:

"V = spf1 a ~ all"
Het huidige domein wordt gebruikt.

"V = spf1 a: voorbeeld.com ~ alles"
Komt overeen als het huidige domein voorbeeld.com is.

"V = spf1 a: mailers.example.com ~ all"
Misschien heeft example.com ervoor gekozen om alle uitgaande mailers expliciet op te nemen in een speciale A-record onder mailers.example.com.

'V = spf1 a / 24 a: offsite.example.com/24 ~ all'
Als de uitkomst van example.com 192.0.2.1 is, wordt de hele klasse C van 192.0.2.0 / 24 doorzocht op het IP-adres van de klant. Hetzelfde gebeurt met offsite.example.com. Zou er meer dan één A-record worden geretourneerd, dan zou elk record worden uitgebreid tot een CIDR-subnet.

Het "mx"-mechanisme

mx
mx / <prefix-length>
mx:<domain>
mx:<domain>/<prefix-length>

Alle A-records voor alle MX-records voor het domein worden getest in volgorde van MX-prioriteit. Als het IP-adres van de klant erbij zit, vindt er een hit plaats.

If domein niet wordt gespecificeerd, wordt het huidig ​​domein gebruikt.

De A-records moeten exact overeenkomen met het IP-adres van de klant, tenzij er een prefix-lengte wordt opgegeven, waarbij elk IP-adres dat door de A-lookup wordt geretourneerd zal worden uitgebreid tot het bijbehorende CIDR-prefix, en het IP-adres van de klant binnen dat subnet zal worden gezocht.

Voorbeelden:

"V = spf1 mx mx: deferrals.domain.com ~ all"
Misschien stuurt een domein wel e-mails via zijn MX-servers plus een andere set servers die als taak hebben het opnieuw proberen van e-mails voor uitstellende domeinen.

"V = spf1 mx / 24 mx: offsite.domain.com/24 ~ all"
Misschien ontvangen de MX-servers van een domein e-mails op één IP-adres, maar verzenden ze e-mails vanuit een ander nabijgelegen IP-adres.

Het "ptr"-mechanisme

ptr
ptr:<domain>

De hostnaam of hostnamen voor het IP-adres van de klant worden opgezocht met behulp van PTR-query's. De hostnamen worden vervolgens gevalideerd: ten minste één van de A-records voor een PTR-hostnaam moet overeenkomen met het oorspronkelijke IP-adres van de klant. Ongeldige hostnamen worden verwijderd. Als een geldige hostnaam eindigt in een domein, is er een hit.

Als domein niet is opgegeven, wordt het huidige domein gebruikt.

Indien mogelijk, moet u dit mechanisme niet in uw computer gebruiken SPF record, omdat dit resulteert in een groter aantal dure DNS-zoekopdrachten.

Voorbeelden:

"V = spf1 ptr ~ all"
Een domein dat al zijn machines rechtstreeks aanstuurt (in tegenstelling tot een inbel- of breedband-ISP) laat al zijn servers toe om mail te versturen, bijvoorbeeld, hotmail.com of paypal.com.

"V = spf1 ptr: otherdomain.com ~ all"
Elke server waarvan de hostnaam eindigt op otherdomain.com wordt aangewezen.

Het "exists"-mechanisme

exists:<domain>

Voer een A-query uit op het opgegeven domein. Als er een resultaat uitkomt, is er sprake van een match. Het maakt niet uit wat het resultaat van de zoekopdracht is; het zou bijvoorbeeld 127.0.0.2 kunnen zijn.

Wanneer u macro's met dit mechanisme gebruikt, kunt u omgekeerde IP-lookups naar RBL-stijl uitvoeren of uitzonderingen per gebruiker instellen.

Voorbeelden:

In het volgende voorbeeld is het client-IP 1.2.3.4 en het huidige domein is example.com.

"V = spf1 bestaat: voorbeeld.com ~ alles"

Als example.com geen resultaat oplevert, is de uitkomst "Fail". Komt er wel een resultaat uit de bus dan is er sprake van een een match.

Het "include"-mechanisme

include:<domain>

Het opgegeven domein wordt afgezocht naar een match. Als de zoekopdracht geen match of fout retourneert, gaat de verwerking door naar de volgende richtlijn. Waarschuwing: als het domein geen geldig SPF-record heeft, is het resultaat een permanente fout. Sommige e-mailontvangers zullen op basis van een PermError weigeren.

Voorbeelden:

In het volgende voorbeeld is het client-IP 1.2.3.4 en het huidige domein is example.com.

"V = spf1 omvat: voorbeeld.com ~ alles"

Als example.com geen SPF-record heeft, is het resultaat PermError.
Stel dat het SPF-record van example.com "V = spf1 a ~ all".
Zoek het A-record op voor example.com. Als het overeenkomt met 1.2.3.4, resulteert het in een "Pass".
Als er geen overeenkomst is, behalve de "~ all" van het opgenomen domein, komt de opname als geheel niet overeen; het uiteindelijke resultaat is nog steeds Fail van de buitenste richtlijn die in dit voorbeeld is ingesteld

Vertrouwensrelaties : het include-mechanisme is bedoeld om administratieve grenzen te overschrijden. Men moet er wel voor waken dat include-mechanismen domeinen niet in gevaar brengen door “Pass” als SPF-resultaat mee te geven aan berichten die het gevolg zijn van cross-user-vervalsing. Tenzij er technische mechanismen zijn op het gespecificeerde andere domein om cross-user-vervalsing te voorkomen, moeten include-mechanismen “Neutral” in plaats van “Pass” als resultaat geven. Dit wordt gedaan door "?" vóór "include" toe te voegen.

Het voorbeeld zou dan zijn:

"V = spf1? Omvatten: voorbeeld.com ~ alles"

Modificators

Modificators zijn optioneel. Een modificator kan slechts eenmaal per record voorkomen. Onbekende modificators worden genegeerd.

De "redirect"-modificator

redirect=<domain>

Het SPF-record voor het domein vervangt het huidige record. De macro uitgebreid domein wordt ook vervangen door het huidig ​​domein in die zoekopdrachten.

Als een 'redirect'-modificator wordt gebruikt, mag het SPF-record niet ook het 'all'-mechanisme bevatten. Als beide aanwezig zijn, wordt de 'redirect'-modificator genegeerd. Eventuele andere 'redirect'-modificators zullen worden genegeerd.

Voorbeelden:

In het volgende voorbeeld is het client-IP 1.2.3.4 en het huidige domein is example.com.

“v=spf1 redirect=example.com”

Als example.com geen SPF-record heeft, resulteert dat in "error"; het resultaat is onbekend.
Stel dat het SPF-record van example.com "V = spf1 a ~ all".
Zoek het A-record op voor example.com. Als het overeenkomt met 1.2.3.4, resulteert het in een "Pass".
Als er geen overeenkomst is, komt de exec niet overeen en wordt de waarde ~ all gebruikt.

De "exp"-modificator

exp=<domain>

Als een SMTP-ontvanger een bericht afwijst, kan het een uitleg toevoegen. Iemand die een SPF-record heeft aangemaakt kan de uitlegstring die de verzenders zien toelichten. Op deze manier kan een ISP niet-conforme gebruikers naar een webpagina leiden met verdere instructies voor het configureren van SASL.

Het domein is uitgebreid; er wordt een TXT-zoekopdracht uitgevoerd. Het resultaat van de TXT-query wordt vervolgens macro-uitgevouwen en aan de afzender getoond. Andere macro's kunnen worden gebruikt om een ​​uitleg op maat te geven.

De exp-modificator mag alleen afdrukbare ASCII-tekens bevatten.

Te veel zoekopdrachten?

Het verzenden van e-mail is de afgelopen tien jaar steeds gemakkelijker geworden. Talloos bronnen zijn op de markt gekomen, elk met een gespecialiseerde toolset die is afgestemd op de hedendaagse behoeften van marketeers, ontwikkelaars en kleine bedrijven. Samen met deze uitbreiding, met name e-mailverificatie SPF, is een steeds complexere zaak geworden om te navigeren.

De RFC-specificatie van SPF (in wezen internetwetgeving) er is een praktische limiet aan het aantal "DNS-zoekmechanismen" één SPF record kan bevatten. Die limiet is tien. De tien maximale zoekopdrachten geven aan dat een domeinbeheerder (dat ben jij!) Niet vereist dat Gmail of andere ontvangers meer dan tien opeenvolgende DNS-zoekopdrachten uitvoeren om te zien of je een bepaald IP-adres autoriseert om namens jou e-mail te verzenden.

Aangezien het voor elke afzonderlijke organisatie enigszins gebruikelijk is geworden om een ​​groot aantal ongelijksoortige netblocks toe te staan ​​(vanwege het uitbestede karakter van e-mailinfrastructuur), blijft er wat lijkt op de constante en onnodige aantasting van de tien maximale zoekopdrachten. Deze limiet blijft volkomen praktisch en moet in acht worden genomen om tijdige levering en gunstige inbox-rates te garanderen. Verder is het zo dat de oplossing om die limiet te vermijden duidelijk wordt ondersteund door andere mainstream e-mail best practices, lang aangemoedigd door grote ontvangers zoals Gmail en Yahoo.

De meest praktische oplossing om het probleem van 'te veel opzoeken' te voorkomen, is door gebruik te maken van subdomeinen. Aangezien elk afzonderlijk subdomein zijn eigen maximum van tien zoekopdrachten krijgt, SPF is effectief grenzeloos. Voorbeeld: hello.com heeft recht op tien zoekopdrachten + sub.hello.com op nog eens tien. Simpel gezegd, u mag nooit tegen de tien maximale opzoekconditie aanlopen als u verschillende e-mailstromen (bijv. Transactionele, zakelijke, marketing, enz.) Correct segmenteert op discrete naamruimte.

Op de volgende Gmail-help-site wordt i.v.m. met het oplossen van problemen met e-mailbezorging geadviseerd om:

  • Aparte e-mailadressen te gebruiken
  • E-mails vanuit verschillende domeinen en / of IP-adressen te verzenden

Samenvattend, u mag niet tegen het maximum van 10 opzoekacties aanlopen. Als je dat doet, hebben we een aantal aanvullende strategieën en op kennis gebaseerde materialen uiteengezet over hoe te navigeren.

Verder lezen:

Video: hoe SPF werken
Extra informatie over 'te veel zoekopdrachten'
Veel voorkomende misvattingen over SPF
SPF Landmeter Tool
Wat is het verschil tussen ~all en -all in SPF?

Wilt u het gesprek voortzetten? Ga naar het dmarcian- forum