SPF

Onderwerpen

  1. In het kort
  2. Hoe werkt het
  3. Zelf een SPF record maken

1. In het kort

SPF is een stukje tekst dat je in je DNS administratie opneemt; zgn DNS records. In dit stukje tekst staat welke mailserver(s) mail mogen versturen namens jouw domein. SPF is alleen een controle, er wordt geen beslissing genomen op basis van alleen een SPF record. Daar is DMARC voor vereist; ook een DNS record met een klein stukje tekst.

2. Hoe werkt het

SPF werkt als volgt. Stel: een mail namens info@voorbeeld.nl wordt aan een GMail gebruiker gestuurd. De GMail mailserver kijkt bij het domein voorbeeld.nl in DNS om het stukje tekst (SPF) waarin de goedgekeurde mailservers staan. De GMail server kijkt vervolgens of de zender namens voorbeeld.nl mail mag versturen.

2.2. SPF is een whitelist

SPF is dus een ‘whitelist’. Het is een opsomming van wat is toegelaten. Dit in tegenstelling met een blacklist wat een opsomming is van wat moet worden uitgesloten. Een voorbeeld van een whitelist: de EU bestaat uit landen die in deze lijst staan. De landen die hier niet in staan zijn dus geen EU lid.

Met andere woorden, in SPF vind je alleen de computers (servers) die mail mogen versturen namens jouw domein. Alle andere servers mogen dit dus niet.

2.3. Mails met of zonder SPF

Google ondersteund het gebruik van SPF. Hieronder zie je een voorbeeld van mails die naar een Google’s GMail account zijn verstuurd. Een mail waar SPF niet is ingesteld en een mail waar SPF wel is ingesteld en de mailserver die de mail verstuurde ook daadwerkelijk in de SPF staat.

2.3.1. Mailserver niet in SPF aanwezig

In het voorbeeld hieronder heeft het domein geen SPF, waardoor Google een rood vraagteken naast het mail adres van de verzender weergeeft. Ook al is dit bericht écht van dit domein afkomstig, maar Google kan dit niet controleren. Het wordt dus niet als SPAM gemarkeerd, er zijn geen verdere maatregelen.

Een ontvangen mail in GMail met een rode vraagteken naast de verzender. De verzender heeft geen SPF. Een 'lichte' vorm van beveiliging zonder afspraken.

2.3.2. Mailserver wel in SPF aanwezig

In het voorbeeld hieronder is SPF wél ingesteld en heeft Google de mailserver die deze mail heeft verstuurd kunnen terugvinden in het SPF record in DNS. Het resultaat is dat de vraagteken is verdwenen en dat er een regel bij is gekomen met “verzonden door” gevolgd door het domein.

GMail meldt hier dat de bericht is verzonden door het domein geautoriseerde mailservers.

2.3.3 Conclusie

SPF levert aan de ontvangende mailserver het bewijs of de zendende mailserver namens het opgegeven domein mag versturen. Is het voldoende om misbruik tegen te gaan? Wanneer de zendende mailserver niet in SPF voorkomt wordt de mail toch gewoon doorgelaten. In het geval van GMail komt er wel een aanduiding, maar doet er verder niets mee.

Als domein eigenaar kun je de ontvangende mailserver wel vertellen wat er met een mailbericht moet gebeuren als er niet aan SPF wordt voldaan. Daarvoor is DMARC.

En hoe zit het met andere klanten bij een hostingprovider die dezelfde mailservers als jij gebruiken? Die staan ook in jouw SPF en kunnen dus ook stiekem, maar ‘legitiem’, namens jouw domein versturen. Daarvoor is DKIM, een digitale handtekening dat door de verzendende mailserver met elk bericht wordt meegestuurd.

2.3.4. Is alleen SPF genoeg?

Er zijn providers die beweren dat SPF een vorm van beveiliging biedt die voldoende is. In een mail van 19 maart 2019 van een, via reclameborden, bekend Nederlands hostingbedrijf:

"<naam hostingbedrijf> maakt (op dit moment) geen gebruik van DMARC maar enkel van SPF. Dat inderdaad de beveiliging van e-mail verder aangescherpt kan worden door het gebruik van de combinatie SPF/DKIM/DMARC doet niets af aan het feit dat SPF al een vorm van beveiliging biedt die voldoende is.” 

Een misvatting. Deze ‘vorm van beveiliging’ is onvoldoende en staat vastgelegd in RFC7489. Een RFC wordt na goedkeuring van het IETF gepubliceerd. Vanaf dat moment is het de standaard. In de “Introduction” van deze RFC staat:

"hoewel SPF de ontvanger kan laten ontdekken of een mail van het domein vanaf een geautoriseerde bron afkomstig is‘, is er ‘geen breed geaccepteerd of publiekelijk beschikbaar mechanisme aanwezig dat het beleid van de zender uitvoert‘.” – RFC7489

Met andere woorden; misschien zijn er mailservers die het als spam markeren, maar dat is niet de standaard. Om die reden is DMARC geïntroduceerd (artikel: “DMARC is a must“).

3. Zelf een SPF record maken

