Een DMARC-record is een enkele DNS TXT-vermelding die je e-mailauthenticatiebeleid publiceert. Het staat op een vaste locatie, _dmarc.yourdomain.com (let op de voorafgaande underscore), en elke ontvangende mailserver kan het opvragen om te zien hoe je wilt dat falende mail wordt afgehandeld en waar rapporten naartoe moeten.
Waar staat een DMARC-record?
Altijd op het _dmarc-subdomein van het domein dat je beschermt. Voor example.com staat het record op _dmarc.example.com. Voor een subdomein waar je vandaan verstuurt, bijvoorbeeld mail.example.com, zou het _dmarc.mail.example.com zijn, maar de meeste teams publiceren één record op het organisatiedomein en laten dat de subdomeinen dekken. Het is een TXT-record, hetzelfde recordtype dat SPF gebruikt, en daarom zal iedereen die een SPF-record heeft gepubliceerd het proces herkennen.
Wat als er geen DMARC-record is?
"No DMARC record found" betekent dat er niets gepubliceerd is op _dmarc.yourdomain.com. Er zijn twee gevolgen, en het tweede is wat mensen over het hoofd zien.
Ontvangende servers hebben geen instructie van jou, dus elke server valt terug op eigen afhandeling voor een bericht dat de authenticatie niet doorstaat. En omdat rua de plek is waar rapporten worden aangevraagd, vraagt een ontbrekend record niets aan: je ontvangt geen geaggregeerde rapporten, dus je kunt niet zien wie er namens jouw domein verstuurt of of je eigen mail slaagt.
Afwezigheid is niet hetzelfde als p=none. Een p=none-record is een gepubliceerd beleid dat ontvangers vraagt niets te veranderen maar je wel rapporten te sturen, en dat is de normale plek om te beginnen. Helemaal geen record geeft je noch het beleid, noch het inzicht.
Om zelf een domein te controleren, vraag je het TXT-record op bij de _dmarc-naam:
dig +short TXT _dmarc.example.com
nslookup -type=TXT _dmarc.example.com
Als je liever niet handmatig opvraagt, controleert de e-mailanalyzer een domein in de browser en bird email tools audit doet hetzelfde vanuit een shell.
Een antwoord met v=DMARC1 is een record. Een leeg antwoord is een echte afwezigheid. Twee bijna-treffers worden als "not found" gerapporteerd, ook al heb je iets gepubliceerd:
- Gepubliceerd op de verkeerde naam. Het record moet op
_dmarc.example.comstaan, met de voorafgaande underscore, en niet op de domeinroot naast je SPF-record. - Een ongeldige
v-tag.v=DMARC1is verplicht en moet als eerste komen, dus een typefout daar maakt het record onleesbaar als DMARC, ook al wordt de TXT-vermelding wel gevonden.
Als het antwoord is dat je geen record hebt, is hoe je DMARC instelt de volgende stap, en beginnen op p=none met rua gericht op een mailbox die je leest is het gebruikelijke eerste record.
Hoe ziet een DMARC-record eruit?
Hier is een eenvoudig voorbeeld:
v=DMARC1; p=none; rua=mailto:dmarc@example.com
Van links naar rechts gelezen staat er: dit is een DMARC versie 1-record, pas nog geen handhaving toe (alleen monitoren), en stuur geaggregeerde rapporten naar dmarc@example.com. Een completer record zou er zo uit kunnen zien:
v=DMARC1; p=quarantine; sp=reject; rua=mailto:agg@example.com; ruf=mailto:forensic@example.com; adkim=s; aspf=r
Elk record is gewoon een lijst van tag=value-paren gescheiden door puntkomma's. Twee zijn verplicht (v en p); de rest is optioneel en heeft verstandige standaardwaarden.
Wat betekent elke DMARC-tag?
| Tag | Verplicht | Wat het doet | Voorbeeld |
|---|---|---|---|
v | Ja | Protocolversie. Altijd DMARC1, en moet als eerste komen. | v=DMARC1 |
p | Ja | Beleid voor het hoofddomein: none, quarantine of reject. | p=quarantine |
sp | Nee | Beleid voor subdomeinen, als je wilt dat het afwijkt van p. | sp=reject |
rua | Nee | Waarheen geaggregeerde (samenvattende) rapporten worden gestuurd. | rua=mailto:agg@example.com |
ruf | Nee | Waarheen forensische (per bericht bij falen) rapporten worden gestuurd. | ruf=mailto:forensic@example.com |
adkim | Nee | DKIM-uitlijnmodus: r relaxed (standaard) of s strict. | adkim=s |
aspf | Nee | SPF-uitlijnmodus: r relaxed (standaard) of s strict. | aspf=r |
fo | Nee | Forensische rapportageopties: wanneer een falenrapport wordt gegenereerd. | fo=1 |
ri | Nee | Interval voor geaggregeerde rapportage in seconden (standaard 86.400). | ri=86400 |
De twee die je het vaakst aanpast zijn p en rua. p is je handhavingsniveau, en de juiste keuze is de kern van een goede uitrol (de volledige uitleg staat in wat is een DMARC-beleid). rua is het adres dat de dagelijkse samenvattingen ontvangt waar je echt van leert.
Wat is het verschil tussen rua en ruf?
rua verzamelt geaggregeerde rapporten: XML-samenvattingen, meestal één per dag van elke provider, over alle mail die ze onder jouw domein hebben gezien. Dit is de stroom die je in de gaten wilt houden. ruf verzamelt forensische rapporten: kopieën (vaak geanonimiseerd) van individuele berichten die faalden. Veel providers sturen om privacyredenen helemaal geen forensische rapporten, dus wees niet verbaasd over een stille ruf-mailbox. Wanneer de rapporten binnenkomen, legt hoe je een DMARC-rapport leest de velden uit.
Wat doen de uitlijntags?
adkim en aspf bepalen hoe exact de domeinmatch moet zijn. Relaxed (r) laat een subdomein overeenkomen met het organisatiedomein, zodat mail.example.com uitlijnt met example.com. Strict (s) vereist een exacte match. Relaxed is de standaard en de juiste keuze voor bijna iedereen; kies alleen strict als je daar een specifieke reden voor hebt. Uitlijning is het mechanisme dat DMARC sterker maakt dan SPF of DKIM alleen, en hoe DMARC werkt legt uit waarom.
Hoe publiceer en controleer je het?
Je voegt het TXT-record toe via je DNS-host en bevestigt vervolgens dat het resolvet. De stapsgewijze uitleg, inclusief een cPanel-walkthrough, staat in hoe je DMARC instelt. Als je verstuurt via Bird, worden DKIM- en SPF-uitlijning ingesteld via je verzenddomeinrecords, dus het publiceren van dit DMARC-record en het richten van rua op een mailbox die je in de gaten houdt is het grootste deel van het werk. De authenticatiegids in de docs bevat de Bird-specifieke details.
Een DMARC-record is klein, maar het doet veel werk in één regel. Zorg dat p en rua goed staan en je kunt al het andere later verfijnen.