Email Deliverability

SPF (Sender Policy Framework) gebruiken om je e-maildomein te beveiligen

Een SPF-record inzetten tegen misbruik van jouw merknaam, zo doe je dat.

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!

Kom je in dit artikel termen tegen die je niet kent? Houd dan onze woordenlijst ernaast!

Het Sender Policy Framework (SPF)

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.

E-mail zonder SPF

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.

E-mail met SPF

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.

Wat SPF niet doet:
  • De “header from” valideren – het valideert alleen de “envelope from”.
  • SPF faalt wanneer een e-mail doorgestuurd wordt. Op dit moment wordt degene die de e-mail doorstuurt (“forward”) namelijk de nieuwe verzender. Vaak is diegene ook niet geautoriseerd.
  • SPF heeft, in tegenstelling tot DMARC, geen rapportagemogelijkheden. Dat maakt het lastig onderhouden en analyseren.

De technische werking van het Sender Policy Framework

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.

Publiceren van autorisatie

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.

Controleren van SPF autorisatie

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.

Evalueren door de ontvanger

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:

  1. None, waarbij er geen SPF record werd aangetroffen óf er geen valide DNS domein kon worden gevonden tijdens de SMTP transactie. Hierdoor kan de e-mail niet gevalideerd worden en wordt hij doorgelaten.
  2. Neutral, waarbij niet gecheckt kon worden of het verzendende IP adres geautoriseerd is. Ook deze e-mail wordt dan standaard doorgelaten.
  3. Pass, wat expliciet aangeeft dat de verzender geautoriseerd is. E-mail wordt doorgelaten.
  4. Fail, wat expliciet aangeeft dat de verzender niet geautoriseerd is. E-mail wordt niet doorgelaten.
  5. Softfail, een afgezwakte fail, omdat er geen sterk beleid gevonden kon worden. Hier wordt de e-mail vaak wel doorgelaten.
  6. Temperror, wanneer er tijdelijk geen verbinding gemaakt kon worden met de DNS tijdens het controleren op SPF. Een latere poging helpt dan vaak, omdat het probleem dan weer is opgelost. Dan wordt ook de e-mail weer doorgelaten.
  7. Permerror, dan kon het domein niet op de correcte manier geïnterpreteerd worden door de check. Hiervoor is het nodig dat de DNS-beheerder van de verzender een probleem oplost. Pas daarna wordt e-mail weer doorgelaten.

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.

Terugkoppeling aan verzender

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:

  1. Tijdens de SMTP transactie een (tijdelijke) error geven, waardoor de verzendende mailserver weet of het bericht niet meer herhaald hoeft te worden (rejection) of er een probleem van tijdelijke aard is (“try again later”)
  2. Het bericht door te laten en dus een “delivered”-event doorgeven aan de verzender, maar er een header aan toevoegen die aangeeft dat het een verdacht bericht is – de spammarkering.

De opbouw van een SPF record

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

Mechanismen

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)

A en MX records

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

IP-adressen (IPv4 / IPv6)

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

Include

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

Afsluiten met 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

Combineren van mechanismen

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.

Kwalificaties

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.

Je SPF-record toevoegen aan je DNS

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:

  1. Zoek naar de DNS-instellingen van je domein - bij providers meestal onder 'Productinstellingen'
  2. Als je domein nog geen SPF record heeft, kies je voor 'een record toevoegen'
  3. Selecteer TXT als het recordtype
  4. Kies host / target en definieer die als @ of laat deze leeg  
  5. Vul je nieuwe SPF record in bij de text area en check of die begint met "v=spf1".
  6. Sla je record op en je bent klaar! Nu gaat je nieuwe SPF record zo snel mogelijk in werking

Veelgestelde vragen over SPF records

"Hoe snel is mijn SPF record actief?"

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.

"Kan ik meerdere SPF records hebben voor een domein?"

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.

"Mijn provider heeft al een SPF record voor mij aangemaakt, wat moet ik daarmee?"

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.

"Ik heb geen toegang tot de DNS, hoe kan ik zien wat mijn SPF record is?"

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.

"Welke 'mechanismen' tellen mee voor het aantal lookups?"

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:

  • a, exists, include, mx en ptr.

De modifiers die niet meetellen zijn:

  • all, ip4 en ip6
"Hoe voorkom ik teveel lookups in mijn record?"

Je kunt voorkomen dat je SPF record het maximum aantal lookups overschrijdt, door met een aantal zaken rekening te houden:

  1. Vermijd include-statements, wanneer die niet nodig zijn, maar gebruikliever ip4 of ip6.
  2. Vermijd gebruik van ptr.
  3. Verwijder dubbele en ongebruikte mechanismen
  4. Verwijs niet naar domeinen die weinig tot geen e-mails versturen

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.

En nu verder

Met het aanmaken van een SPF record heb je een goede eerste stap gezet in de beveiliging van je e-maildomein. Helaas is SPF an sich niet voldoende om je e-maildomein optimaal te beschermen tegen spoofing. Je zult naast SPF namelijk ook DKIM en DMARC moeten implementeren om je klanten de zekerheid te bieden dat de e-mails die ze ontvangen legitiem zijn. Hoe je dat doet leggen we natuurlijk graag aan je uit:

Hoe stel ik DMARC in? »

Hulp nodig met je SPF record?

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.

SPF (Sender Policy Framework) gebruiken om je e-maildomein te beveiligen

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.