SPF (2006) en DKIM (2007) bestonden eerder dan DMARC (2015). Beide standaarden proberen het probleem van e-mailbeveiliging op hun manier op te lossen. Maar beide hebben ook zo hun tekortkomingen. Met DMARC kun je de sterke kanten van SPF en DKIM combineren en voeg je nieuwe mogelijkheden toe.
Een e-mailbericht bestaat net als fysieke brievenpost uit twee delen: een ‘brief’ met de inhoud van het bericht en een ‘envelop’ met informatie over de afzender en ontvanger. De envelop is niet zichtbaar voor de ontvanger van de mail. SPF en DKIM kijken juist beide alleen naar informatie uit deze envelop om te checken of er mogelijk sprake is van spoofing: SPF kijkt naar het veld MAIL FROM en DKIM kijkt naar het veld DKIM-Signature.
Maar in het briefgedeelte van het bericht staat ook een e-mailadres van de afzender vermeld, namelijk in het From-veld. Dat is ook het e-mailadres van de afzender die je als ontvanger in je mailprogramma ziet staan. Omdat SPF en DKIM het From-veld in het bericht zelf niet checken, kan een aanvaller de afzender in dat veld eenvoudig vervalsen, zonder dat SPF of DKIM dat opmerkt. De aanvaller hoeft verder alleen SPF en DKIM goed in te richten op zijn eigen verzendende domein om zonder problemen door de controles van SPF en DKIM te komen. Voor de ontvanger lijkt het bericht op basis van het (vervalste) From-adres dan bijvoorbeeld afkomstig van zijn bank. Maar in werkelijkheid is het verstuurd door een mailsysteem met het verzendende domein (in het veld MAIL FROM)van de aanvaller.
DMARC controleert wél het e-mailadres in het From-veld van het bericht en vergelijkt die met de twee eerder genoemde velden uit de envelop. Deze controle van de domeinnaam komt bovenop de checks die SPF en DKIM al uitvoeren en wordt alignment genoemd. Alleen als de SPF-check en SPF-alignment en/of de DKIM-check en de DKIM-alignment slagen, komt een e-mailbericht met succes door de DMARC-controle. Dat maakt spoofen een stuk lastiger. De nieuwe standaard BIMI gaat daar nog verder in door een logo toe te passen, maar werkt alleen als je DMARC goed hebt staan. Daarnaast is de adoptie van BIMI nog laag.
Zoals hierboven is uitgelegd, is het voor DMARC voldoende als óf de SPF-check en SPF-alignment óf de DKIM-check en DKIM-alignment slagen. Met andere woorden: als een van beide combinaties faalt, komt een e-mailbericht alsnog met succes door de DMARC-controle. En dat is prettig, want SPF produceert nogal veel false positives: berichten die ten onrechte als vals worden aangemerkt.
Dat komt omdat SPF niet goed overweg kan met forwards en mailinglists. In beide gevallen wordt een bericht doorgestuurd, waarbij het MAIL FROM-veld van de oorspronkelijke afzender wordt vervangen door het doorsturende mailsysteem. Daardoor faalt de SPF-check met de oorspronkelijke afzender op het bericht. Forwards komen regelmatig voor, en zorgen zo voor een groot aantal onbedoelde false positives.
Gebruik je alleen SPF (zonder DKIM of DMARC), en stel je dat zo in dat berichten die als vals zijn aangemerkt, netjes worden geweigerd (hard fail), dan komen legitieme e-mails die zijn geforward niet bij de ontvanger aan, doordat de controle mislukt. En dat is natuurlijk niet gewenst. Toen DMARC nog niet beschikbaar was, werd SPF dan ook vaak vermeden, omdat organisaties het risico te groot vonden dat belangrijke mail anders onbedoeld en definitief verloren ging.
DKIM is wél zo ontworpen, dat het goed met forwards omgaat. In plaats van het DKIM-Signature-veld van de oorspronkelijke afzender in de envelop te vervangen, voegt het een nieuw DKIM-Signature-veld toe aan de envelop van degene die het bericht forwardt. Voor een positieve DKIM-controle is het voldoende als minimaal één van de DKIM-Signature-velden in een bericht met succes door de controle komt.
Door de wijze waarop DMARC de DKIM- en SPF-checks combineert, krijgen berichten die door SPF ten onrechte als vals zijn aangemerkt als het ware nog een extra kans: als zo’n bericht daarna wel met succes door de DKIM-controle heen komen, is het eindoordeel van DMARC dat het bericht legitiem is. Als je geen DMARC gebruikt, moet je zowel SPF als DKIM ‘streng’ instellen, waardoor e-mails via forwarding en mailinglists onbedoeld verloren gaan.
DMARC geeft je inzicht in wat er gebeurt (of misgaat) met de e-mailaflevering en SPF-, DKIM- en DMARC-controles. SPF en DKIM, daarentegen, bieden geen rapportagemogelijkheden. Met DMARC krijg je dagelijks metadatarapportages die je laten zien wat er goed ging en waar er mogelijke problemen zijn met mails die namens je organisatie zijn verzonden, door jezelf of door aanvallers.
Zonder rapportages is ook onderhoud lastiger – en er is altijd onderhoud. Je ziet mogelijk SaaS-diensten over het hoofd die door andere afdelingen zijn aangeschaft (zulke ‘onbekende’ systemen worden ook wel shadow IT genoemd). Met als gevolg dat legitieme e-mails die die systemen voor jou verzenden mogelijk door een ontvangende mailserver worden geweigerd. Ook blijven oude, niet gebruikte mailsystemen vaak in je SPF-regels staan. Daardoor raken deze regels vervuild en worden ze zwakker, totdat je de oude systemen verwijdert. Zie ook ‘De 10 meest gemaakte fouten bij het uitrollen van DMARC’.