Por qué sustituir MailHog por Mailpit
MailHog es el servidor SMTP de pruebas que se encontraba en todas partes hace cinco años. Pero ya no se mantiene desde 2020 y arrastra una vulnerabilidad XSS almacenada sin corregir (Exploit-DB 50971): cualquier correo que contenga JavaScript puede comprometer la interfaz. Mailpit lo sustituye con un binario Go moderno (menos de 50 MB de RAM), una interfaz depurada, la búsqueda de texto completo, una API REST documentada, un informe de compatibilidad HTML y la puntuación antispam integrada. Viene instalado por defecto en Laravel Sail desde la versión 11 y en DDEV desde la versión 1.22, lo que lo convierte en el nuevo estándar del sector.
Lo que Mailpit aporta en la práctica
- Captura SMTP en el puerto 1025: ningún correo sale de su VPS, basta con configurar su aplicación en localhost:1025.
- Interfaz web en el puerto 8025 con búsqueda de texto completo en el asunto, el remitente y el cuerpo.
- API REST GET /api/v1/messages: consulte los correos desde sus pruebas de integración sin ningún relay externo.
- Puntuación antispam con las reglas de SpamAssassin: detecte los problemas de entregabilidad antes de la producción.
- Informe de compatibilidad HTML: identifique las propiedades CSS que Gmail, Outlook o Apple Mail eliminarán.
- Vista previa móvil y vista del código fuente, con renderizado HTML completo y cabeceras detalladas.
- Interfaz POP3 para recuperar los correos capturados con cualquier cliente de correo.
- SQLite en un volumen persistente: los mensajes sobreviven a los reinicios del contenedor.
Arquitectura de despliegue en un VPS
Mailpit se ejecuta en un único contenedor Docker. El servidor SMTP es accesible en localhost:1025 (solo loopback), lo que significa que únicamente las aplicaciones que se ejecutan en el mismo VPS pueden enviarle correos: exactamente lo que se busca. La interfaz web se expone en localhost:8025 y luego se proxifica con nginx hacia el dominio que usted elija. Este esquema es idéntico al de Node-RED, Plausible o Umami: un contenedor, un puerto loopback, un dominio nginx y un volumen persistente.
Desplegar Mailpit en 5 pasos
Desplegar desde el marketplace de ServOrbit
Abra su panel de control, vaya a Marketplace → Desarrollo → Mailpit y haga clic en Desplegar. El contenedor arranca en menos de diez segundos.
Configurar el SMTP de su aplicación
En sus variables de entorno, defina MAIL_HOST=127.0.0.1 y MAIL_PORT=1025. Ninguna autenticación, ningún TLS requerido por defecto. Laravel, Symfony, Django, Node.js: todos admiten esta configuración de forma nativa.
Acceder a la interfaz web
Vaya al dominio asociado a su instancia de Mailpit. Verá la bandeja de entrada en tiempo real: haga clic en cualquier correo para inspeccionar su renderizado HTML, sus cabeceras y su puntuación antispam.
Integrar la API REST en sus pruebas
Llame a GET https://mailpit.su-dominio.com/api/v1/messages desde su suite de pruebas. Filtre por destinatario, verifique el asunto, cuente los archivos adjuntos: todo ello sin mock ni stub.
Verificar la compatibilidad HTML
Abra un correo HTML y haga clic en la pestaña Compatibilidad. Mailpit enumera las propiedades CSS no admitidas cliente por cliente, con enlaces a las correcciones recomendadas.
Mailpit en CI/CD: probar los correos en el pipeline
Despliegue Mailpit como servicio en el docker-compose.yml de pruebas (image: axllent/mailpit:latest, ports: 127.0.0.1:8025:8025 y 127.0.0.1:1025:1025). Sus pruebas de integración envían correos a localhost:1025 y luego verifican mediante la API REST que se ha recibido el mensaje correcto. Este patrón lo utilizan los equipos de Laravel, Symfony y Django para validar las notificaciones y los correos transaccionales sin relay externo.
Mailpit vs MailHog vs Mailtrap
Desplace la tabla
| Criterio | Mailpit | MailHog | Mailtrap |
|---|---|---|---|
| Mantenedor | Axle Springer (activo) | Abandonado desde 2020 | Mailtrap Inc. (SaaS) |
| Seguridad | Ninguna vulnerabilidad conocida | XSS almacenada sin corregir | SaaS — datos alojados en otro sitio |
| API REST | Completa y documentada | Básica, sin documentar | Sí (plan de pago) |
| Puntuación antispam | Integrada (SpamAssassin) | Ausente | Sí (plan de pago) |
| Compatibilidad HTML | Informe integrado | Ausente | Sí (plan de pago) |
| Precio | Gratis, MIT | Gratis, MIT | Freemium, luego 24 $/mes |
| Autoalojamiento | Un contenedor Docker | Un binario Go | Solo SaaS |
Casos de uso avanzados
Más allá de la simple prueba de envío, Mailpit ofrece varias funcionalidades poco conocidas. El modo multitenant (--mp-tenant) permite separar los correos por aplicación dentro de un mismo servidor. La autenticación SMTP (MP_SMTP_AUTH_FILE) permite restringir quién puede conectarse. La variable MP_UI_AUTH_FILE añade una autenticación básica en la interfaz web si la expone públicamente. Y la retención configurable (MP_MAX_MESSAGES=0 para ilimitada, o un número concreto) le permite ajustar la política de conservación según sus necesidades de prueba.