Bagaimana cara mengatur server SMTP palsu untuk menangkap semua surat?

50

Saya mencari layanan smtp yang pada dasarnya mematuhi RFC, kecuali daripada mengirim surat, cukup log ke file

[date] sent mail to <address>

Atau terserah. Saya bisa bash ini bersama dengan fungsionalitas minimal yang saya butuhkan dalam python dalam waktu sekitar setengah jam saya rasa tetapi jika ada proyek yang ada yang bekerja lebih baik saya lebih suka menggunakannya.

Alasan untuk membutuhkannya adalah debugging aplikasi yang terus mengirim 7 * jumlah surat yang seharusnya.

EDIT: Dan sudah bertanya: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email

richo
sumber
Ya, pertanyaan ini dijawab pada stackoverflow, tetapi saya tidak melihat jawaban berdasarkan python di sana.
BitwiseMan
Ini juga dijawab di stackoverflow: stackoverflow.com/questions/48653699/…
realbart

Jawaban:

58

Jika Anda memiliki python yang terbaring di sekitar, ini akan menulis percakapan SMTP ke stdout.

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

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

John Mee
sumber
Saya ambil kembali, itu mendukung email HTML.
HTTP500
2
masih cara terbaik untuk debug!
MarZab
Tidak ada dukungan untuk starttls :(
Att Righ
1
@AttRigh smtplib telah menerapkan TLS tetapi menggunakan itu tidak akan sesederhana ini. Posting pertanyaan; mungkin seseorang sudah memiliki skrip?
John Mee
11

Anda harus melihat smtp-sinkyang merupakan bagian dari Postfix. Anda tidak harus menjalankan Postfix untuk membuatnya berfungsi. Cukup instal untuk memiliki executable. Semua yang Anda butuhkan dapat dikonfigurasi melalui parameter baris perintah:

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

mailq
sumber
Terima kasih mailq. Ini kurang lebih persis seperti apa yang saya kejar!
richo
8

Ada juga permata ruby ​​yang disebut mailcatcher .

Anda dapat membaca surel langsung di peramban melalui antarmuka web terintegrasi, ada tangkapan layar dari beranda di bawah.

Antarmuka pengirim surat

David Costa
sumber
1
Saat ini kami menggunakan mailcatcher, terlalu banyak crash.
Jacob Evans
6

Kami menggunakan layanan web http://mailtrap.io dalam lingkungan pengembangan dan pementasan. Ini adalah platform-independen dan tidak mengharuskan Anda untuk menjalankan SMTP Anda sendiri.

Menawarkan:

  • Semua email di satu tempat
  • Akses bersama untuk tim dev ke kotak masuk
  • Alat pengembang untuk menganalisis email
  • Konfigurasi yang fleksibel
Bogdan Gusiev
sumber
Ini hebat dan jauh lebih kuat dari apa yang saya lakukan! Terima kasih.
richo
Saya suka mereka menawarkan paket gratisan yang murah hati (untuk saat ini).
David
3

smtp4dev telah bekerja dengan baik untuk saya. (Khusus Windows)

Ferruccio
sumber
Saya baru saja menginstal dan menggunakan alat kecil yang mengagumkan ini. Sempurna untuk kebutuhan saya (tidak ada java dan UI yang bagus)
Nick.McDermaid
2

http://quintanasoft.com/dumbster/

Ini terlihat seperti itu mungkin akan melakukan pekerjaan, untuk siapa pun yang menemukan ini.

richo
sumber
Sayang sekali itu membutuhkan javavm. Ditambah lagi seseorang telah melakukan percabangan dan mengerjakannya baru-baru ini ... github.com/rjo1970/dumbster
John Mee
Cheers John. Berbasis Java sudah cukup untuk menunda saya pada akhirnya, saya akhirnya hanya menulis sesuatu sendiri.
richo
2

Penafian: Ini adalah jawaban yang terlambat, tapi saya benar-benar percaya itu akan membantu pemirsa di masa depan. Perhatikan juga bahwa saya mengerjakan produk ini.

Kami membangun Mailosaur untuk menyelesaikan masalah yang sebenarnya ini. Kami telah membangunnya untuk menambahkan alamat email pengujian serta SMTP.

isNaN1247
sumber
1

Saya hanya membayar apa saja layanan smtp kemudian mengirim hasilnya ke ember sedikit!

tony roth
sumber
Saya berbicara tentang email massal, dan dengan data pelanggan langsung yang terlibat. Saya harus yakin bahwa saya tidak akan membanjiri intertron dengan surat.
richo
Saya akhirnya memperluas kelas smtpd.SMTPServer python, saya akan merilis proyek secara publik dalam seminggu atau lebih ketika saya senang dengan itu (saya bundel dengan suite tes httpd yang saya tulis beberapa waktu lalu). Untuk sementara saya menamai suite sdb.
richo
@Richo: ada banyak cara untuk menghentikan server SMTP mengirim email - sebagian besar memungkinkan Anda mematikan koneksi keluar atau mengalihkan semua pesan, atau Anda dapat memblokir koneksi keluar ke port 25 .... tidak ada yang mau repot-repot menulis mailserver dummy whwn itu sepele untuk mengkonfigurasi yang asli untuk berperilaku dengan cara ini.
symcbean
@symcbean: itu semua adalah poin yang valid. Secara pribadi saya merasa lebih mudah untuk menghentikan layanan surat biasa, memulai layanan debug saya, melakukan debugging saya dan kemudian jalankan lagi lingkungan hidup. Kludges suka membuang semua lalu lintas port 25 lalu mencegah hal lain mengirim email. Terima kasih atas bantuannya,
richo
semua ini tidak masuk akal, semua gateway smtp akan memberi Anda fungsi yang tepat ini tanpa kehilangan email langsung yang keluar!
tony roth