In de ‘control panel’ van jouw hostingprovider kun je jouw DNS ‘zonefile‘ beheren. In DNS dien je drie waarden in te stellen: Naam, Type en Waarde. Meestal ook de TTL. Hieronder staan SPF voorbeelden van Google, Office 365 en Mailchimp. De bron is er bij vermeld, dus controleer eerst of dit nog up-to-date is:

Google G Suite


+---------------+-------+---------+------------------------------------------------+
| Naam          | TTL   | Type    | Waarde                                         |
+---------------+-------+---------+------------------------------------------------+
| @             | 1 dag | TXT     | v=spf1 include:_spf.google.com -all            |
+---------------+-------+---------+------------------------------------------------+

Bron: Google SPF en Google TXT instructies

Microsoft Office 365


+---------------+-------+---------+------------------------------------------------+
| Naam          | TTL   | Type    | Waarde                                         |
+---------------+-------+---------+------------------------------------------------+
| @             | 1 dag | TXT     | v=spf1 include:spf.protection.outlook.com -all |
+---------------+-------+---------+------------------------------------------------+

Bron: Microsoft artikel

Gebruik je reclamecampagnes via bijvoorbeeld Mailchimp, dan sturen zij namens jouw domein e-mails uit. De mailservers van Mailchimp horen dus ook in de SPF whitelist. Als voorbeeld staat hier ook de include van Google samen met de 3 Mailchimp includes . Dat ziet er dan zo uit:


+--------+-------+---------+--------------------------------------------------------------+
| Naam   | TTL   | Type    | Waarde                                                       |
+--------+-------+---------+--------------------------------------------------------------+
| @      | 1 dag | TXT     | v=spf1 include:_spf.google.com include:servers.mcsv.net      |
|        |       |         | include:spf.mandrillapp.com include:rsgsv.net -all           |
+--------+-------+---------+--------------------------------------------------------------+

Bron: Mailchimp artikel onder kopje “Example TXT Record for SPF”.

3.1. Opties van een SPF record

In deze sectie vind je de opties van een SPF record. De officiele lijst met meer detail vind je in RFC7208. In het kort betekenen ze:

  • v=spf1” – Hiermee begint een SPF record zodat duidelijk is waar het om gaat (en de 1 is versie 1)
  • include:” – gevolgd door een domeinnaam. In dit domeinnaam moet de SPF record worden opgezocht.
  • ~all” – betekent “Softfail”. Is een mail verzonden door een server dat niet in SPF voorkomt lever het af, maar markeer het. Zo’n mail kan dan in een SPAMfolder belanden*.
  • -all” – betekent “Hardfail”. In tegenstelling tot een softfail wordt de mail geweigerd*.
  • ?all” – betekent “Neutral” en zegt in feite “negeer alles op deze regel”. Als dit aan het einde van een SPF staat gebeurt er dus niets. De beheerder heeft geen idee wat hij of zij aan het doen is; waarom de moeite een SPF te schrijven?

*) dit wordt pas werkzaam wanneer DMARC is ingesteld. Op deze pagina vind je meer over DMARC.

De overige opties zijn:

  • a” – de ‘a’ stelt dat alle A-records (Type) die in jouw domein vermeld staan mail mogen versturen namens jouw domein (weet je het zeker?)
  • mx” – de ‘mx’ stelt dat alle MX records (Type) die in jouw domein vermeld staan mail mogen versturen namens jouw domein (weet je het zeker?)
  • ip4” – soms heb je aan een mailserver genoeg of zit je in de overgang van een kantoor mailserver naar een cloud mailserver en is deze nog nodig. In het laatste geval is de ip4 de toevoeging op de cloud mailserver.
  • ptr” – wordt sinds 2014 niet meer gebruikt

3.2. Opmerking: SPF mag maximaal 10 items bevatten

Er is wel een max aan het aantal ‘includes’ dat in SPF mag worden opgenomen. Grote hostingbedrijven hebben vaak een hostnaam als include; bijvoorbeeld _spf.google.com (G Suite) of spf.protection.outlook.com (Office 365). In een SPF record mogen niet meer dan 10 van deze items staan. Zo houd je nog 9 entries over. En dat is nodig, want het aantal mailservers bij Google of Microsoft ligt in de tienduizenden.

Technische informatie: Office 365 heeft een spf.protection(..) en daarin vind je (genest) een spfa.protection(..) en daarin vind je vervolgens genest een spfb.protection(..). Tussen alle IP blokken van honderden tot soms honderdduizenden servers (Office 365 heeft onder spf.protection(..) ip4:40.92.0.0/14 = 262.142 hosts en nog eens onder spfa.protection(..) ip4:52.100.0.0/14 = 262.142 hosts). Deze twee blokken opgeteld komt dus neer op 524.284 hosts.

Probeer het zelf met deze tool voor de aantallen of de commando’s:

Windows: “nslookup -q=TXT _spf.google.com”

Linux: host -t TXT _spf.google.com

Door het gebruik van spf is er slechts 1 SPF item nodig. Zo is er nog ruimte voor andere maildiensten als Mailchimp, maar tot 10 items.