Direct naar de inhoud

Cookie-instellingen

Kies per soort welke cookies je toestaat. Je kunt je keuze altijd wijzigen via Cookie-instellingen onderaan elke pagina. Privacyverklaring

Noodzakelijk

Altijd aan

Nodig om in te loggen, je winkelwagen te bewaren en je keuzes te onthouden. Deze staan altijd aan.

Welke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: je sessie en ingelogd blijven
  • weboke_basket: je winkelwagen
  • wkBtwIncl: prijzen met of zonder btw tonen
  • wok_cookies: je cookiekeuze, 12 maanden

Meet welke advertentie tot een bezoek of bestelling leidt, zodat we niet betalen voor advertenties die niets doen.

Welke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), tot 90 dagen
  • OpenAI Ads, advertenties in ChatGPT
  • wok_aff: via welke partner je bij ons kwam (affiliateprogramma), 60 dagen

4,6

Land en taal

Elk land heeft zijn eigen site, met prijzen en btw van dat land.

Bekijken

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:

  1. 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.
  2. 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.
  3. 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.com

Met 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:

KeuzeVoor 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 WorkspaceAls 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 met p=none en 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

  1. 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.
  2. Bekijk in die mail de headers ("Origineel weergeven" of "Bron weergeven"). Zoek spf=pass, dkim=pass en dmarc=pass.
  3. Vul je eigen contactformulier in en kijk of de mail aankomt, met de goede Reply-To.
  4. 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.

  1. Maak in DirectAdmin bij E-mailaccounts een mailbox website@example.com met een sterk wachtwoord.
  2. Zoek bij je hoster de instellingen voor uitgaande mail op (servernaam, poort 465 of 587, versleuteling).
  3. Vul die in de SMTP-plugin in, met website@example.com als afzender. Zet "afzender forceren" aan, zodat ook andere plugins dit adres gebruiken.
  4. Controleer bij DNS-beheer dat SPF, DKIM en DMARC voor je domein bestaan.
  5. 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

1. Je contactformulier gebruikt het adres van de bezoeker als afzender. Mail van Gmail-gebruikers komt niet aan. Waarom?



2. Je mail staat bij Microsoft 365, je website bij een webhoster. Mail uit WordPress komt slecht aan. Wat is de beste oplossing?



3. Waar kijk je in een ontvangen testmail of SPF, DKIM en DMARC kloppen?



4. Waarom gebruik je voor de site een apart mailadres zoals website@ in plaats van je eigen mailbox?



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 A9.1: Is je domein klaar om te mailen vanaf je site?





Wat je invult en wat we vinden, slaan we niet op. Je browser onthoudt je antwoorden en of je de opdracht hebt gehaald. Ben je aangemeld, dan bewaren we alleen dat je de opdracht (bijna) goed had in Mijn cursussen; daar kun je het ook verwijderen.

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.




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.

Even geduld…

Stel je domeinen in

Regel per domein de nameservers, de koppeling aan je hosting en wie de eigenaar wordt.

Je domeinen laden…