Maillog / Mail Developer (obsoleto)
Un módulo de utilidad para desarrollo que registra todos los correos electrónicos enviados a través del sitio y opcionalmente suprime la entrega de correos para propósitos de depuración.
maillog
Instalar
composer require 'drupal/maillog:8.x-1.1'
Overview
El módulo Maillog proporciona una solución integral para capturar y archivar todos los correos electrónicos enviados a través de un sitio Drupal. Está diseñado principalmente para entornos de desarrollo y staging donde necesitas inspeccionar los correos salientes sin enviarlos realmente.
El módulo intercepta todas las operaciones de correo a través del sistema de correo de Drupal y puede almacenar detalles completos del correo en la base de datos, incluyendo encabezados, asunto, cuerpo, destinatarios e información del remitente. Cuenta con una interfaz basada en Views para navegar por los correos registrados con capacidades de visualización detallada para cada mensaje.
Maillog es particularmente útil durante el desarrollo cuando deseas prevenir la entrega accidental de correos a usuarios reales mientras aún puedes verificar que los correos están siendo generados correctamente por el sistema.
Features
- Registra todos los correos salientes en una tabla de base de datos con detalles completos incluyendo encabezados, asunto, cuerpo, direcciones de origen/destino y marcas de tiempo
- Opcionalmente suprime la entrega de correos para evitar que se envíen (ideal para entornos de desarrollo/staging)
- Proporciona una página de resumen basada en Views en /admin/reports/maillog para navegar todos los correos registrados
- Vista detallada de correos individuales mostrando todos los encabezados y el cuerpo completo del mensaje
- El modo verbose muestra el contenido del correo en la página cuando se envían mensajes (para usuarios con permiso)
- Opción para recortar el cuerpo del correo a 512 caracteres para prevenir el crecimiento excesivo de la base de datos
- Opción para eliminar contenido codificado en base64 de los cuerpos de correo antes de registrarlos
- Limpieza automática vía cron con retención configurable por número de registros o período de tiempo
- Integración con Drush mediante el comando maillog:clear para purgar la tabla de registros
- Integración con el módulo MailSystem para configuración avanzada de enrutamiento de correo
- Opciones de notificación para informar a los visitantes cuando los correos son registrados o la entrega está deshabilitada
Use Cases
Pruebas de Correo en Desarrollo Local
Configura Maillog en tu entorno de desarrollo local para capturar todos los correos sin enviarlos. Establece 'send' en FALSE y 'log' en TRUE para prevenir que los correos lleguen a usuarios reales mientras aún puedes verificar el contenido y formato del correo.
Verificación de Correo en Entorno Staging
En servidores de staging, habilita Maillog para registrar todos los correos y opcionalmente deshabilitar la entrega. Esto permite a los equipos de QA verificar que los correos correctos están siendo activados por las acciones de los usuarios sin enviar correos de prueba a direcciones reales.
Depuración de Correo con Salida Verbose
Habilita el modo verbose para ver el contenido del correo directamente en la página cuando se envían. Esto es útil para depurar plantillas de correo y asegurar que el contenido dinámico está siendo insertado correctamente.
Auditoría de Correo en Producción
En entornos de producción donde se requiere auditoría de correo, habilita el registro mientras mantienes la entrega habilitada. Usa la función de limpieza por cron para purgar automáticamente registros antiguos después de un período de retención establecido para gestionar el tamaño de la base de datos.
Gestión del Tamaño de Base de Datos
Para sitios que envían muchos correos con cuerpos grandes (como boletines con imágenes), habilita el recorte del cuerpo y la eliminación de base64 para reducir significativamente los requisitos de almacenamiento de la base de datos mientras aún capturas los metadatos esenciales del correo.
Tips
- Usa sobrescrituras en settings.php para asegurar que la configuración de Maillog sea específica del entorno y no pueda ser cambiada accidentalmente en la interfaz de usuario
- Combínalo con el módulo MailSystem para un control más granular sobre qué tipos de correo se registran vs. se envían normalmente
- El comando Drush maillog:clear es útil para purgar registros rápidamente sin pasar por la interfaz de usuario
- Cuando depures problemas de correo, habilita temporalmente el modo verbose para ver el contenido exacto que se está generando
- Para entornos de staging, habilita la opción 'nosend_notify' para que los usuarios no administradores sepan que sus acciones no enviaron correos reales
Technical Details
Admin Pages 4
/admin/config/development/maillog
Página principal de configuración del módulo Maillog donde puedes controlar el registro de correos, la entrega y los ajustes de limpieza
/admin/reports/maillog
Página de informe basada en Views que muestra todos los correos registrados en formato de tabla con enlaces para ver detalles o eliminar entradas
/admin/reports/maillog/details/{maillog_id}
Vista detallada de un correo registrado individual mostrando todos los encabezados y el cuerpo completo del mensaje
/admin/reports/maillog/delete/all
Formulario de confirmación para limpiar todas las entradas de maillog de la base de datos
Permisos 3
Hooks 2
hook_cron
Implementa cron para limpiar automáticamente entradas antiguas de maillog según la configuración de retención (número o límite de tiempo).
hook_help
Proporciona texto de ayuda para el módulo en la página de ayuda.
Drush Commands 1
drush maillog:clear
Limpia todas las entradas de maillog de la base de datos. Trunca la tabla maillog sin confirmación.
Troubleshooting 4
El sistema de correo del sitio puede no estar configurado para usar Maillog. Agrega $config['system.mail']['interface']['default'] = 'maillog'; a settings.php, o usa el módulo MailSystem para configurar el manejo de correo.
Verifica que el ajuste 'send' esté establecido en FALSE en la configuración de Maillog. Puedes codificar esto directamente en settings.php: $config['maillog.settings']['send'] = FALSE;
Asegúrate de que el ajuste 'verbose' esté habilitado y que el usuario que ve la página tenga el permiso 'view maillog'. Los usuarios anónimos pueden ver la salida verbose si tienen este permiso.
Habilita la función de limpieza por cron y configura ajustes de retención apropiados. También considera habilitar el recorte del cuerpo y la eliminación de base64 para reducir el almacenamiento por correo.
Security Notes 4
- Los tres permisos de Maillog están marcados como 'acceso restringido' porque los registros de correo pueden contener información sensible
- Ten cuidado al habilitar la salida verbose en producción ya que podría exponer contenidos de correo a usuarios con el permiso de visualización
- Los registros de correo pueden contener información personal sensible - asegúrate de que los respaldos de base de datos y el acceso estén debidamente protegidos
- Considera las implicaciones de retención de datos al registrar todos los correos y configura programas de limpieza apropiados