Jak skonfigurować fałszywy serwer SMTP, aby przechwytywał wszystkie wiadomości e-mail?

50

Szukam usługi smtp, która zasadniczo jest zgodna z RFC, z wyjątkiem wysyłania poczty, po prostu loguje się do pliku

[date] sent mail to <address>

Lub cokolwiek. Mogę to zepsuć razem z absolutnym minimum funkcjonalności, której potrzebuję w Pythonie za około pół godziny, ale sądzę, że jeśli istnieje istniejący projekt, który działa lepiej, wolałbym go użyć.

Powodem tego jest debugowanie aplikacji, która wysyła 7 * tyle wiadomości, ile powinna.

EDYCJA: I już zapytałem: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email

richo
źródło
Tak, na to pytanie odpowiedziano przy stosie przepływu, ale nie widziałem tam odpowiedzi opartej na pythonie.
BitwiseMan
Odpowiedzi
udzieliło

Odpowiedzi:

58

Jeśli masz wokół siebie pytona, zapisz rozmowę SMTP na standardowe wyjście.

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

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

John Mee
źródło
Cofam to, obsługuje emaile HTML.
HTTP500
2
wciąż najlepszy sposób na debugowanie!
MarZab,
Brak obsługi starttls :(
Att Righ
1
@AttRigh smtplib ma zaimplementowany protokół TLS, ale korzystanie z niego nie będzie takie proste. Opublikuj pytanie; może ktoś ma już skrypt?
John Mee,
11

Powinieneś rzucić okiem na smtp-sinkczęść Postfix. Nie musisz uruchamiać Postfix, aby działał. Wystarczy zainstalować, aby mieć plik wykonywalny. Wszystko, czego potrzebujesz, można skonfigurować za pomocą parametrów wiersza poleceń:

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

mailq
źródło
Dzięki mailq. To mniej więcej dokładnie to, o co mi chodziło!
richo
8

Istnieje również rubinowy klejnot o nazwie mailcatcher .

Możesz czytać wiadomości e-mail bezpośrednio w przeglądarce za pośrednictwem zintegrowanego interfejsu internetowego, poniżej znajduje się zrzut ekranu z ich strony głównej.

Interfejs programu Mailcatcher

David Costa
źródło
1
Obecnie używamy programu pocztowego, powoduje zbyt duże awarie.
Jacob Evans,
6

Korzystamy z usługi internetowej http://mailtrap.io w środowisku programistycznym i programowym. Jest niezależny od platformy i nie wymaga uruchamiania własnego SMTP.

Oferuje:

  • Wszystkie e-maile w jednym miejscu
  • Wspólny dostęp dla zespołu programistów do skrzynki odbiorczej
  • Narzędzia programistyczne do analizy wiadomości e-mail
  • Elastyczna konfiguracja
Bogdan Gusiew
źródło
To jest świetne i znacznie bardziej niezawodne niż to, co robiłem! Dzięki.
richo
Podoba mi się, że oferują hojny darmowy plan (na razie).
David
3

smtp4dev działa dla mnie dobrze. (Tylko Windows)

Ferruccio
źródło
Właśnie zainstalowałem i użyłem tego niesamowitego małego narzędzia. Idealny dla moich potrzeb (brak java i niezły interfejs użytkownika)
Nick.McDermaid
2

http://quintanasoft.com/dumbster/

Wygląda na to, że prawdopodobnie wykona zadanie, dla każdego, kto się na to natknie.

richo
źródło
Szkoda, że ​​wymaga javavm. Dodatkowo, ktoś rozwidlił i pracował nad tym ostatnio ... github.com/rjo1970/dumbster
John Mee
Pozdrawiam John. Oparte na Javie wystarczyło, by mnie w końcu zniechęcić, skończyło się na tym, że sam coś napisałem.
richo
2

Oświadczenie: To późna odpowiedź, ale naprawdę wierzę, że pomoże przyszłym widzom. Pamiętaj też, że pracowałem nad tym produktem.

Zbudowaliśmy Mailozaura , aby rozwiązać dokładnie ten problem. Od tego czasu opracowaliśmy go, aby dodawać testowe adresy e-mail oraz SMTP.

isNaN1247
źródło
1

Po prostu rozwidlam prawie każdą usługę smtp, a następnie wysyłam wynik do małego wiadra!

Tony Roth
źródło
Mówię jednak o masowych wiadomościach e-mail oraz o danych na żywo klientów. Muszę być pewny, że nie zamierzam zalać intertronów pocztą.
richo
Skończyło się na rozszerzeniu klasy smtpd.SMTPServer Pythona, opublikuję projekt publicznie za około tydzień, kiedy będę z niego zadowolony (dołączam go do pakietu testowego httpd, który napisałem jakiś czas temu). Wstępnie nazwałem pakiet sdb.
richo
@Richo: istnieje wiele sposobów, aby zatrzymać serwer SMTP przed wysyłaniem wiadomości e-mail - większość z nich pozwala wyłączyć połączenia wychodzące lub przekierować wszystkie wiadomości lub zablokować połączenia wychodzące do portu 25 .... nikt nie zawracałby sobie głowy pisaniem fałszywego serwera poczty trywialne jest skonfigurowanie prawdziwego, aby zachowywał się w ten sposób.
symcbean
@symcbean: wszystkie są poprawnymi punktami. Osobiście łatwiej jest mi zatrzymać zwykłą usługę pocztową, uruchomić usługę debugowania, przeprowadzić debugowanie, a następnie ponownie uruchomić środowisko na żywo. Kludges, takie jak zrzucanie całego ruchu z portu 25, uniemożliwia cokolwiek innego wysyłanie poczty. Dzięki za pomoc,
richo
nic z tego nie ma sensu, wszystkie bramy smtp zapewniają dokładnie taką funkcjonalność bez utraty jakichkolwiek wychodzących wiadomości e-mail na żywo!
Tony Roth,