Deliverability

Wat is SPF, en wat doet een SPF-record?

SPF controleert of een IP mag verzenden namens een envelope-from- of HELO-domein, en een SPF-record publiceert de autorisatieregels van dat domein in DNS.

Voordat je SPF wijzigt, stel je vast welk domein je verzenddienst gebruikt voor het envelope-from-adres. Dat adres ontvangt bounces en kan afwijken van het From-adres dat je ontvanger ziet.

Welk domein controleert SPF?

SPF controleert het domein in SMTP MAIL FROM, het envelope-from-adres, of de HELO-identiteit van de server. HELO is de hostnaam die een verzendende server presenteert bij het openen van het SMTP-gesprek.

De ontvanger kent het verbindende IP al wanneer het MAIL FROM ontvangt, dus SPF kan draaien voordat de berichttekst aankomt. Wanneer de envelope-afzender leeg is, zoals bij MAIL FROM:<>, gebruikt SPF de HELO-identiteit. RFC 7208, de SPF-standaard, beveelt ook aan om HELO apart te controleren.

SPF controleert niet het zichtbare From-adres. DMARC-alignment koppelt een geauthenticeerd domein aan dat adres.

Hoe ziet een SPF-record eruit?

Een SPF-record is een DNS TXT-record waarvan de waarde begint met v=spf1, gevolgd door autorisatieregels.

example.com TXT "v=spf1 include:mailprovider.example ~all"

Hier autoriseert include:mailprovider.example IP's die voldoen aan het SPF-beleid van die provider. ~all levert een softfail op voor andere IP's. Vervang de voorbeeldprovider door het beleid dat jouw verzenddienst publiceert.

Wat betekenen de mechanismen en modifiers?

Mechanismen testen het verbindende IP tegen een voorwaarde. De redirect-modifier delegeert de evaluatie wanneer geen mechanisme matcht.

TermEffect
ip4, ip6Matcht een adres of netwerk dat direct in het record staat.
aMatcht een adres dat wordt geretourneerd voor het genoemde domein, op basis van de IP-familie van de verbinding.
mxMatcht een adres van een mail exchanger voor het genoemde domein.
includeMatcht wanneer het verwezen beleid pass retourneert voor dit IP.
existsMatcht wanneer de opgegeven DNS-naam een A-record heeft; macro's kunnen die naam samenstellen uit de verbinding.
redirect=Evalueert het beleid van een ander domein wanneer geen mechanisme matcht; een all-mechanisme maakt het ineffectief.
ptrControleert gevalideerde reverse-DNS-namen; voeg het niet toe aan nieuwe records omdat de lookup traag en onbetrouwbaar is.
allMatcht elk resterend IP, waarbij de qualifier het resultaat bepaalt.

De adresmechanismen worden geschreven als ip4 en ip6. Een ptr-entry kan voorkomen in een ouder beleid, maar RFC 7208 raadt het gebruik ervan af terwijl validators het wel moeten ondersteunen.

Wat veranderen de all-qualifiers?

De qualifier bepaalt het SPF-resultaat voor een IP dat all bereikt; de ontvanger beslist hoe het bericht wordt afgehandeld.

EindeResultaat
-allFail: het domein autoriseert het IP niet.
~allSoftfail: het domein beschouwt het IP als waarschijnlijk niet geautoriseerd.
?allNeutral: het domein doet geen uitspraak.
+allPass voor elk IP, waardoor de beperking die SPF anders biedt vervalt.

Hoe evalueren voorbeeldrecords?

Elk voorbeeld hieronder illustreert een apart beleid. De IP's en domeinen zijn documentatievoorbeelden, geen waarden om te publiceren voor jouw afzender.

