Module 4 · 4.2
TXT-records en domeinverificatie
Module 4: Records voor e-mail · Leestijd: 7 minuten
Leerdoel: Na deze les kun je een TXT-record maken om je domein bij een dienst te verifiëren, en weet je wanneer meerdere TXT-records naast elkaar mogen en wanneer niet.
Kernbegrippen: TXT-record, verificatiecode, naam met underscore, aanhalingstekens, tekststukken van 255 tekens, SPF/DMARC als bijzondere TXT-records
Een briefje in je DNS
Een TXT-record is het simpelste record dat er is: een stukje tekst bij een naam. De DNS doet er zelf niets mee. Het is bedoeld voor andere programma's die die tekst komen lezen.
Daarom is TXT het favoriete record van diensten die willen weten of een domein echt van jou is. Google Search Console, Microsoft 365, Google Workspace, Facebook, Apple, GitHub, nieuwsbriefdiensten en webwinkelplatforms werken allemaal zo:
- De dienst geeft je een code, bijvoorbeeld
google-site-verification=Ab12Cd34...ofMS=ms12345678. - Jij zet die code als TXT-record in de DNS van je domein.
- De dienst vraagt het TXT-record van je domein op. Staat de code er, dan weet hij: wie deze code kon plaatsen, beheert dit domein.
Alleen wie de DNS van een domein kan wijzigen, kan zo'n record plaatsen. Daarom is het een betrouwbare controle.
Hoe ziet een TXT-record eruit?
example.com. 3600 IN TXT "google-site-verification=Ab12Cd34Ef56"
example.com. 3600 IN TXT "MS=ms12345678"
example.com. 3600 IN TXT "v=spf1 mx include:spf.service.example ~all"Een paar dingen om te weten:
- Aanhalingstekens. In een zonebestand staat de tekst tussen aanhalingstekens. In de meeste panelen hoef je die niet te typen: het paneel zet ze er zelf omheen. Typ je ze toch, controleer dan na het opslaan of er geen dubbele aanhalingstekens staan.
- Stukken van 255 tekens. Eén tekststuk in een TXT-record mag hooguit 255 tekens lang zijn (RFC 1035). Langere teksten, zoals een DKIM-sleutel, worden opgeknipt in meerdere stukken binnen hetzelfde record:
"eerste deel" "tweede deel". Programma's die TXT lezen plakken die stukken weer aan elkaar. Goede panelen knippen automatisch; bij sommige moet je het zelf doen. - Hoofdletters en spaties tellen. Kopieer de code precies, liefst met kopiëren en plakken. Een spatie aan het eind of een ontbrekend teken is genoeg om de verificatie te laten mislukken.
Op welke naam?
De dienst zegt altijd op welke naam het record moet staan:
- Op het domein zelf. De dienst zegt dan "@", "root", "host leeg" of noemt alleen
example.com. In de meeste panelen typ je dan@of laat je het veld leeg. - Op een eigen naam. Sommige diensten willen een aparte naam die met een underscore begint, zoals
_github-challenge-voorbeeldbedrijfof_acme-challenge. De underscore laat zien dat het geen gewone hostnaam is (je kunt er geen website op openen). Typ in je paneel alleen dat eerste deel; je domeinnaam staat er al achter.
Een veelgemaakte fout: de volledige naam invullen in een paneel dat de domeinnaam er zelf achter zet. Dan ontstaat _github-challenge-voorbeeldbedrijf.example.com.example.com, en de dienst vindt niets. Kijk na het opslaan welke volledige naam het paneel laat zien.
Meerdere TXT-records: mag dat?
Ja. Op één naam mogen zoveel TXT-records staan als je wilt. Een verificatie voor Google en een voor Microsoft zitten elkaar niet in de weg. Elke dienst zoekt tussen alle TXT-records naar zijn eigen code.
Er zijn twee uitzonderingen, en die zijn belangrijk:
- SPF (begint met
v=spf1): maximaal één per naam. Twee SPF-records maken je SPF ongeldig (les 4.3). - DMARC (op
_dmarc, begint metv=DMARC1): maximaal één. Bij twee records doet een ontvanger alsof je geen DMARC hebt (les 4.5).
Vraagt een dienst je "voeg dit SPF-record toe", maak dan dus geen tweede SPF-record, maar vul het bestaande aan.
Mag de verificatie weer weg?
Dat hangt van de dienst af. Veel diensten (zoals Google Search Console en Microsoft 365) controleren later opnieuw. Haal je het record weg, dan kan je domein na een tijd weer als "niet geverifieerd" gelden. Laat het daarom staan, tenzij de dienst zegt dat het weg mag. Een oud verificatierecord van een dienst die je niet meer gebruikt, mag je wel opruimen.
Het werkt niet meteen
Heb je het record net gemaakt en zegt de dienst "niet gevonden"? Dat komt meestal door de cache (module 6). Heeft de dienst je domein al eens opgevraagd voordat het record bestond, dan onthoudt hij een tijdje dat er niets stond. Wacht een kwartier en probeer het opnieuw. Kijk ondertussen zelf met een online DNS-opvraagtool of het record er staat (les 8.2 en 8.3).
In de praktijk: zo ziet het eruit in een paneel
In dit voorbeeld gebruiken we Mijn WebOké. Ga naar het domein, tabblad DNS, en klik op Record toevoegen. Kies type TXT, vul bij Naam @ in (of de naam die de dienst opgeeft) en plak de code bij de waarde. Aanhalingstekens hoef je niet te typen. In DirectAdmin werkt het in DNS Beheer net zo; daar laat je TXT Record Type op Gewoon staan.
In andere panelen heten de velden soms Host, Hostnaam of Name en Value, Content of Data, maar het principe is hetzelfde.
Samenvatting
- Een TXT-record is tekst bij een naam. Diensten gebruiken het om te controleren of een domein van jou is.
- Kopieer de code precies en zet hem op de naam die de dienst opgeeft (vaak
@, soms een naam met underscore). - Meerdere TXT-records op één naam mogen, behalve bij SPF en DMARC: daarvan maximaal één.
- Lukt verificatie niet meteen, wacht dan even: het antwoord kan nog in een cache zitten.
Quiz
Opdracht
Opdracht Z4.2: Verificatiecode opzoeken. Zoek de TXT-records van wikipedia.org op. Daar staat onder meer een verificatiecode van Google. Plak de volledige verificatietekst die begint met google-site-verification=.
Opdracht O4.2: Zelf instellen in je oefenzone. In de oefenzone gebruik je een nepdienst; bij je echte domein gebruik je natuurlijk de echte code die de dienst je geeft. Je krijgt bij de opdracht een persoonlijke code (die ziet eruit als <jouw code>oefen-<code>-<letters>). Maak in je oefenzone twee TXT-records:<code>.dnspractice.eu
- op de naam van de zone zelf (
@):dnscursus-verificatie=<jouw code> - op de naam
_cursus-challenge: alleen<jouw code>
Opdracht O4.2
Deze opdracht doe je in je eigen oefenzone: een echte DNS-zone op de nameservers van WebOké, alleen voor jou. Meld je aan met je e-mailadres. Je krijgt een inloglink per mail en komt daarna terug op deze les. We gebruiken je adres alleen voor de cursus.
Verder lezen
De stappen in deze artikelen gelden voor de panelen van WebOké; in andere panelen werkt het vergelijkbaar.
- DirectAdmin handleiding 5.6: TXT-records voor verificatie (Google, Microsoft en anderen)
- DNS-records beheren in Mijn WebOké (met voorbeelden voor CNAME, TXT en externe diensten)
- WebOké handleiding 5.4: DNS beheren: records toevoegen, wijzigen en verwijderen
- RFC 1035 paragraaf 3.3.14 (TXT), RFC 7208 paragraaf 3.3 (lange SPF-teksten in meerdere stukken)
