¿Cómo configurar un servidor SMTP falso para capturar todos los correos?


50

Estoy buscando un servicio smtp que esencialmente obedece al RFC, excepto que en lugar de enviar correo, simplemente se registra en un archivo

[date] sent mail to <address>

O lo que sea. Puedo comparar esto con el mínimo de funcionalidad que necesito en Python en aproximadamente media hora, pero creo que si hay un proyecto existente que funcione mejor, prefiero usarlo.

La razón para necesitarlo es depurar una aplicación que sigue enviando 7 * la cantidad de correo que se supone que debe enviar.

EDITAR: Y ya preguntado: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email


Sí, esta pregunta fue respondida en stackoverflow, pero no vi la respuesta basada en Python allí.
BitwiseMan

Esto también se responde en stackoverflow: stackoverflow.com/questions/48653699/…
realbart

Respuestas:


58

Si tienes Python por ahí, esto escribirá la conversación SMTP en stdout.

sudo python -m smtpd -n -c DebuggingServer localhost:25

http://docs.python.org/library/smtpd.html#debuggingserver-objects


Lo retiro, admite correos electrónicos HTML.
HTTP500

2
sigue siendo la mejor manera de depurar!
MarZab

No hay soporte para starttls :(
Att Righ

1
@AttRigh, el smtplib tiene TLS implementado, pero usar eso no será tan simple como esto. Publica la pregunta; tal vez alguien ya tiene un guión?
John Mee

11

Deberías echar un vistazo a smtp-sinkcuál es parte de Postfix. No tiene que ejecutar Postfix para que funcione. Simplemente instálelo para tener el ejecutable. Todo lo que necesita se puede configurar a través de parámetros de línea de comando:

http://www.postfix.org/smtp-sink.1.html


Gracias mailq. ¡Esto es más o menos exactamente lo que buscaba!
richo

8

También hay una gema de rubí llamada mailcatcher .

Puede leer los correos electrónicos directamente en su navegador a través de la interfaz web integrada, hay una captura de pantalla de su página de inicio a continuación.

Interfaz de Mailcatcher


1
Actualmente utilizamos mailcatcher, se bloquea demasiado.
Jacob Evans

6

Utilizamos el servicio web http://mailtrap.io en entornos de desarrollo y puesta en escena. Es independiente de la plataforma y no requiere que ejecute su propio SMTP.

Ofrece:

  • Todos los correos electrónicos en un solo lugar.
  • Acceso compartido para el equipo de desarrollo a la bandeja de entrada
  • Herramientas para desarrolladores para analizar correos electrónicos
  • Configuración flexible

¡Esto es genial y mucho más robusto que lo que estaba haciendo! Gracias.
richo

Me gusta que ofrecen un generoso plan gratuito (por ahora).
David

3

smtp4dev me ha funcionado bien. (Solo Windows)


Acabo de instalar y usar esta pequeña herramienta increíble. Perfecto para mis necesidades (sin java y una interfaz de usuario agradable)
Nick.McDermaid


2

Descargo de responsabilidad: esta es una respuesta tardía, pero realmente creo que ayudará a los futuros espectadores. También tenga en cuenta que trabajé en este producto.

Construimos Mailosaur para resolver este problema exacto. Desde entonces lo hemos creado para agregar direcciones de correo electrónico de prueba, así como SMTP.



1

¡Acabo de bifurcar casi cualquier servicio smtp y luego envío el resultado a un cubo de bits!


Sin embargo, estoy hablando de correos electrónicos masivos y con datos de clientes en vivo involucrados. Tengo que estar seguro de que no voy a inundar las intertronas con correo.
richo

Terminé extendiendo la clase smtpd.SMTPServer de Python, lanzaré el proyecto públicamente en una semana más o menos cuando esté contento con él (lo estoy empaquetando con un conjunto de pruebas httpd que escribí hace un tiempo). He llamado provisionalmente a la suite sdb.
richo

@Richo: hay muchas maneras de evitar que un servidor SMTP envíe correos electrónicos; la mayoría le permite desactivar las conexiones salientes o redirigir todos los mensajes, o puede bloquear las conexiones salientes al puerto 25 ... nadie se molestaría en escribir un servidor de correo falso es trivial configurar uno real para comportarse de esta manera.
symcbean

@symcbean: esos son todos puntos válidos. Personalmente, me resulta más fácil detener mi servicio de correo habitual, iniciar mi servicio de depuración, realizar mi depuración y luego volver a activar el entorno en vivo. Kludges, como descargar todo el tráfico del puerto 25, evita que cualquier otra cosa envíe correo. Gracias por la ayuda, sin embargo,
richo

nada de esto tiene sentido, ¡todas las puertas de enlace smtp le brindarán esta funcionalidad exacta sin perder ninguno de los correos electrónicos salientes en vivo!
Tony Roth
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.