El despliegue se veía limpio. Código revisado, pruebas pasando, entorno de staging verificado. Publicaron en producción y observaron los paneles de monitoreo. Todo en verde.
Excepto que los correos no se enviaban. Las credenciales SMTP que funcionaban en staging no funcionaban en producción—entorno distinto, secretos distintos, configuración distinta. Los clientes no recibían confirmaciones de pedido. Los restablecimientos de contraseña fallaban en silencio. Tardaron dos horas en darse cuenta y otra hora en arreglarlo.
Las herramientas de pruebas de SMTP evitan esto. Te permiten verificar que tu configuración de correo funcione antes de que importe, detectar problemas de credenciales antes del despliegue y depurar problemas de envío sin inundar bandejas de entrada reales.
Servidores SMTP locales
Mailhog es el servidor SMTP local de referencia para desarrollo. Ejecútalo localmente, apunta la configuración SMTP de tu aplicación a él, y cada correo se captura en una interfaz web en lugar de entregarse. Puedes inspeccionar el mensaje completo—encabezados, HTML, texto sin formato, adjuntos—sin que ningún correo salga realmente de tu máquina.
La instalación es trivial: descarga un único binario, ejecútalo y listo. Sin dependencias, sin configuración. La interfaz web muestra todos los correos capturados con búsqueda y filtrado. Para entornos de desarrollo, es prácticamente obligatorio.
MailCatcher hace lo mismo con una implementación en Ruby. La interfaz web es limpia y la funcionalidad es equivalente a la de Mailhog. Algunos desarrolladores lo prefieren; otros prefieren la simplicidad basada en Go de Mailhog. Ambos funcionan bien.
Papercut es la opción nativa para Windows. Se ejecuta como una aplicación de escritorio, capturando el tráfico SMTP y mostrando los correos en una interfaz local. Si tu entorno de desarrollo es Windows, se integra de forma más natural que las alternativas multiplataforma.
smtp4dev es otra opción centrada en Windows que existe desde hace años. Es simple y fiable, aunque la interfaz se siente anticuada frente a herramientas más nuevas. Para captura SMTP básica en Windows, funciona.
Pruebas en la nube
Mailtrap proporciona un servidor SMTP en la nube específicamente para pruebas. En lugar de ejecutar un servidor local, apuntas tu aplicación al endpoint SMTP de Mailtrap. Los correos se capturan en su interfaz web, donde puedes inspeccionar el contenido, verificar el renderizado HTML y compartir resultados con tu equipo.
El enfoque en la nube tiene ventajas: sin configuración local, accesible desde cualquier entorno, colaboración en equipo integrada. El plan gratuito cubre volúmenes de prueba razonables; los planes de pago añaden funciones como acceso a la API y más bandejas de entrada.
Mailtrap ha expandido su alcance más allá de la captura SMTP para incluir vista previa de correo en distintos clientes y pruebas de entregabilidad. Si necesitas más que captura básica, la plataforma integrada es conveniente.
Ethereal Email de Nodemailer ofrece cuentas SMTP desechables gratis para pruebas. Genera credenciales, úsalas en tu aplicación y ve los correos capturados en su interfaz web. Es más simple que Mailtrap—no se requiere cuenta, solo generar y listo.
La naturaleza desechable es a la vez una característica y una limitación. Genial para pruebas rápidas; menos adecuado para desarrollo continuo donde quieres un historial persistente.
Diagnósticos SMTP
MXToolbox SMTP Diagnostics prueba la configuración de tu servidor de correo desde el exterior. Ingresa tu dominio o la dirección del servidor, e intenta conexiones en puertos estándar, revisa la configuración de TLS y verifica que tu servidor responda correctamente a los comandos SMTP.
Esto detecta problemas de configuración que las pruebas internas no ven. Tu servidor puede aceptar conexiones desde localhost pero rechazar conexiones externas por reglas de firewall o configuración de enlace. Las pruebas externas revelan estos problemas.
SMTPer es una herramienta sencilla para enviar correos de prueba a través de cualquier servidor SMTP. Ingresa credenciales y detalles del servidor, redacta un mensaje de prueba y envía. Es útil para verificar que las credenciales funcionen y que el servidor acepte conexiones, sin involucrar el código de tu aplicación.
Al depurar problemas de "SMTP no funciona", aislar si el problema es tu aplicación o el servidor SMTP es el primer paso. SMTPer prueba el servidor directamente.
CheckTLS prueba específicamente la configuración TLS de tu servidor. Intenta conexiones con varias versiones de TLS y conjuntos de cifrado, informando qué funciona y qué no. Si tienes problemas de conexión relacionados con TLS, esto señala el problema con precisión.
Herramientas de línea de comandos
Para desarrolladores que se sienten cómodos en la terminal, las herramientas de línea de comandos ofrecen una flexibilidad que las GUIs no pueden igualar.
swaks (la navaja suiza para SMTP) es la herramienta de línea de comandos definitiva para pruebas SMTP. Puede enviar correos de prueba, probar autenticación, verificar TLS y ejercitar prácticamente cualquier función de SMTP. La curva de aprendizaje es más pronunciada que la de las herramientas con GUI, pero su potencia no tiene rival.
Una prueba sencilla: swaks --to [email protected] --from [email protected] --server smtp.example.com --auth --auth-user username --auth-password password. Esto prueba autenticación y envío en un solo comando.
openssl s_client te permite probar conexiones TLS directamente. openssl s_client -connect smtp.example.com:465 establece una conexión y muestra los detalles del certificado. Para depurar problemas de TLS, ver el handshake en bruto es invaluable.
telnet, aunque antiguo, sigue funcionando para pruebas básicas de SMTP. telnet smtp.example.com 25 conecta con el servidor y puedes escribir manualmente comandos SMTP para ver cómo responde. Es tedioso pero educativo—aprendes exactamente cómo funciona SMTP.
Pruebas de integración
Para pruebas automatizadas, necesitas pruebas de SMTP que se integren con tu suite de pruebas.
GreenMail es un servidor de correo basado en Java, diseñado para pruebas. Se ejecuta embebido en tus pruebas, capturando los correos que tu aplicación envía. Tu código de pruebas puede luego verificar que los correos se enviaron con el contenido, destinatarios y encabezados correctos.
Para aplicaciones Java/JVM, GreenMail se integra de forma natural con JUnit y otros frameworks de pruebas. El enfoque embebido implica que no hay dependencias externas—las pruebas son autocontenidas y reproducibles.
MailSlurper es un servidor SMTP liviano con una API REST para recuperar correos capturados. Ejecútalo junto a tus pruebas, envíale correos y luego consulta la API para verificar lo que se capturó. Su diseño API-first facilita integrarlo con cualquier framework de pruebas.
Para aplicaciones Node.js, nodemailer incluye una función de cuenta de prueba que crea cuentas de Ethereal Email de forma programática. Tus pruebas pueden enviar correos y luego verificar la entrega a través de la API de Ethereal.
Flujo de depuración
Cuando SMTP no funciona, un enfoque sistemático ahorra tiempo.
Primero, verifica que el servidor sea accesible. ¿Puedes conectarte al puerto SMTP? Telnet u openssl s_client responden esto rápidamente. Si no, es un problema de red o firewall, no de configuración de SMTP.
Segundo, verifica la autenticación. Usa una herramienta como SMTPer o swaks para probar las credenciales directamente, fuera de tu aplicación. Si la autenticación falla aquí, las credenciales son incorrectas—revisa si hay errores tipográficos, contraseñas vencidas o requisitos de contraseñas específicas de la aplicación.
Tercero, verifica TLS. Muchos problemas de SMTP provienen de una mala configuración de TLS. CheckTLS u openssl s_client muestran lo que está pasando en la capa TLS. Problemas de certificados, desajustes de protocolos y cuestiones de cifrado aparecen aquí.
Cuarto, prueba desde tu aplicación. Si las pruebas directas funcionan pero tu aplicación falla, el problema está en la configuración SMTP de tu aplicación o en el uso de la librería. Revisa ajustes de conexión, timeouts y manejo de errores.
Por último, revisa el lado receptor. Si el envío tiene éxito pero los correos no llegan, el problema está más adelante en la cadena—filtros de spam, problemas en el servidor del destinatario o problemas de entregabilidad. El análisis de encabezados y las herramientas de entregabilidad ayudan aquí.
Frequently asked questions
¿Debería usar un servidor SMTP local o un servicio en la nube para pruebas?
Los servidores locales (Mailhog, MailCatcher) son más simples para el desarrollo individual—no requieren cuenta, funcionan sin conexión y son rápidos. Los servicios en la nube (Mailtrap) son mejores para entornos de equipo donde varios desarrolladores necesitan ver correos de prueba o cuando se prueba desde entornos que no pueden ejecutar servidores locales.
¿Cómo pruebo SMTP en pipelines de CI/CD?
Ejecuta un servidor SMTP contenedorizado (Mailhog tiene una imagen oficial de Docker) como parte de tu entorno de CI. Configura tu aplicación para apuntar a él durante las pruebas. Tras ejecutar las pruebas, consulta los correos capturados vía API para verificar el comportamiento de envío correcto.
¿Por qué mis credenciales SMTP funcionan en un entorno pero no en otro?
Causas comunes: secretos/variables de entorno diferentes, restricciones por IP en el servidor SMTP, requisitos de TLS distintos o limitación de tasa. Prueba las credenciales directamente con una herramienta como swaks para aislar si es un problema de credenciales o de configuración de la aplicación.
¿En qué puertos debería probar SMTP?
El puerto 587 (submission con STARTTLS) es el estándar moderno para el envío. El puerto 465 (TLS implícito) está regresando. El puerto 25 es para comunicación servidor a servidor y a menudo está bloqueado para usuarios finales. Prueba el puerto que especifique tu ESP y ten un plan de respaldo si está bloqueado.