SMTP per Drupal — e-mail dal tuo sito che arrivano
Drupal invia per impostazione predefinita tramite la funzione mail di PHP del server web: senza autenticazione e senza reputazione consolidata. Per Gmail e Outlook un messaggio del genere è quasi indistinguibile dallo spam — attivazioni di account ed e-mail di recupero password che non arrivano sono infatti il reclamo classico.
La soluzione pulita è il modulo SMTP di Drupal. Sostituisce il trasporto di posta predefinito con una connessione a un server SMTP esterno, senza che tu debba cambiare nulla negli altri moduli o nei moduli di contatto. I cinque campi qui sotto sono tutto ciò di cui il modulo ha bisogno.
Perché senza relay le cose vanno storte
Un sito Drupal è spesso più di un sito web: un portale per i soci, una intranet, un modulo di richiesta di un'associazione o di un ente pubblico. È proprio lì che le e-mail sono indispensabili — chi si registra e non riceve l'e-mail di attivazione abbandona, e nessuno te lo segnala. L'e-mail parte, ma viene rifiutata lungo il percorso perché nulla dimostra che provenga dal tuo dominio.
Configurare l'SMTP in Drupal
Recupera i dati
Accedi al tuo account 2mail e recupera lì il tuo server SMTP, il nome utente e la password.
Inserisci in Drupal
Installa e attiva il modulo SMTP di Drupal. Nelle impostazioni del modulo lo attivi come trasporto di posta, inserisci host, porta, cifratura, nome utente e password e imposti l'indirizzo mittente sul tuo dominio. Il modulo ha un'e-mail di prova integrata: inviala a un indirizzo esterno presso un grande provider, non a un indirizzo sul tuo stesso server.
Autentica il dominio
Assicurati che SPF, DKIM e DMARC siano configurati correttamente per il tuo dominio, così i destinatari possono verificare che il messaggio provenga da te.
Prova
Invia dalla tua piattaforma un messaggio di prova a un indirizzo presso un grande provider e verifica che arrivi nella posta in arrivo e non nella cartella spam.
I campi richiesti da Drupal
Ogni piattaforma li chiama in modo leggermente diverso, ma si tratta sempre degli stessi cinque. I valori concreti sono legati al tuo account e li trovi nel tuo account 2mail — recuperali da lì, così sei certo di usare quelli giusti.
| Campo | Che cosa inserire |
|---|---|
| Server SMTP (host) | Il nome del server dal tuo account 2mail. |
| Porta | La porta corrispondente alla cifratura scelta; il tuo account indica quale. |
| Cifratura | TLS. Non inviare mai in chiaro — altrimenti le tue credenziali viaggiano leggibili sulla rete. |
| Nome utente | Il login SMTP del tuo account 2mail. |
| Password | La password corrispondente. Non usare mai la password della casella di posta di un collaboratore. |
Configurazione SMTP per Drupal nel codice
Esempi funzionanti per la porta 587 con STARTTLS, pronti da copiare. Sostituisci l'indirizzo mittente con un indirizzo del tuo dominio e verifica nome del server e login nel tuo account 2mail. La password va in una variabile d'ambiente — mai nel codice e mai nel controllo di versione.
Installare il modulo SMTP
Il nome completo del modulo è SMTP Authentication Support e si installa con Composer, come oggi ogni modulo Drupal. Dopodiché trovi le impostazioni nell'area di amministrazione, sotto la configurazione del sistema.
composer require drupal/smtp
drush en smtp -y Impostazioni e password tramite settings.php
Puoi inserire tutto nel form del modulo, ma così la password finisce nella configurazione — e, con un'esportazione della configurazione, nel controllo di versione. Un override in settings.php prevale sul valore salvato, resta fuori dall'esportazione e ti permette di usare credenziali diverse per ogni ambiente. La password stessa arriva da una variabile d'ambiente del server. Come protocollo scegli TLS: in questo modulo corrisponde a STARTTLS, che va con la porta 587; l'opzione SSL è per la porta 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'; Controllare con Drush
Gli override di settings.php non li vedi nel form: quello mostra il valore salvato. Chiedi quindi a Drush che cosa è effettivamente in vigore, e poi invia l'e-mail di prova che il modulo propone in fondo alla sua pagina delle impostazioni. Se fallisce, la vera causa sta nel log e non sullo schermo.
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 Quali e-mail invia Drupal
Una volta configurato il relay, tutte queste passano tramite 2mail — non devi configurarle una per una.
Insidie con Drupal
Il modulo deve essere davvero il mailer
Drupal può avere più sistemi di posta affiancati. Se il modulo SMTP è installato ma non attivato come trasporto di posta, tutto continua a passare dalla funzione mail di PHP e non cambia nulla. Controlla per prima cosa questo quando l'e-mail di prova arriva ma quelle reali no.
Mittente sul tuo dominio
L'indirizzo e-mail del sito si trova nelle impostazioni di base e viene usato come mittente. Impostalo su un indirizzo del tuo dominio — lo stesso dominio per cui sono configurati SPF, DKIM e DMARC. Un indirizzo gratuito fallisce su DMARC, per quanto corretti siano i dati SMTP.
Esportazione della configurazione e password
Se lavori con la gestione della configurazione, le impostazioni SMTP viaggiano nell'esportazione. Se un'importazione le sovrascrive con i valori di un ambiente di test, il tuo sito in produzione invia improvvisamente con dati sbagliati. Tieni la password fuori dall'esportazione e impostala separatamente per ogni ambiente.
Messaggi di errore frequenti con Drupal
I messaggi che compaiono quando host, porta, cifratura o login non sono corretti — riportati alla lettera, così li riconosci nel tuo log, con accanto la causa e la soluzione.
| Messaggio | Causa | Soluzione |
|---|---|---|
Unable to send email. Contact the site administrator if the problem persists. | È il messaggio generico di Drupal stesso, che dice soltanto che l'invio non è riuscito. L'errore SMTP vero e proprio si trova nel log, sotto il tipo smtp. | Apri i messaggi di log recenti nell'area di amministrazione oppure usa drush watchdog:show --type=smtp, e cerca lì uno dei messaggi qui sotto. |
SMTP Error: Could not connect to SMTP host. | Il server non raggiunge il relay, oppure protocollo e porta non corrispondono: SSL scelto sulla porta 587, un errore di battitura nell'host, o un provider di hosting che blocca il traffico in uscita sulla porta 587. | Imposta il protocollo su TLS e la porta su 587. Se continua a fallire, prova dal server con openssl s_client -starttls smtp -connect relay.2mail.eu:587 e chiedi al tuo provider di hosting di aprire la porta. |
SMTP Error: Could not authenticate. | Il relay rifiuta le credenziali: nome utente o password errati, oppure una variabile d'ambiente che all'interno del server web è vuota, per cui l'override passa una password vuota. | Verifica che getenv('SMTP_PASSWORD') restituisca un valore all'interno del server web, e usa il login SMTP del tuo account 2mail — non la password di una casella di posta. |
SMTP Error: The following recipients failed: … | Le credenziali sono corrette, ma il relay rifiuta il messaggio al momento di indicare il destinatario — in pratica perché l'indirizzo mittente è su un dominio che non è collegato al tuo account 2mail. Spesso l'indirizzo e-mail del sito è ancora un indirizzo del provider di hosting o un indirizzo gratuito. | Imposta sia l'indirizzo mittente nel modulo sia l'indirizzo e-mail del sito nelle impostazioni di base su un indirizzo di un dominio che hai aggiunto in 2mail. |
Un'altra piattaforma?
L'SMTP è un protocollo standard: ogni sistema che parla SMTP — un CRM, un ERP, un'applicazione proprietaria o un server — può inviare tramite 2mail con gli stessi cinque campi.