SMTP voor Drupal — mails uit uw site die aankomen
Drupal verstuurt mail standaard via de PHP-mailfunctie van de webserver: zonder authenticatie en zonder opgebouwde reputatie. Voor Gmail en Outlook is zo'n bericht nauwelijks van spam te onderscheiden — accountactivaties en wachtwoordherstelmails die niet aankomen zijn dan ook de klassieke klacht.
De nette oplossing is de SMTP-module van Drupal. Die vervangt de standaard mailtransport door een verbinding met een externe SMTP-server, zonder dat u iets aan uw andere modules of formulieren hoeft te veranderen. De vijf velden hieronder zijn alles wat de module nodig heeft.
Waarom het misgaat zonder relay
Een Drupal-site is vaak meer dan een website: een ledenportaal, een intranet, een aanvraagformulier van een vereniging of overheid. Precies daar zijn mails onmisbaar — wie zich registreert en geen activatiemail krijgt, haakt af, en niemand meldt u dat. De mail vertrekt wel, maar wordt onderweg geweigerd omdat niets bewijst dat hij van uw domein komt.
SMTP instellen in Drupal
Gegevens ophalen
Log in op uw 2mail-account en haal daar uw SMTP-server, gebruikersnaam en wachtwoord op.
Invullen in Drupal
Installeer en activeer de SMTP-module van Drupal. In de instellingen van die module zet u de module aan als mailtransport, vult u host, poort, versleuteling, gebruikersnaam en wachtwoord in en zet u het afzenderadres op uw eigen domein. De module heeft een testmail ingebouwd: verstuur die naar een extern adres bij een grote provider, niet naar een adres op uw eigen server.
Domein authenticeren
Zorg dat SPF, DKIM en DMARC voor uw domein correct staan, zodat ontvangers kunnen verifiëren dat de mail van u komt.
Testen
Verstuur vanuit uw platform een testbericht naar een adres bij een grote provider en controleer of het in de inbox aankomt en niet in de spammap.
De velden die Drupal vraagt
Elk platform noemt ze net iets anders, maar het gaat altijd om dezelfde vijf. De concrete waarden zijn accountgebonden en vindt u in uw 2mail-account — vul ze daar op, zodat u zeker de juiste gebruikt.
| Veld | Wat u invult |
|---|---|
| SMTP-server (host) | De servernaam uit uw 2mail-account. |
| Poort | De poort die bij uw gekozen versleuteling hoort; uw account toont welke. |
| Versleuteling | TLS. Verstuur nooit onversleuteld — uw inloggegevens gaan anders leesbaar over de lijn. |
| Gebruikersnaam | De SMTP-login van uw 2mail-account. |
| Wachtwoord | Het bijbehorende wachtwoord. Gebruik nooit het wachtwoord van een mailbox van een medewerker. |
SMTP-configuratie voor Drupal in code
Werkende voorbeelden voor poort 587 met STARTTLS, klaar om over te nemen. Vervang het afzenderadres door een adres op uw eigen domein en controleer servernaam en login in uw 2mail-account. Het wachtwoord hoort in een omgevingsvariabele — nooit in de code en nooit in versiebeheer.
De SMTP-module installeren
De module heet voluit SMTP Authentication Support en wordt met Composer geïnstalleerd, zoals elke Drupal-module vandaag. Daarna vindt u de instellingen in het beheer onder de configuratie van het systeem.
composer require drupal/smtp
drush en smtp -y Instellingen en wachtwoord via settings.php
U kunt alles in het formulier van de module invullen, maar dan belandt het wachtwoord in de configuratie — en bij een configuratie-export dus in versiebeheer. Een override in settings.php wint van de opgeslagen waarde, blijft buiten de export en laat u per omgeving een andere login gebruiken. Het wachtwoord zelf komt uit een omgevingsvariabele van de server. Kies als protocol TLS: dat is in deze module STARTTLS, wat bij poort 587 hoort; de optie SSL is voor poort 465.
// sites/default/settings.php (or settings.local.php per environment)
// Route all Drupal mail through the SMTP module.
$config['system.mail']['interface']['default'] = 'SMTPMailSystem';
$config['smtp.settings']['smtp_on'] = TRUE;
$config['smtp.settings']['smtp_host'] = 'relay.2mail.eu';
$config['smtp.settings']['smtp_port'] = '587';
$config['smtp.settings']['smtp_protocol'] = 'tls'; // "Use TLS" in the form = STARTTLS
$config['smtp.settings']['smtp_username'] = getenv('SMTP_USERNAME');
$config['smtp.settings']['smtp_password'] = getenv('SMTP_PASSWORD');
$config['smtp.settings']['smtp_from'] = 'noreply@example.com';
$config['smtp.settings']['smtp_fromname'] = 'Example'; Controleren met Drush
Overrides uit settings.php ziet u niet in het formulier: dat toont de opgeslagen waarde. Vraag daarom met Drush op wat effectief geldt, en verstuur daarna de testmail die de module onderaan haar instellingenpagina aanbiedt. Mislukt die, dan staat de echte oorzaak in het logboek en niet op het scherm.
drush cache:rebuild
# Which mail system is active, and which host does Drupal really use?
drush config:get system.mail interface.default --include-overridden
drush config:get smtp.settings smtp_host --include-overridden
# What the module logged about failed deliveries (needs the dblog module):
drush watchdog:show --type=smtp Welke mails Drupal verstuurt
Zodra de relay ingesteld is, lopen deze allemaal via 2mail — u hoeft ze niet stuk voor stuk te configureren.
Valkuilen bij Drupal
De module moet ook echt de mailer zijn
Drupal kan meerdere mailsystemen naast elkaar hebben. Staat de SMTP-module geïnstalleerd maar niet ingeschakeld als mailtransport, dan blijft alles via de PHP-mailfunctie lopen en verandert er niets. Controleer dat eerst wanneer de testmail wel aankomt maar de echte mail niet.
Afzender op uw eigen domein
Het e-mailadres van de site staat in de basisinstellingen en wordt als afzender gebruikt. Zet dat op een adres van uw eigen domein — hetzelfde domein waarvoor SPF, DKIM en DMARC geregeld zijn. Een gratis adres faalt op DMARC, hoe correct de SMTP-gegevens ook zijn.
Configuratie-export en wachtwoorden
Werkt u met configuratiebeheer, dan reizen de SMTP-instellingen mee in de export. Overschrijft een import ze met de waarden van een testomgeving, dan verstuurt uw live site plots met verkeerde gegevens. Houd het wachtwoord buiten de export en zet het per omgeving apart.
Veelvoorkomende foutmeldingen bij Drupal
De meldingen die u te zien krijgt wanneer host, poort, versleuteling of login niet kloppen — letterlijk, zodat u ze herkent in uw log, met de oorzaak en de oplossing ernaast.
| Melding | Oorzaak | Oplossing |
|---|---|---|
Unable to send email. Contact the site administrator if the problem persists. | Dit is de algemene melding van Drupal zelf, die enkel zegt dát het verzenden mislukte. De eigenlijke SMTP-fout staat in het logboek, onder het type smtp. | Open de recente logberichten in het beheer of gebruik drush watchdog:show --type=smtp, en zoek daar een van de meldingen hieronder. |
SMTP Error: Could not connect to SMTP host. | De server bereikt de relay niet, of protocol en poort passen niet bij elkaar: SSL gekozen op poort 587, een tikfout in de host, of een hoster die uitgaand verkeer op poort 587 blokkeert. | Zet het protocol op TLS en de poort op 587. Blijft het mislukken, test dan vanaf de server met openssl s_client -starttls smtp -connect relay.2mail.eu:587 en laat uw hoster de poort openzetten. |
SMTP Error: Could not authenticate. | De relay weigert de login: een verkeerde gebruikersnaam of een verkeerd wachtwoord, of een omgevingsvariabele die binnen de webserver leeg is, zodat de override een leeg wachtwoord doorgeeft. | Controleer of getenv('SMTP_PASSWORD') binnen de webserver een waarde teruggeeft, en gebruik de SMTP-login uit uw 2mail-account — niet het wachtwoord van een mailbox. |
SMTP Error: The following recipients failed: … | De login klopt, maar de relay weigert het bericht bij het opgeven van de ontvanger — in de praktijk omdat het afzenderadres op een domein staat dat niet aan uw 2mail-account gekoppeld is. Vaak is het e-mailadres van de site nog een adres van de hoster of een gratis adres. | Zet het afzenderadres in de module én het e-mailadres van de site in de basisinstellingen op een adres van een domein dat u in 2mail hebt toegevoegd. |
Ander platform?
SMTP is een standaardprotocol: elk systeem dat SMTP spreekt — een CRM, een ERP, een eigen applicatie of een server — kan via 2mail versturen met dezelfde vijf velden.