De opbouw van een SPF record

Het SPF record ontleed

Om je SPF compliance in orde te krijgen, moet je de verschillende onderdelen van een SPF record begrijpen en hoe deze met elkaar interacteren. In dit artikel ontleden we alle mogelijke onderdelen in een record.

Om te beginnen: een SPF record bestaat altijd uit drie soorten inhoud: de versie, de mechanismen en de qualifier. De versie is altijd hetzelfde (er is maar één versie beschikbaar) en is altijd het eerste wat vermeld wordt in het record. Als dat niet zo is, zal de ontvangende mailserver het TXT record niet herkennen als een SPF record en zal de controle mislukken. De versie is altijd "v=spf1".

TXT |v=spf1

SPF mechanismen

Basisgebruik

Met behulp van mechanismen worden IP-adressen geïdentificeerd die e-mails van het domein mogen verzenden. Voor dit doel worden 5 mechanismen gebruikt: a (records), mx (records), ip4 (adressen), ip6 (adressen) en include (referentie).

A & MX records

De records (a en mx) verwijzen naar de respectievelijke records van de nader gespecificeerde domeinen. Deze records bevatten IP-adressen die de ontvangende mailserver zal opzoeken en controleren. Dit geldt zowel voor het opgegeven domein (jouwdomein.nl) als voor de subdomeinen (mail.jouwdomein.nl)

TXT | v=spf1 a mx yourcompany.com

IP-adressen (IPv4 / IPv6)

U kunt ook IP-adressen en reeksen voor zowel IPv4- als IPv6-adressen in een SPF-record opgeven. Hiermee geeft u toestemming aan deze adressen om namens u e-mails te versturen. Deze methode bespaart ook op het aantal look-ups (max. 10); de IP adressen die namens het domein mogen e-mailen staan al in het record zelf.

Voor IPv4-adressen:

TXT | v=spf1 ip4:30.83.248.91

Voor IPv4-ranges:

TXT | v=spf1 ip4:30. 93.0.1/14

Voor IPv6-adressen:

TXT | v=spf1 ip6:2a01:7c8:3:1337::27

Voor IPv6-ranges:

TXT | v=spf1 ip6:2a01:7c8:3:1337::27/96

Include

De vijfde optie is om te verwijzen naar een domein waar uw SPF record is gespecificeerd. Dit is wat we deden voor flowmailer.com. Het SPF record voor flowmailer.com verwijst naar: 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

Meerdere SPF mechanismen gebruiken

Het is mogelijk om verschillende mechanismen te combineren en een veelvoud van IP adressen, pointers en records op te nemen. Het aantal lookups is gebonden aan een maximum van tien. Van een lookup is sprake wanneer een ander DNS moet worden "opgezocht" om het SPF-record te controleren. Dit zijn pointers naar andere domeinen (includes) en records (a en mx). Een gecombineerd (werkend) record zou er als volgt uit kunnen zien, bijvoorbeeld:

TXT | v=spf1 a mx jouwdomein.nl ip4: 30.93.0.1/14 ip6:2a01:7c8:3:1337::27 include:spf.flowmailer.net ~all

Noot:

Sommige SPF records bevatten nog steeds het mechanisme ptr. Dit is verouderd en kan ervoor zorgen dat een SPF record volledig genegeerd wordt door ontvangende mailservers. Gebruik dit mechanisme niet.

Qualifiers

Om aan te geven welke actie de ontvangende mailserver moet ondernemen, vóór het all mechanisme, specificeer je een karakter: ~, -, + of ?:

  1. ~all, ook wel softfail genoemd (aanbevolen!). Als het verzendende IP adres niet overeenkomt met de IP adressen in het SPF record, wordt de e-mail geaccepteerd maar gemarkeerd als spam.
  2. -all, of hardfail.  Alle berichten die met een ongeautoriseerd IP-adres worden verzonden, worden door de ontvangende mailserver geweigerd. Dit is niet aan te raden, omdat je dan problemen kunt krijgen met email forwarding.
  3. +all, die gewoon alle e-mails accepteert. Hiermee is de rest van je SPF record nutteloos.
  4. ?all, hier wordt geen extra validatie uitgevoerd, dus het heeft hetzelfde effect als +all: alle emails van ongeauthoriseerde servers worden toegestaan. Ook hier is de rest van een SPF record dus nutteloos.