# MTA-STS instellen voor verbeterde e-mailbeveiliging [[TOC]] E-mail tussen servers wordt idealiter versleuteld met TLS, maar die versleuteling is van oudsher optioneel. Een aanvaller die het verkeer onderschept kan de versleuteling onderdrukken en de mail in platte tekst meelezen. MTA-STS sluit dat gat door af te dwingen dat mail naar jouw domein altijd versleuteld binnenkomt. Voor organisaties die gevoelige gegevens verwerken is het een waardevolle extra laag. ## Het probleem dat MTA-STS oplost Wanneer een server mail naar jou wil sturen, vraagt hij of jij TLS ondersteunt. Standaard is dit opportunistisch: lukt TLS niet, dan valt de verbinding terug op onversleuteld. Een aanvaller kan die terugval forceren met een downgrade-aanval en zo de mail meelezen of zelfs aanpassen. MTA-STS maakt versleuteling verplicht. Je publiceert een beleid dat zegt: mail naar mij moet over TLS met een geldig certificaat, anders niet afleveren. Verzendende servers die MTA-STS ondersteunen, waaronder Gmail, respecteren dat beleid. Servers die MTA-STS niet ondersteunen, blijven gewoon op de oude manier afleveren, dus je verliest geen mail van oudere verzenders. :::info title="Het beschermt inkomende mail" MTA-STS beschermt je inkomende mail, dus mail die anderen naar jou sturen. Het zegt niets over je uitgaande mail. Voor de versleuteling van uitgaande mail vertrouw je op het MTA-STS-beleid van de ontvanger. Het is dus een wederzijds systeem dat pas volledig werkt als beide kanten het hebben ingericht. ::: ## De onderdelen van MTA-STS MTA-STS bestaat uit twee delen die samenwerken: - Een klein **DNS-record** dat het bestaan van een beleid aankondigt. Je publiceert het als TXT-record op `_mta-sts.jouwdomein.nl` met de inhoud `v=STSv1; id=...`. Het `id` is een uniek versienummer dat je wijzigt zodra je het beleid aanpast, zodat verzenders weten dat ze een nieuwe versie moeten ophalen. - Een **policy-bestand** dat je via HTTPS host en dat de daadwerkelijke regels bevat. Het moet exact `mta-sts.txt` heten en bereikbaar zijn op `https://mta-sts.jouwdomein.nl/.well-known/mta-sts.txt`. Een policy-bestand ziet er bijvoorbeeld zo uit: ```text version: STSv1 mode: testing mx: aspmx.l.google.com mx: *.aspmx.l.google.com max_age: 604800 ``` De `mx`-regels moeten overeenkomen met de MX-records in je DNS. De `max_age` staat in seconden en bepaalt hoe lang verzenders je beleid mogen cachen. Een week (`604800`) is gangbaar: lang genoeg om efficiƫnt te zijn, kort genoeg om wijzigingen redelijk snel te laten doorwerken. :::tip title="Sneller via de Admin console" Gebruik je Google Workspace, dan hoef je het policy-bestand niet zelf te hosten. In de Admin console onder Apps, Gmail, Compliance kun je MTA-STS direct aanzetten en kiest Google de juiste MX-hosts en hosting voor je. Je hoeft alleen nog het `_mta-sts`-DNS-record te publiceren. Dat scheelt veel handwerk en certificaatonderhoud. ::: ## Het stappenplan :::howto title="Zo zet je MTA-STS op" 1. Bepaal je beleidsmodus en begin met **testing**, niet met enforce. 2. Stel je policy-bestand samen met je `mx`-hosts, de `mode` en een `max_age`. 3. Host dat bestand op `https://mta-sts.jouwdomein.nl/.well-known/mta-sts.txt`, of zet het in Google Workspace aan via de Admin console. 4. Zorg dat het `mta-sts`-subdomein een geldig TLS-certificaat heeft. 5. Publiceer het TXT-record op `_mta-sts.jouwdomein.nl` met een `id`-versienummer. 6. Zet TLS-rapportage aan met een TXT-record op `_smtp._tls.jouwdomein.nl`. 7. Controleer met een validatietool of het beleid correct wordt opgehaald. ::: ## Beginnen in testmodus De modus van je beleid bepaalt wat er gebeurt als versleuteling faalt. In **testing**-modus levert mail nog gewoon af, maar krijg je rapporten over wat er zou zijn geblokkeerd. In **enforce**-modus wordt mail die niet versleuteld kan worden daadwerkelijk geweigerd. :::warn title="Ga nooit direct naar enforce" Als je certificaat of je policy-bestand een fout bevat, weigeren verzendende servers in enforce-modus al je inkomende mail. Je merkt dat vaak pas als klanten klagen dat hun bericht bounced. Draai eerst minstens twee weken in testmodus, controleer de TLS-rapporten op problemen en stap pas over op enforce als alles schoon is. ::: ## TLS-rapportage erbij MTA-STS werkt het beste samen met TLS-rapportage (TLS-RPT). Die rapporten vertellen je of er pogingen waren om versleuteld af te leveren die mislukten. Je zet ze aan met een TXT-record op `_smtp._tls.jouwdomein.nl`, bijvoorbeeld `v=TLSRPTv1; rua=mailto:tls-reports@jouwdomein.nl`. In testmodus zijn die rapporten je veiligheidsnet: ze tonen wat enforce zou hebben geblokkeerd, zodat je problemen oplost voordat ze klanten raken. Een gezond uitrolpad ziet er zo uit: 1. Je publiceert het beleid in testmodus en zet TLS-rapportage aan. Mail levert gewoon af en de rapporten stromen binnen. 2. Je laat dit enkele weken draaien en controleert of de rapporten schoon zijn, dus zonder mislukte versleutelde pogingen. 3. Je verifieert dat je certificaat geldig is en je `mx`-hosts kloppen met je DNS. 4. Pas dan zet je `mode` op `enforce`, waarmee versleuteling verplicht wordt. 5. Je blijft de rapporten monitoren, zodat nieuwe problemen tijdig opvallen. ## Onderhoud en certificaten Een verlopen certificaat op je `mta-sts`-subdomein breekt het hele systeem in enforce-modus. Zorg voor automatische certificaatvernieuwing en bewaak de geldigheid. Wijzig je je MX-records, werk dan ook je policy-bestand bij en verhoog het `id` in het DNS-record, anders klopt het beleid niet meer met de werkelijkheid. :::tip title="Stel monitoring in en vergeet het niet" Stel een herinnering of automatische monitoring in voor zowel je certificaatverloop als de inhoud van je policy-bestand. MTA-STS is iets dat je instelt en daarna vergeet, tot een verlopen certificaat of een gewijzigde MX-host stilletjes je inkomende mail blokkeert. Proactieve monitoring voorkomt die nachtmerrie. ::: :::faq ### Beschermt MTA-STS mijn uitgaande mail? Nee, MTA-STS beschermt de mail die anderen naar jou sturen. Voor je eigen uitgaande mail ben je afhankelijk van het MTA-STS-beleid van de ontvanger. ### Ondersteunt Gmail MTA-STS? Ja. Gmail respecteert het MTA-STS-beleid van ontvangende domeinen, en in Google Workspace kun je het zelf in de Admin console aanzetten voor je eigen domein. ### Kan ik direct naar enforce? Technisch wel, maar dat is riskant. Een fout in je certificaat of policy laat verzenders al je inkomende mail weigeren. Begin altijd in testmodus en stap pas over als de rapporten schoon zijn. ### Wat gebeurt er bij een verlopen certificaat? In enforce-modus weigeren verzenders dan je mail, omdat het beleid niet meer geverifieerd kan worden. Daarom is automatische certificaatvernieuwing en monitoring essentieel. ### Wat is het verschil met TLS-RPT? MTA-STS dwingt het beleid af, TLS-RPT geeft je de rapporten over hoe het uitpakt. Ze vullen elkaar aan: zet ze samen aan zodat je ziet wat enforce zou blokkeren. ### Verlies ik mail van verzenders zonder MTA-STS? Nee. Servers die MTA-STS niet ondersteunen leveren gewoon op de oude manier af. MTA-STS verscherpt alleen de afhandeling voor verzenders die het wel ondersteunen. ::: MTA-STS sluit een oud gat in e-mailbeveiliging door versleuteling van inkomende mail af te dwingen. Het is geen instelling om lichtvaardig op enforce te zetten: begin in testmodus, combineer het met TLS-rapportage, verifieer alles en bewaak je certificaten. Doe je dat zorgvuldig, dan beschermt het je communicatie tegen afluisteren zonder je bezorging te breken.