SPF|A- en MX-records
SPF-records bevatten vaak bijna standaard “a”- en “mx”-mechanismen: vroege SPF-generatortools maakten ze verplicht, of een domein ze nu nodig had of niet. Dat advies is niet goed gealterd: tegenwoordig is het opnemen ervan een van de meest voorkomende manieren waarop een SPF-record stilletjes kapot gaat. (Nieuw met SPF? Begin bij SPF | richtlijnen voor de basis.)
DNS round-robin breekt A/MX-gebaseerde SPF
Veel mailservers staan achter load balancers die bij elke DNS-query een andere set IP-adressen teruggeven (een patroon dat DNS round-robin, of “DNS flapping” heet). Bevat je SPF-record een “a”- of “mx”-mechanisme dat naar zo’n server verwijst, dan komt het IP waar een bericht daadwerkelijk vandaan kwam mogelijk niet overeen met wat je SPF-check toevallig oploste, met periodieke, onvoorspelbare authenticatiefouten tot gevolg.
Waarom dit belangrijk is
Het mx-mechanisme autoriseert welke IP-adressen de MX-records van je domein op dit moment ook aanwijzen, maar MX-records bestaan om inkomende mail af te handelen, niet om te beschrijven wie mag versturen. Je daadwerkelijke uitgaande mailprovider (Microsoft 365, Google Workspace en vergelijkbare) geeft je al een eigen include-mechanisme met alle IP’s die daadwerkelijk namens jou mogen versturen; dat is het mechanisme dat je SPF-record zou moeten gebruiken. Het a-mechanisme heeft hetzelfde probleem omgekeerd: het autoriseert het website-IP van je domein, en de meeste websites versturen tegenwoordig helemaal geen mail meer rechtstreeks: dat besteden ze uit aan een aparte email service provider.
Hoe het werkt
Naast simpelweg het verkeerde gereedschap voor de klus zijn, lossen a en mx allebei op het moment van evaluatie op: elke keer dat een ontvangende server je SPF-record controleert, wordt de hostname waar die mechanismen naar verwijzen opnieuw opgelost. Staat die hostname achter een load balancer met DNS round-robin, dan kan de set IP’s waarnaar hij oplost van de ene query op de andere veranderen. Een bericht dat verstuurd is vanaf een IP-adres dat een moment eerder nog geldig was, kan SPF laten falen simpelweg omdat de volgende DNS-lookup een andere set adressen teruggaf.
Een uitgewerkt voorbeeld van DNS flapping
Zo ziet dat round-robin-gedrag er in de praktijk daadwerkelijk uit, met een echte MX-hostname die twee keer kort na elkaar wordt opgevraagd:
Query 1:
mta5.am0.yahoodns.net. 60 IN A 67.195.228.110
mta5.am0.yahoodns.net. 60 IN A 98.136.96.74
mta5.am0.yahoodns.net. 60 IN A 67.195.204.74
mta5.am0.yahoodns.net. 60 IN A 67.195.228.106
Query 2:
mta5.am0.yahoodns.net. 11 IN A 67.195.228.94
mta5.am0.yahoodns.net. 11 IN A 67.195.228.111
mta5.am0.yahoodns.net. 11 IN A 67.195.204.73
mta5.am0.yahoodns.net. 11 IN A 98.136.96.74
Twee queries, enkele seconden na elkaar, en bijna geen van de IP-adressen komt overeen. Zou deze hostname aangewezen worden door een a– of mx-mechanisme in een SPF-record, dan hangt het volledig af van het moment waarop een ontvangende server toevallig opzoekt welke van deze adressen geautoriseerd wordt. Dat is precies het soort periodieke, moeilijk te diagnosticeren authenticatiefout dat dit in de praktijk veroorzaakt.
Ik wil meer weten
Wat te gebruiken in plaats daarvan
- Gebruik het
include-mechanisme dat je mailprovider je geeft (bijvoorbeeldinclude:spf.protection.outlook.comvoor Microsoft 365) in plaats vanmx. - Moet je specifieke, stabiele IP-adressen rechtstreeks autoriseren, gebruik dan
ip4ofip6in plaats vana. - Zowel
aalsmxtellen ook mee voor de DNS-lookuplimiet; zie SPF | richtlijnen voor de volledige limiet en welke andere mechanismen daarin meetellen.
Dit betekent niet dat a en mx volledig verboden zijn: het zijn geldige SPF-mechanismen, en er zijn specifieke, bewuste gevallen waarin ze wel degelijk het juiste gereedschap zijn (bijvoorbeeld het autoriseren van de eigen HELO/EHLO-identiteit van een mailserver-hostname, wat wél een bijpassend “A”-record vereist). De aanbeveling gaat specifiek over het gebruik ervan als standaard, onbezonnen keuze voor het autoriseren van je algemene verzendinfrastructuur.
Goed om te weten
De Sender Manager van DMARC Manager controleert op hostnames die DNS flapping vertonen en waarschuwt je voordat je er één aan een SPF-record toevoegt, specifiek om dit faalscenario te vangen voordat het productie bereikt.
Bronnen & verder lezen
- RFC 7208 – Sender Policy Framework (SPF) for Authorizing Use of Domains in Email: rfc-editor.org/rfc/rfc7208