Email Deliverability
Authentication

Email Deliverability
Authentication
Nick van Dijk
Business Developer
@
Flowmailer
Een groot probleem met e-mail is dat een domeinnaam in beginsel gemakkelijk misbruikt kan worden. Zelfs met vrij weinig technische kennis is het verzenden van e-mail uit naam van een ander snel gedaan. Hierdoor zijn al veel individuen en organisaties ten prooi gevallen aan frauduleuze e-mails. Om jouw domeinnaam te beschermen tegen misbruik, zul je een paar maatregelen moeten nemen. Eén daarvan is het instellen van een SPF-record. Hieronder leggen we je stap voor stap uit hoe zo’n SPF record werkt en hoe je die zelf instelt!
Een SPF record is simpel gezegd een stukje tekst in de instellingen van je domein (bedrijf.nl) die ervoor zorgt dat e-mailservers die een e-mail van jou ontvangen kunnen weten dat die e-mail echt van jou is. Om gebruikers te beschermen, gebruiken veel spamfilters en mailservers een algoritme om e-mails te markeren als gewenst of ongewenst. Het controleren van de domeininstellingen op de aanwezigheid van een SPF record is daar onderdeel van. SPF toont aan dat de verzender ook daadwerkelijk is wie hij zegt dat hij is.
Anderzijds beschermt een SPF record jouw domeinnaam (jouwbedrijf.nl) tegen oneigenlijk gebruik door anderen. Met dit record geef je het signaal af aan de ontvangende mailserver dat die specifieke e-mail écht van jou afkomstig is. Dat helpt je reputatie, want elke nepmail die vanuit jouw naam komt, is schadelijk voor je domein.
De reden dat SPF nodig is, ligt bij de standaard werking van e-mailverkeer. Wanneer je een e-mail aanbiedt (zonder SPF) ontstaat er communicatie tussen twee mailservers: die van jou en die van je ontvanger. Standaard geeft jouw mailserver dan de e-mail door aan de ontvangende mailserver, die de e-mail aflevert in de inbox van de ontvanger. Het probleem is echter dat je als verzender een willekeurige naam en afzenderadres kunt gebruiken. Zo ontstaat spoofing, het oneigenlijk gebruiken van iemand anders zijn domeinnaam. Dat heeft op zijn beurt weer vaak phishing tot gevolg, waardoor ontvangers veel geld kwijt kunnen raken als ze in een nepmail trappen.
Wanneer je wel met een SPF record je e-mails verstuurt, kan de ontvangende server controleren of de e-mail die je stuurt daadwerkelijk van jou afkomstig is. In principe werkt dit dan hetzelfde als normale post: Je geeft een e-mail af die in een envelop zit. Op die envelop staat je naam, afzenderadres en je SPF record. De ontvangende mailserver haalt die envelop eraf en geeft e-mail aan je klant, prospect of collega óf gooit deze weg als het SPF record faalt.
Hoewel SPF dus een deel van deze rit beveiligt, kan er dus in die e-mail zelf nog iets anders staan dan op de envelop. Daarom is het aanbevolen om naast SPF ook DKIM en DMARC te hanteren.
Hoe SPF records technisch werken, vinden we in RFC7208. Hier wordt omschreven hoe SPF werkt in de communicatie tussen twee mailservers. In basis bestaat communicatie over SPF uit een paar onderdelen: Het publiceren aan de ene kant, het autoriseren aan de andere kant. De communicatie gebeurt veelal tijdens de zogeheten SMTP transactie, waarbij de ene mailserver (MTA) een e-mail aanbiedt aan de andere mailserver. Tijdens het autoriseren, wordt de verzender gecontroleerd, geëvalueerd en voorzien van feedbackinformatie.
Het verzendende domein publiceert een SPF record, waarin geautoriseerde servers en IP-adressen zijn opgenomen. Deze adressen mogen, volgens dit record, e-mails sturen namens het betreffende domein. Tijdens de transactie worden daarvoor de namen “HELO” en “MAIL FROM” gebruikt. Hiermee kan de uitgaande mailserver zich kenbaar maken bij de ontvangende mailserver.
Het controleren van het gepubliceerde record gebeurt tijdens de SMTP transactie. Volgens de RFC zou dit moeten, omdat er anders het gevaar is dat het voor de ontvanger te moeilijk wordt om de benodigde informatie te verkrijgen of dat legitieme e-mail de latere check niet overleefd, omdat het beleid veranderd is.
Tijdens de controle, wordt naar de twee verschillende identiteiten gekeken en wordt bepaald of het verzendende adres ook daadwerkelijk namens die identiteiten mag e-mailen. Het is aan ontvangers aanbevolen om de “HELO”- en “MAIL FROM”-identiteit van de verzender chronologisch te controleren. HELO (smtp.jouwbedrijf.nl) is een wat ‘makkelijker’ te controleren identiteit. Wanneer die identiteit bevestigd is en de autorisatie overleefd, hoeft de MAIL FROM (info@jouwbedrijf.nl) niet gecontroleerd te worden. Lukt het echter niet om de HELO te controleren, dan moet de ontvangende mailserver het complexere MAIL FROM wel controleren.
Om vervolgacties te kunnen hangen aan de eerdere controle, evalueert de ontvangende mailserver wat het voor hem betekent wat hij heeft gezien. Komen de identiteiten overeen met het gevonden SPF record of juist niet? En wat moet er dan verder gebeuren? Er zijn zeven mogelijke uitkomsten van deze evaluatie:
Het kan echter per ontvanger verschillen welke reactie het heeft op een SPF check die faalt. Sommige ontvangende mailservers vereisen namelijk het hebben van een geldig en effectief SPF record, terwijl anderen er veel minder waarde aan hechten. Om die reden is de evaluatie zoals hierboven beschreven de standaardevaluatie.
Wanneer de SPF records gecheckt en geëvalueerd zijn door de ontvangende mailserver, wordt een e-mail doorgelaten of geblokkeerd. In dat eerste geval geeft de ontvanger terugkoppeling (“delivered”-event). Wanneer de transactie echter een falend SPF record oplevert, heeft de ontvangende mailserver twee opties:
Een SPF record bestaat altijd uit drie typen content: de versie, verschillende mechanismen en een kwalificatie. De versie is hier altijd hetzelfde en komt altijd vooraan te staan. Gebeurt dat namelijk niet, dan herkent de ontvangende mailserver het TXT record niet als SPF record en faalt het de check. De versie is altijd “v=spf1”.
TXT |v=spf1
Door gebruik van mechanismen worden IP-adressen geïdentificeerd die e-mail mogen verzenden vanaf het domein. Hiervoor worden 5 (+1) mechanismen gebruikt: a (records), mx (records), ip4 (adressen), ip6 (adressen) en include (verwijzing)
De records (a en mx) verwijzen naar de respectievelijk records van de vervolgens opgegeven domeinen. In deze records staan IP-adressen vermeld, die de ontvangende mailserver dan kan opzoeken en controleren. Dat geldt voor zowel het opgegeven domein (jouwbedrijf.nl) als de subdomeinen daarvan (mail.jouwbedrijf.nl)
TXT |v=spf1 a mx jouwbedrijf.nl
Je kunt in een SPF record ook IP-adressen en -ranges opgeven voor zowel IPv4 als IPv6-adressen. Hiermee geef je de betreffende adressen toestemming om voor jouw domein te mogen e-mailen. Dat scheelt ook in het aantal lookups; de IP-adressen die namens het domein mogen e-mailen, staan al in het record zelf.
Voor een IPv4-adres:
TXT | v=spf1 ip4:30.83.248.91
Voor een IPv4-range:
TXT | v=spf1 ip4:30.93.0.1/14
Voor een IPv6-adres:
TXT | v=spf1 ip6:2a01:7c8:3:1337::27
Voor een IPv6-range:
TXT | v=spf1 ip6:2a01:7c8:3:1337::27/96
Als vijfde mogelijkheid kun je verwijzen naar een domein waar je SPF record verder uitgeschreven staat. Dat doen we bij Flowmailer bijvoorbeeld ook. Ons domein (flowmailer.com) verwijst voor SPF naar een ander domein: spf.flowmailer.net.
flowmailer.com TXT | v=spf1 include:spf.flowmailer.net ~all
spf.flowmailer.net TXT | v=spf1 ip4:185.136.64.128/27 ip4:185.136.65.128/27 ~all
Het laatste mechanisme komt altijd als laatste in de rij en wordt in combinatie met een kwalificatie gebruikt. In tegenstelling tot de andere mechanismen, verwijst dit onderdeel niet naar een IP-adres of record, maar zegt het iets over alle IP-adressen die niet eerder genoemd zijn. Het mechanisme all vertelt de ontvangende mailserver wat het moet doen, wanneer een binnenkomend bericht de SPF check faalt. Verderop gaan we hier dieper op in.
TXT | v=spf1 ~all
Voor een SPF record is het prima mogelijk om meerdere mechanismen te combineren en daarmee meerdere IP-adressen, verwijzingen en records op te nemen. Voor het aantal lookups geldt wel een maximumaantal van tien. Men spreekt van een lookup, wanneer het een ander DNS moet opzoeken voor het invullen van een SPF record. Dit zijn verwijzingen naar andere domeinen (includes) en records (a en mx).
Een gecombineerd (werkend) record kan er bijvoorbeeld zo uit zien:
TXT | v=spf1 a mx jouwbedrijf.nl ip4: 30.93.0.1/14 ip6:2a01:7c8:3:1337::27 include:spf.flowmailer.net ~all
*Verouderd ptr: in sommige SPF records staat nog het mechanisme ptr. Dit is inmiddels sterk verouderd en kan ervoor zorgen dat een SPF record volledig genegeerd wordt door ontvangende mailservers. Het is dus afgeraden om dit mechanisme te gebruiken.
Om aan te geven welke actie de ontvangende mailserver moet ondernemen, geef je vóór het all-mechanisme een teken mee: ~, -, + of ?.
~all, ook softfail genoemd (aanbevolen!). Wanneer het verzendende IP-adres niet overeenkomt met de IP-adressen in het SPF record, dan wordt de e-mail wel geaccepteerd, maar als spam gemarkeerd.
-all, ofwel hardfail. Alle berichten die met een ongeautoriseerd IP-adres worden verzonden, worden door de ontvangende mailserver geweigerd. Dit is niet aan te bevelen, aangezien je dan met het forwarden van een e-mail problemen kunt ondervinden.
+all, welke alle e-mails gewoon accepteert. Hiermee is de rest van je SPF-record nutteloos.
?all, hier wordt geen extra validatie uitgevoerd, waardoor het hetzelfde effect sorteert als +all: alle e-mails van ongeautoriseerde servers worden toegelaten. Ook hier is de rest van een SPF record dus nutteloos.
Om je nieuwe SPF-record werkend te krijgen, zul je het record moeten verwerken in de instellingen van je Domain Name System (DNS). Dat doe je (in de meeste gevallen) als volgt:
Op het moment dat je wijzigingen in je DNS hebt doorgevoerd, is het afhankelijk van je provider hoe snel je record ook actief is. Meestal gebeurt dit binnen een paar minuten. Daarnaast heb je te maken met een TTL (Time to Live) tijd in je DNS, waarmee je definieert hoe snel je nieuwe record actief mag gaan. Meestal is deze standaard ingesteld op 300 (tijd in seconden), wat dus neerkomt op vijf minuten. Vaak wordt bij providers en e-mailclients aangegeven dat een nieuw SPF-record binnen 48 in werking treedt en dus door een e-mailclient (zoals Gmail, Yahoo! of Outlook) gelezen wordt.
Nee, want de ontvangende mailserver kijkt maar naar één SPF record. Je zult je oude, niet-functionerende record dus moeten aanpassen of verwijderen. Je kunt daarentegen wel meerdere IP adressen aan je SPF record toevoegen. Zo kun je alsnog vanaf meerdere IP adressen e-mails versturen.
Vaak stellen grote e-mail providers (zoals Outlook, Gmail, etc.) al een SPF record voor. In het geval van Google (Gmail) is dit bijvoorbeeld v=spf1 include:_spf.google.com ~all. Dit wordt voorgesteld, omdat Gmail, Outlook of een andere provider dan namens jouw domein e-mails mag versturen. Als je nog geen SPF record hebt, kun je deze gebruiken. Heb je er al wel één, dan is het verstandig om het deel include:_spf.jouwprovider.com in je bestaande record op te nemen en de wijzigingen op te slaan.
Je kunt zelf gemakkelijk SPF records checken via een opdrachtprompt op je PC. Daarvoor hoef je alleen maar "cmd" of "prompt" op te zoeken en nslookup -type=txtjouwdomein.nl in te vullen. Hieruit rollen een paar gegevens, waaronder je SPF record. Als die aanwezig is, uiteraard. Zo weet je of je een SPF record hebt, maar nog niet of deze functioneert of niet.
Een SPF record mag maximaal 10 lookups bevatten, omdat anders de check faalt. In dit maximumaantal tellen ook zogeheten geneste lookups mee. De mechanismen die meetellen voor dit aantal zijn:
De modifiers die niet meetellen zijn:
Je kunt voorkomen dat je SPF record het maximum aantal lookups overschrijdt, door met een aantal zaken rekening te houden:
Heb je teveel lookups in je SPF record, maar kom je er zelf niet uit hoe je dit oplost? Neem dan eens contact met ons op of configureer je SPF record in je Flowmailer-account.
Hulp nodig met het instellen van je SPF record of werkt je SPF record niet naar behoren? De experts van Flowmailer hebben jarenlange ervaring met het veilig afleveren van e-mails en helpen je dan ook graag! Neem eens vrijblijvend contact op of bekijk hoe jouw domein er nu voor staat op StuurGeenNepmail.nl.
In oktober 2019 voerden wij onderzoek uit naar de status van SPF (en DMARC) in Nederland. Bij bedrijven uit de e‑commerce, energieleveranciers en het verzekeringswezen werden domeinen gecontroleerd op toepassing van DMARC en SPF.