Module 9 · 9.1
E-mail vanuit WordPress
Module 9: E-mail, vindbaarheid, AVG, onderhoud en verhuizen · Leestijd: 9 minuten
Leerdoel: Na deze les kun je ervoor zorgen dat mail uit WordPress (formulieren, bestellingen, wachtwoordlinks) betrouwbaar aankomt.
Kernbegrippen: wp_mail, PHP mail(), afzender (From), Reply-To, SMTP, SMTP-plugin, geauthenticeerde mailbox, transactionele maildienst, SPF, DKIM, DMARC, uitlijning, MX elders, testmail
WordPress verstuurt meer mail dan je denkt
Je site verstuurt mail bij: een ingevuld contactformulier, een bestelling (aan de klant en aan jou), een nieuwe gebruiker, een vergeten wachtwoord, een nieuwe reactie, een automatische update, een kritieke fout (les 5.4). Komt die mail niet aan, dan merk je dat vaak pas als een klant belt: "ik heb drie keer het formulier ingevuld."
Hoe WordPress standaard mailt
WordPress verstuurt alles via de functie wp_mail. Standaard geeft die de mail aan de PHP-functie mail(), die hem aan het mailprogramma van de webserver doorgeeft. Dat werkt, maar heeft drie zwakke plekken:
- De afzender. Zonder instelling stuurt WordPress als
wordpress@example.com. Bestaat dat adres niet, of is de afzender iets anders dan je eigen domein, dan wantrouwen ontvangers het. - SPF, DKIM en DMARC. Ontvangende mailservers controleren of de server die de mail aflevert, namens jouw domein mag mailen (SPF), of de mail een geldige digitale handtekening van jouw domein heeft (DKIM), en wat het beleid van je domein is als dat niet klopt (DMARC). In de DNS-cursus (les 4.3 tot en met 4.5) lees je hoe dat werkt. Mail via de webserver haalt die controles alleen als je DNS en de server daarop zijn ingericht.
- Mail elders. Staat je e-mail niet bij je webhoster maar bijvoorbeeld bij Microsoft 365 of Google Workspace (je MX-records wijzen daarheen), dan klopt de mail via de webserver vaak niet met je SPF en DKIM. En sommige webservers proberen mail aan je eigen domein lokaal af te leveren in plaats van via de MX, zodat hij nooit in je echte mailbox komt.
De afzender en Reply-To goed zetten
Een veelgemaakte fout bij contactformulieren: als afzender (From) het adres van de bezoeker gebruiken. Dat lijkt logisch ("dan kan ik op antwoorden drukken"), maar jouw server mag niet mailen namens @gmail.com of @hotmail.com. Die domeinen hebben een streng DMARC-beleid, dus de ontvanger weigert de mail of zet hem in de spam.
Juist is:
From: Website <website@example.com> (een adres van je eigen domein)
Reply-To: bezoeker@example.net (het adres dat de bezoeker invulde)
To: info@example.comMet Reply-To komt je antwoord toch bij de bezoeker uit. Vrijwel elke formulierplugin heeft die twee velden apart.
SMTP: via een echte mailbox versturen
De betrouwbaarste oplossing is WordPress laten mailen via SMTP: dezelfde manier waarop je mailprogramma verstuurt, met een gebruikersnaam en wachtwoord van een echte mailbox. Dat doe je met een SMTP-plugin (bijvoorbeeld WP Mail SMTP, FluentSMTP of Post SMTP; er zijn er meer). De plugin vangt wp_mail op en stuurt de mail via de server die je opgeeft:
| Keuze | Voor wie |
|---|---|
De mailbox bij je eigen hoster (bijvoorbeeld website@example.com op de mailserver van je hostingpakket) | De meeste kleine sites met mail bij dezelfde partij |
| Je mail bij Microsoft 365 of Google Workspace | Als je mail daar staat; vaak via een speciale koppeling in de plugin (OAuth) in plaats van een wachtwoord, omdat die diensten gewone SMTP-aanmelding steeds meer beperken |
| Een transactionele maildienst (een dienst die gespecialiseerd is in het versturen van mail vanuit websites en apps) | Webwinkels en sites die veel mail versturen |
Voordelen: de mail gaat langs een server die al met SPF en DKIM voor je domein is ingericht, de afzender is een bestaand adres, en veel plugins houden een log bij, zodat je ziet wat er verstuurd is en wat mislukte.
Let op een paar dingen:
- Gebruik een apart mailadres voor de site (bijvoorbeeld
website@), niet je eigen mailbox. Als de site wordt gehackt en het wachtwoord uitlekt, kan dat adres zonder schade worden vervangen. - Het SMTP-wachtwoord staat in de database of in wp-config.php. Gebruik waar het kan een app-wachtwoord of een koppeling zonder wachtwoord.
- Een maillog bevat persoonsgegevens (wie heeft wat gestuurd). Laat hem niet eindeloos groeien (les 9.3).
SPF, DKIM en DMARC voor je site
Welke server ook verstuurt, je DNS moet erbij passen:
- SPF: het SPF-record van je domein moet de server noemen die de mail aflevert. Mail je via de mailserver van je hoster, dan staat die er meestal al in. Mail je via een transactionele dienst, dan voeg je hun
include:toe, in hetzelfde SPF-record (nooit een tweede SPF-record, DNS-cursus les 4.3). - DKIM: de verzendende server moet de mail ondertekenen met een sleutel die in je DNS staat (
<selector>._domainkey.example.com). Bij je hoster en bij transactionele diensten zet je dat aan; de dienst geeft je de records. - DMARC: een record op
_dmarc.example.com. Begin metp=noneen scherp aan als alles klopt (DNS-cursus les 4.5).
Voor DMARC moet het domein in de From uitgelijnd zijn met het domein dat SPF of DKIM doorstaat. Daarom is "From op je eigen domein" zo belangrijk.
Testen
- Veel SMTP-plugins hebben een knop Testmail versturen. Stuur er een naar een adres bij een andere partij (een Gmail- of Outlook.com-adres) en kijk of hij in de inbox komt.
- Bekijk in die mail de headers ("Origineel weergeven" of "Bron weergeven"). Zoek
spf=pass,dkim=passendmarc=pass. - Vul je eigen contactformulier in en kijk of de mail aankomt, met de goede Reply-To.
- Test ook een wachtwoordlink en, bij een winkel, een testbestelling.
Online tools zoals mail-tester.com geven een score en uitleg; met de E-mailcheck van je hoster (bij WebOké heet die zo) of internet.nl controleer je de DNS-kant.
In de praktijk: zo ziet het eruit in een paneel
Als voorbeeld gebruiken we DirectAdmin en een SMTP-plugin. Bij andere hosters en plugins heten de velden vergelijkbaar.
- Maak in DirectAdmin bij E-mailaccounts een mailbox
website@example.commet een sterk wachtwoord. - Zoek bij je hoster de instellingen voor uitgaande mail op (servernaam, poort 465 of 587, versleuteling).
- Vul die in de SMTP-plugin in, met
website@example.comals afzender. Zet "afzender forceren" aan, zodat ook andere plugins dit adres gebruiken. - Controleer bij DNS-beheer dat SPF, DKIM en DMARC voor je domein bestaan.
- Stuur een testmail en lees de headers.
Samenvatting
- WordPress verstuurt via wp_mail en standaard via PHP mail(); de afzender en de DNS bepalen of het aankomt.
- Zet de afzender (From) op een adres van je eigen domein en het adres van de bezoeker in Reply-To.
- Een SMTP-plugin met een aparte mailbox of een transactionele dienst is het betrouwbaarst, met een log.
- SPF moet de verzendende server noemen (in één record), DKIM moet aan, DMARC beginnen met p=none.
- Test met een adres bij een andere partij en lees spf, dkim en dmarc in de headers.
Quiz
Opdracht
Opdracht A9.1: Is je domein klaar om te mailen vanaf je site? Vul je domein in, het adres dat je site als afzender gebruikt, en de server waarlangs je site mailt (de naam van de SMTP-server, of "webserver" als je niets hebt ingesteld). Vul ook de DKIM-selector in als je die weet. Het programma controleert: het afzenderadres hoort bij je domein, er is precies één SPF-record en het staat de genoemde server toe, er is een DKIM-record bij de selector (of het meldt dat het zonder selector niet kan controleren), en er is een geldig DMARC-record.
Opdracht D9.1: Een testmail lezen. Stuur een testmail vanuit je site (de testknop van je SMTP-plugin, of een wachtwoordlink naar een testaccount) naar een adres bij een andere partij. Open de headers van die mail en noteer de uitkomsten bij spf, dkim en dmarc, en welk domein bij elk staat. Vul daarna je eigen contactformulier in en controleer: komt de mail aan, en gaat "beantwoorden" naar het adres dat je in het formulier invulde?
Opdracht D9.1: Een testmail lezen
Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.
Drie uitkomsten (pass, fail of none) met een domein, bijvoorbeeld "spf=pass smtp.mailfrom=jouwdomein.nl". Bij een fail noem je de vervolgstap (SPF aanvullen, DKIM aanzetten, SMTP-plugin).
Je vinkjes en aantekeningen blijven alleen in deze browser; we sturen ze nergens heen. Ben je aangemeld, dan bewaren we in Mijn cursussen alleen dat je de opdracht gedaan hebt.
Verder lezen
Deze artikelen beschrijven de stappen in de panelen van WebOké; in andere panelen werken ze vergelijkbaar.
- Mail versturen via PHP lukt niet, de MX-records wijzen naar elders
- Hoe kan ik in php met mail() de juiste afzender krijgen? smtp
- Een contactformulier op je website: velden laten mailen en spam voorkomen
- Uitleg verzendproces van emails / SMTP
- DirectAdmin handleiding 18.10: Ik kan geen e-mail versturen
- Gratis DNS-cursus 4.3: SPF: wie mag mailen namens jouw domein?
- Gratis DNS-cursus 4.4: DKIM: de handtekening onder je mail
- Gratis DNS-cursus 4.5: DMARC: wat ontvangers moeten doen met nepmail
