SMTP para Drupal — correos de su web que llegan
Drupal envía el correo por defecto con la función mail de PHP del servidor web: sin autenticación y sin reputación construida. Para Gmail y Outlook, un mensaje así apenas se distingue del spam, así que las activaciones de cuenta y los correos de recuperación que no llegan son la queja clásica.
La solución limpia es el módulo SMTP de Drupal. Sustituye el transporte de correo por defecto por una conexión con un servidor SMTP externo, sin que tenga que cambiar nada en sus otros módulos ni formularios. Los cinco campos de abajo son todo lo que necesita el módulo.
Por qué falla sin relay
Un sitio Drupal suele ser más que una web: un portal de socios, una intranet, un formulario de solicitud de una asociación o de una administración. Justo ahí el correo es imprescindible: quien se registra y no recibe el correo de activación abandona, y nadie se lo comunica. El correo sí sale, pero se rechaza por el camino porque nada demuestra que venga de su dominio.
Configurar el SMTP en Drupal
Obtener los datos
Acceda a su cuenta de 2mail y obtenga allí su servidor SMTP, su nombre de usuario y su contraseña.
Introducirlos en Drupal
Instale y active el módulo SMTP de Drupal. En los ajustes del módulo lo activa como transporte de correo, rellena el host, el puerto, el cifrado, el usuario y la contraseña, y pone la dirección de remitente en su propio dominio. El módulo lleva un correo de prueba integrado: envíelo a una dirección externa de un gran proveedor, no a una de su propio servidor.
Autenticar el dominio
Asegúrese de que SPF, DKIM y DMARC de su dominio son correctos, para que los destinatarios puedan verificar que el correo viene de usted.
Probar
Envíe desde su plataforma un mensaje de prueba a una dirección de un gran proveedor y compruebe que llega a la bandeja de entrada y no a la carpeta de spam.
Los campos que pide Drupal
Cada plataforma los llama de una manera algo distinta, pero siempre son los mismos cinco. Los valores concretos dependen de su cuenta y los encuentra en su cuenta de 2mail: cópielos de ahí para asegurarse de usar los correctos.
| Campo | Qué introducir |
|---|---|
| Servidor SMTP (host) | El nombre del servidor de su cuenta de 2mail. |
| Puerto | El puerto que corresponde al cifrado elegido; su cuenta le indica cuál. |
| Cifrado | TLS. No envíe nunca sin cifrar: de lo contrario sus credenciales viajan en claro. |
| Nombre de usuario | El acceso SMTP de su cuenta de 2mail. |
| Contraseña | La contraseña correspondiente. No use nunca la contraseña del buzón de un empleado. |
Configuración SMTP para Drupal en código
Ejemplos que funcionan para el puerto 587 con STARTTLS, listos para copiar. Sustituya la dirección de remitente por una dirección de su propio dominio y compruebe el nombre del servidor y el acceso en su cuenta de 2mail. La contraseña va en una variable de entorno: nunca en el código y nunca en el control de versiones.
Instalar el módulo SMTP
El nombre completo del módulo es SMTP Authentication Support y se instala con Composer, como cualquier módulo de Drupal hoy en día. Después encontrará sus ajustes en la administración, dentro de la configuración del sistema.
composer require drupal/smtp
drush en smtp -y Ajustes y contraseña a través de settings.php
Puede rellenarlo todo en el formulario del módulo, pero entonces la contraseña acaba en la configuración y, con una exportación de configuración, en el control de versiones. Un override en settings.php prevalece sobre el valor guardado, queda fuera de la exportación y le permite usar un acceso distinto en cada entorno. La contraseña en sí sale de una variable de entorno del servidor. Elija TLS como protocolo: en este módulo eso es STARTTLS, que corresponde al puerto 587; la opción SSL es para el puerto 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'; Comprobar con Drush
Los overrides de settings.php no se ven en el formulario: este muestra el valor guardado. Por eso, pregunte a Drush qué rige realmente y envíe después el correo de prueba que el módulo ofrece al final de su página de ajustes. Si falla, la causa real está en el registro, no en la pantalla.
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 Qué correos envía Drupal
Una vez configurado el relay, todos estos pasan por 2mail: no tiene que configurarlos uno a uno.
Errores frecuentes con Drupal
El módulo tiene que ser realmente el mailer
Drupal puede tener varios sistemas de correo a la vez. Si el módulo SMTP está instalado pero no activado como transporte de correo, todo seguirá saliendo por la función mail de PHP y no cambiará nada. Compruebe eso primero cuando el correo de prueba sí llegue y el real no.
Remitente en su propio dominio
La dirección de correo del sitio está en los ajustes básicos y se usa como remitente. Póngala en una dirección de su propio dominio, el mismo dominio con SPF, DKIM y DMARC configurados. Una dirección gratuita falla en DMARC, por muy correctos que sean los datos SMTP.
Exportación de configuración y contraseñas
Si trabaja con gestión de configuración, los ajustes SMTP viajan en la exportación. Si una importación los sobrescribe con los valores de un entorno de pruebas, su web en producción envía de golpe con datos equivocados. Deje la contraseña fuera de la exportación y configúrela por separado en cada entorno.
Mensajes de error habituales con Drupal
Los mensajes que recibe cuando el host, el puerto, el cifrado o el acceso no son correctos: citados literalmente, para que los reconozca en su registro, con la causa y la solución al lado.
| Mensaje | Causa | Solución |
|---|---|---|
Unable to send email. Contact the site administrator if the problem persists. | Es el mensaje genérico del propio Drupal, que solo dice que el envío ha fallado. El error SMTP real está en el registro, bajo el tipo smtp. | Abra los mensajes de registro recientes en la administración o use drush watchdog:show --type=smtp, y busque ahí uno de los mensajes de abajo. |
SMTP Error: Could not connect to SMTP host. | El servidor no llega al relay, o el protocolo y el puerto no encajan: SSL elegido en el puerto 587, una errata en el host, o un proveedor de alojamiento que bloquea el tráfico saliente por el puerto 587. | Ponga el protocolo en TLS y el puerto en 587. Si sigue fallando, pruebe desde el servidor con openssl s_client -starttls smtp -connect relay.2mail.eu:587 y pida a su proveedor de alojamiento que abra el puerto. |
SMTP Error: Could not authenticate. | El relay rechaza el acceso: un usuario o una contraseña incorrectos, o una variable de entorno que está vacía dentro del servidor web, de modo que el override pasa una contraseña vacía. | Compruebe que getenv('SMTP_PASSWORD') devuelve un valor dentro del servidor web, y use el acceso SMTP de su cuenta de 2mail, no la contraseña de un buzón. |
SMTP Error: The following recipients failed: … | El acceso es correcto, pero el relay rechaza el mensaje al indicar el destinatario; en la práctica, porque la dirección de remitente pertenece a un dominio que no está vinculado a su cuenta de 2mail. A menudo la dirección de correo del sitio sigue siendo una dirección del proveedor de alojamiento o una dirección gratuita. | Ponga tanto la dirección de remitente del módulo como la dirección de correo del sitio, en los ajustes básicos, en una dirección de un dominio que haya añadido en 2mail. |
¿Otra plataforma?
SMTP es un protocolo estándar: cualquier sistema que hable SMTP —un CRM, un ERP, una aplicación propia o un servidor— puede enviar a través de 2mail con esos mismos cinco campos.