RecordWat het autoriseert
v=spf1 mx ip4:192.0.2.10 ip4:198.51.100.0/24 ~allDe mail exchangers van het domein, één IP en het genoemde netwerk; andere IP's krijgen softfail.
v=spf1 a ip4:192.0.2.0/25 ip4:198.51.100.0/26 -allDe adresrecords van het domein en twee netwerken; andere IP's krijgen fail.
v=spf1 -allGeen IP's; elk gebruik van dit domein faalt SPF.
v=spf1 +allElk IP, dus het biedt geen verzendbeperking.
v=spf1 redirect=_spf.example.comWat het beleid op _spf.example.com autoriseert.
v=spf1 exists:%{i}._spf.example.com ~allIP's waarvan de opgeloste lookupnaam een A-record retourneert; andere IP's krijgen softfail.

Bij het exists-voorbeeld levert een verbinding vanaf 192.0.2.10 de lookupnaam 192.0.2.10._spf.example.com op. Je moet zelf de DNS-records beheren die zo'n beleid laten werken; het patroon autoriseert niet zelfstandig een provider.

Hoeveel DNS-lookups mag SPF gebruiken?

SPF staat tien geëvalueerde DNS-queryende termen toe over het beleid en geneste evaluaties heen. Een elfde levert permerror op, dus het toevoegen van een extra provider kan de evaluatie breken in plaats van autoriseren.

De getelde termen zijn include, a, mx, ptr, exists en redirect. Letterlijke ip4-, ip6- en all-termen verbruiken die ruimte niet. Het telt termen, niet simpelweg elk DNS-pakket. De return-path CNAME levert SPF-autorisatie van Bird zonder een apex-include toe te voegen.

Waarom kan doorgestuurd e-mail falen voor SPF?

Een forwarder of mailinglijst kan legitiem e-mail opnieuw verzenden vanaf een IP dat het oorspronkelijke envelope-from-domein niet autoriseert. Bijvoorbeeld: een alumnipostbus die doorstuurt naar een persoonlijke postbus wijzigt de verzendende server die de uiteindelijke ontvanger ziet.

Als het envelope-from-adres ongewijzigd blijft, evalueert SPF die nieuwe server tegen het beleid van het oorspronkelijke domein. Een forwarder kan het envelope-from-adres herschrijven met Sender Rewriting Scheme (SRS) om zijn eigen domein te authenticeren. Dat brengt op zichzelf SPF niet in lijn met het oorspronkelijke zichtbare From-adres.

Een intacte, uitgelijnde DKIM-handtekening kan nog steeds een DMARC-pass opleveren. Authenticatie bewijst niet dat een bericht gewenst is en garandeert geen inboxplaatsing.

Wat publiceer je voor Bird?

Je publiceert de return-path CNAME die is verstrekt voor je verzenddomein. Die verwijst naar de bounce-infrastructuur van Bird, die al SPF-autorisatie biedt. Je hebt geen extra SPF-include op je apexdomein nodig om via Bird te verzenden.

Laat een bestaand apex SPF-record voor andere afzenders ongewijzigd. Kopieer de dns_records van het domein. Verifieer capabilities.return_path.status; controleer capabilities.sending.status voor gereedheid over alle verzendvereisten. Beide statusvelden gebruiken deze waarden:

StatusBetekenis en actie
pendingVerificatie is niet uitgevoerd of loopt; wacht op het resultaat.
verifiedDe DNS-records van de capability komen overeen met de verwachte waarden.
warningEerder geverifieerde records komen niet meer overeen; herstel ze voordat de respijtperiode afloopt. Verzending is nog niet beïnvloed.
failedEen DNS-waarde is onjuist; corrigeer deze.
temporary_failureEen DNS-lookup is tijdelijk mislukt; verificatie probeert automatisch opnieuw.
not_configuredDe capability is niet ingesteld voor dit domein.

Je verifieert DKIM, return-path en DMARC voordat je gaat verzenden. Je kunt de return-path-hostnaam wijzigen. Als een DNS TXT-waarde meerdere quoted strings nodig heeft, formatteert de DNS record splitter die strings zonder de lookup-ruimte van SPF te wijzigen.

Breng het in de praktijk.

Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.

Ontvang een implementatieoverzicht

Bouw op hetzelfde netwerk.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra u een betaalmethode toevoegt en een afzender verifieert.

Jouw volgende idee.
Klaar om te verbinden.