Soporte de Autenticación SMTP
Permite que Drupal envíe correos electrónicos a través de un servidor SMTP externo en lugar de usar la función predeterminada mail() de PHP.
smtp
Install
composer require 'drupal/smtp:8.x-1.4'
composer require 'drupal/smtp:8.x-1.2'
Overview
El módulo SMTP Authentication Support permite que Drupal envíe correos electrónicos directamente a un servidor SMTP de tu elección, en lugar de usar la función predeterminada mail() de PHP. Esto es esencial para sitios que necesitan autenticación SMTP para el correo saliente, o aquellos alojados en entornos donde mail() de PHP no es confiable o no está disponible.
El módulo se integra con la biblioteca PHPMailer para proporcionar capacidades robustas de entrega de correo electrónico, soportando cifrado SSL/TLS, autenticación, correos HTML, archivos adjuntos y servidores SMTP de respaldo. Puede configurarse a través de una interfaz administrativa o mediante settings.php para implementaciones específicas del entorno.
Las capacidades principales incluyen pruebas de conexión, redirección de correos para entornos de desarrollo, niveles de registro configurables, keep-alive SMTP para operaciones por lotes y negociación TLS automática. El módulo también proporciona soporte de migración desde Drupal 7 e integración con el módulo Mail System para escenarios avanzados de enrutamiento de correo.
Features
- Enviar todos los correos del sitio a través de un servidor SMTP externo con autenticación opcional
- Soporte para protocolos de cifrado SSL y TLS con negociación TLS automática
- Configuración de servidor SMTP de respaldo para escenarios de conmutación por error
- Soporte de correo HTML con conversión automática a texto plano
- Manejo de archivos adjuntos para correos enviados vía SMTP
- Función de redirección de correo para redirigir todo el correo saliente a una dirección de prueba
- Prueba de conexión integrada para verificar la conectividad del servidor SMTP
- Niveles de registro configurables (Emergency hasta Debug) para solución de problemas
- Opción de keep-alive SMTP para mantener conexiones persistentes en operaciones de correo por lotes
- Configuración específica del entorno mediante sobrescrituras en settings.php
- Modo de depuración con registro detallado de respuestas del servidor SMTP
- Integración con el módulo Mail System para enrutamiento avanzado de correo
- Ruta de migración desde configuraciones del módulo SMTP de Drupal 7
- Configuración de tiempo de espera configurable para operaciones SMTP
- Configuración personalizada de hostname y cadena HELO para el handshake SMTP
Use Cases
Envío de correos a través de Gmail
Configura SMTP para usar los servidores de Gmail para el correo saliente. Usa smtp.gmail.com como servidor, puerto 587 con protocolo TLS y tus credenciales de Gmail. Ten en cuenta que Gmail requiere OAuth2 para cuentas más nuevas, lo cual no está soportado actualmente por este módulo. Para cuentas que lo soporten, puede que necesites habilitar 'Acceso de apps menos seguras' o usar una Contraseña de Aplicación.
Integración con Office 365 / Exchange Online
Envía correos a través de los servidores SMTP de Microsoft Office 365. Usa smtp.office365.com como servidor, puerto 587 con TLS, y tu correo y contraseña de Office 365. Ten en cuenta que el campo Nombre del Remitente puede ser ignorado por Office 365.
Pruebas de correo en entorno de desarrollo
Usa la función de dirección de redirección para redirigir todos los correos salientes a la dirección de un desarrollador durante las pruebas. Esto evita correos accidentales a usuarios reales mientras permite probar la funcionalidad de correo.
Envío de correo de alto volumen
Habilita la función de keep-alive SMTP al enviar correos por lotes (boletines, notificaciones) para mantener una conexión persistente y mejorar el rendimiento evitando la sobrecarga de conexiones repetidas.
Gestión segura de credenciales
Almacena las credenciales SMTP en settings.php usando variables de entorno en lugar de la base de datos. Esto mantiene las contraseñas sensibles fuera de las exportaciones de configuración y permite diferentes credenciales por entorno.
Alojamiento compartido de GoDaddy
Para entornos de alojamiento compartido de GoDaddy con restricciones de firewall, usa localhost como servidor SMTP con puerto 25, sin cifrado y sin autenticación para utilizar el relay de correo local de GoDaddy.
Pruebas de conexión y diagnósticos
Usa la pestaña de Prueba para verificar la conectividad SMTP antes de implementar. Habilita el modo de depuración para ver respuestas detalladas del servidor SMTP para solucionar problemas de conexión.
Tips
- Almacena las credenciales SMTP en settings.php usando variables de entorno para mejor seguridad: $config['smtp.settings']['smtp_password'] = getenv('SMTP_PASSWORD');
- Usa la función de dirección de redirección en desarrollo para evitar enviar correos a usuarios reales
- Habilita keep-alive al enviar correos por lotes para mejorar el rendimiento
- Establece el nivel de registro en Error para producción, Debug solo cuando soluciones problemas
- El servidor de respaldo solo se intenta si el nombre de host del servidor principal no puede resolverse, no si la autenticación falla
- Auto TLS debe habilitarse para proveedores de correo modernos pero deshabilitarse para servidores de relay simples sin cifrado
- Prueba tu configuración SMTP usando la pestaña de Prueba antes de ir a producción
- Verifica el informe de estado para el estado de conexión SMTP e información de versión de PHPMailer
Technical Details
Admin Pages 2
/admin/config/system/smtp
Página principal de configuración del módulo SMTP. Configura los ajustes del servidor SMTP, credenciales de autenticación, opciones de correo electrónico y funciones de depuración. Todos los ajustes pueden sobrescribirse mediante settings.php para configuraciones específicas del entorno.
/admin/config/system/smtp/test
Envía un correo de prueba para verificar que tu configuración SMTP funciona correctamente. Útil para validar los ajustes antes de implementar en producción.
Permissions 1
Hooks 6
hook_mail
Implementa hook_mail() para definir la clave de correo smtp-test usada para enviar correos de prueba desde la página de configuración.
hook_modules_installed
Deshabilita el sistema de correo SMTP cuando se instala el módulo mailsystem, ya que mailsystem toma el control del enrutamiento de correo.
hook_migration_plugins_alter
Agrega el mapeo de SmtpMailSystem a SMTPMailSystem en la migración d7_system_mail para el soporte apropiado de migración de Drupal 7.
hook_help
Proporciona texto de ayuda para el módulo SMTP incluyendo enlaces a configuración y temas de ayuda.
hook_requirements
Verifica los requisitos de SMTP durante el tiempo de ejecución incluyendo la presencia de la biblioteca PHPMailer, compatibilidad de versión y estado de conexión SMTP.
hook_uninstall
Limpia la configuración SMTP y restaura el sistema de correo anterior cuando se desinstala el módulo.
Troubleshooting 8
Ejecuta 'composer require phpmailer/phpmailer:6.6.3' para instalar la versión correcta. El informe de estado mostrará la versión y ubicación de PHPMailer.
La extensión openssl de PHP no está instalada o habilitada. Instala openssl y reinicia tu servidor web.
Gmail requiere OAuth2 para la mayoría de las cuentas. Intenta usar una Contraseña de Aplicación si 2FA está habilitado, o considera usar un servicio de correo transaccional en su lugar.
Habilita el modo de depuración en los ajustes SMTP y establece el nivel de registro en Debug. Envía un correo de prueba y verifica los mensajes de registro recientes para ver las respuestas detalladas del servidor SMTP.
El alojamiento compartido de GoDaddy frecuentemente bloquea las conexiones SMTP externas. Usa el servidor localhost con puerto 25, sin cifrado y sin autenticación para usar el relay de correo local de GoDaddy.
La depuración SMTP interrumpe las respuestas HTTP. Solo habilita la depuración para correos de prueba manuales, luego desactívala inmediatamente.
Los ajustes están siendo sobrescritos en settings.php. El formulario muestra el prefijo '(Sobrescrito)' en las descripciones de dichos campos.
Verifica si el módulo Mail System está instalado - él toma el control del enrutamiento de correo. Configura SMTP como el remitente en los ajustes de Mail System en su lugar.
Security Notes 6
- Las contraseñas SMTP se almacenan como texto plano en la configuración de Drupal - usa sobrescrituras en settings.php con variables de entorno para producción
- El permiso 'administer smtp module' debe restringirse solo a administradores de confianza
- Considera usar servicios de correo transaccional dedicados (SendGrid, Mailgun, Amazon SES) para sitios en producción
- Habilita el cifrado TLS siempre que sea posible para proteger las credenciales en tránsito
- No habilites la depuración en producción ya que expone comunicación detallada del servidor
- Restringe los permisos de archivo en settings.php (444 o 400) cuando almacenes credenciales allí