Comment configurer un faux serveur SMTP pour intercepter tous les mails?

50

Je recherche un service smtp qui obéit essentiellement à la RFC, sauf que, plutôt que d'envoyer un courrier, il enregistre simplement dans un fichier

[date] sent mail to <address>

Ou peu importe. Je peux compter sur cela avec le strict minimum de fonctionnalités dont j'ai besoin en python en une demi-heure environ, mais si un projet existant fonctionne mieux, je préfère l'utiliser.

La raison pour laquelle nous en avons besoin est le débogage d’une application qui envoie 7 * la quantité de courrier qu’elle est supposée envoyer.

EDIT: Et déjà demandé: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email

richo
la source
Oui, on a répondu à cette question sur stackoverflow, mais je n'ai pas vu la réponse basée sur python là-bas.
BitwiseMan
Ceci est également répondu à stackoverflow: stackoverflow.com/questions/48653699/…
realbart

Réponses:

58

Si vous avez du python, cela écrira la conversation SMTP sur stdout.

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

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

John Mee
la source
Je le récupère, il prend en charge les emails HTML.
HTTP500
2
toujours le meilleur moyen de déboguer!
MarZab
Pas de support pour les starttls :(
Att Righ
1
@AttRigh le smtplib a TLS implémenté mais utiliser cela ne va pas être aussi simple que cela. Postez la question; peut-être que quelqu'un a déjà un script?
John Mee
11

Vous devriez regarder smtp-sinkce qui fait partie de Postfix. Vous n'avez pas besoin de lancer Postfix pour le faire fonctionner. Il suffit de l'installer pour avoir l'exécutable. Tout ce dont vous avez besoin peut être configuré via des paramètres de ligne de commande:

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

mailq
la source
Merci mailq. C'est plus ou moins exactement ce que je cherchais!
richo
8

Il existe également une gemme rubis appelée mailcatcher .

Vous pouvez lire les courriels directement dans votre navigateur via l'interface Web intégrée. Vous trouverez ci-dessous une capture d'écran de leur page d'accueil.

Interface Mailcatcher

David Costa
la source
1
Nous utilisons actuellement mailcatcher, nous plantons trop.
Jacob Evans
6

Nous utilisons le service Web http://mailtrap.io dans les environnements de développement et de transfert. Il est indépendant de la plate-forme et ne nécessite pas que vous utilisiez votre propre SMTP.

CA offre:

  • Tous les emails en un seul endroit
  • Accès partagé pour l'équipe de développement à la boîte de réception
  • Outils de développement pour analyser les emails
  • Configuration flexible
Bogdan Gusiev
la source
C'est génial et beaucoup plus robuste que ce que je faisais! Merci.
richo
J'aime le fait qu'ils offrent un plan gratuit généreux (pour l'instant).
David
3

smtp4dev a bien fonctionné pour moi. (Windows seulement)

Ferruccio
la source
Je viens d'installer et d'utiliser ce formidable petit outil. Parfait pour mes besoins (pas de java et une belle interface utilisateur)
Nick.McDermaid
2

http://quintanasoft.com/dumbster/

Cela ressemble à un cas qui fera probablement l'affaire, pour quiconque trébuche.

richo
la source
Dommage que cela nécessite un javavm. De plus, quelqu'un a déjà travaillé dessus plus récemment ... github.com/rjo1970/dumbster
John Mee
Vive John. Java était suffisant pour me rebuter à la fin, je me suis retrouvé à écrire quelque chose moi-même.
richo
2

Avertissement: Ceci est une réponse tardive, mais je crois sincèrement que cela aidera les futurs téléspectateurs. Notez également que j'ai travaillé sur ce produit.

Nous avons construit Mailosaur afin de résoudre ce problème. Depuis, nous avons créé des adresses électroniques de test et SMTP.

isNaN1247
la source
1

Je viens de déboucher sur n'importe quel service smtp, puis d'envoyer le résultat dans un seau!

tony roth
la source
Je parle cependant d’e-mails en masse et de données client en direct. Je dois être certain que je ne vais pas submerger les intertrons de courrier.
richo
J'ai fini par étendre la classe smtpd.SMTPServer de python. Je publierai le projet publiquement dans environ une semaine si j'en suis satisfait (je l'associe à une suite de tests httpd que j'ai écrite il y a quelque temps). J'ai provisoirement appelé la suite sdb.
richo
@Richo: il existe de nombreux moyens d'empêcher un serveur SMTP d'envoyer des e-mails - la plupart vous permettent de désactiver les connexions sortantes ou de rediriger tous les messages, ou de bloquer les connexions sortantes sur le port 25 ... personne ne s'ennuierait à écrire un serveur de messagerie factice lorsque son trivial pour configurer un réel pour se comporter de cette façon.
symcbean
@symcbean: ce sont tous des points valides. Personnellement, je trouve plus facile d'arrêter mon service de messagerie habituel, de démarrer mon service de débogage, de le déboguer, puis de relancer l'environnement en direct. Kludges, comme le fait de vider tout le trafic du port 25, empêche ensuite toute autre chose d’envoyer du courrier. Merci pour l'aide cependant,
richo
rien de tout cela n'a de sens, toutes les passerelles smtp vous donneront cette fonctionnalité exacte sans perdre aucun des emails sortants en direct!
tony roth