วิธีตั้งค่าเซิร์ฟเวอร์ SMTP ปลอมเพื่อตรวจจับจดหมายทั้งหมดได้อย่างไร


50

ฉันกำลังมองหาบริการ smtp ที่เชื่อฟัง RFC เป็นหลักยกเว้นแทนที่จะส่งจดหมายมันก็แค่บันทึกไปยังไฟล์

[date] sent mail to <address>

หรืออะไรก็ตาม ฉันสามารถทุบตีสิ่งนี้พร้อมกับฟังก์ชั่นขั้นต่ำเปลือยที่ฉันต้องการในงูหลามในเวลาประมาณครึ่งชั่วโมงที่ฉันคิด แต่ถ้ามีโครงการที่มีอยู่ที่ทำงานได้ดีกว่าฉันควรจะใช้มัน

เหตุผลที่ต้องมีมันคือการดีบั๊กแอปที่ส่ง 7 * จำนวนของเมลที่ควรจะเป็น

แก้ไข: และถามแล้ว: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email


ใช่คำถามนี้ได้รับคำตอบใน stackoverflow แต่ฉันไม่เห็นคำตอบจาก python ตรงนั้น
BitwiseMan

คำตอบนี้ยังได้ที่ stackoverflow: stackoverflow.com/questions/48653699/…
realbart

คำตอบ:


58

หากคุณมีไพ ธ อนอยู่รอบนี้จะเขียนบทสนทนา SMTP ไปที่ stdout

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

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


ฉันรับมันคืนมันรองรับอีเมล HTML
HTTP500

2
ยังเป็นวิธีที่ดีที่สุดในการแก้ปัญหา!
MarZab

ไม่รองรับstarttls :(
Att

1
@AttRigh smtplib มีการนำ TLS มาใช้แต่การใช้งานจะไม่ง่ายอย่างนี้ โพสต์คำถาม; อาจมีบางคนมีสคริปต์อยู่แล้ว?
John Mee

11

คุณควรดูที่smtp-sinkเป็นส่วนหนึ่งของ Postfix คุณไม่จำเป็นต้องเรียกใช้ Postfix เพื่อให้ทำงานได้ เพียงติดตั้งเพื่อให้สามารถเรียกใช้งานได้ ทุกสิ่งที่คุณต้องการสามารถกำหนดค่าผ่านพารามิเตอร์บรรทัดคำสั่ง:

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


ขอบคุณ mailq นี่คือสิ่งที่ฉันเป็นหลังจากนั้นไม่มากก็น้อย!
richo

8

นอกจากนี้ยังมีทับทิมอัญมณีที่เรียกว่าmailcatcher

คุณสามารถอ่านอีเมลโดยตรงในเบราว์เซอร์ของคุณผ่านเว็บอินเตอร์เฟสแบบรวมมีภาพหน้าจอจากหน้าแรกของพวกเขาด้านล่าง

ส่วนต่อประสาน Mailcatcher


1
ขณะนี้เราใช้ mailcatcher ขัดข้องมากเกินไป
Jacob Evans

6

เราใช้บริการเว็บhttp://mailtrap.ioในการพัฒนาและจัดเตรียมสภาพแวดล้อม มันเป็นแพลตฟอร์มที่เป็นอิสระและไม่ต้องการให้คุณเรียกใช้ SMTP ของคุณเอง

มันมี:

  • อีเมลทั้งหมดในที่เดียว
  • การเข้าถึงแบบแบ่งใช้สำหรับทีม dev เพื่อกล่องจดหมาย
  • เครื่องมือสำหรับนักพัฒนาในการวิเคราะห์อีเมล
  • การกำหนดค่าที่ยืดหยุ่น

นี่ยอดเยี่ยมและแข็งแกร่งกว่าสิ่งที่ฉันทำ! ขอบคุณ
richo

ฉันชอบที่พวกเขาเสนอแผนฟรีที่ใจกว้าง (สำหรับตอนนี้)
David

3

smtp4devทำงานได้ดีสำหรับฉัน (Windows เท่านั้น)


ฉันเพิ่งติดตั้งและใช้เครื่องมือเล็ก ๆ นี้ที่ยอดเยี่ยม เหมาะสำหรับความต้องการของฉัน (ไม่มีจาวาและ UI ที่ดี)
Nick.McDermaid

2

http://quintanasoft.com/dumbster/

ดูเหมือนว่ามันอาจจะเป็นงานสำหรับคนอื่นที่สะดุดกับเรื่องนี้


น่าเสียดายที่มันต้องมี javavm บวกบางคนได้แยกและทำงานกับมันเมื่อเร็ว ๆ นี้ ... github.com/rjo1970/dumbster
John Mee

ไชโยจอห์น ตามจาวาก็เพียงพอแล้วที่จะทำให้ฉันปิดท้ายฉันก็แค่เขียนบางอย่างด้วยตัวเอง
richo

2

คำเตือน:นี่เป็นคำตอบที่ล่าช้า แต่ฉันเชื่อว่ามันจะช่วยผู้ชมในอนาคต โปรดทราบด้วยว่าฉันทำงานกับผลิตภัณฑ์นี้

เราสร้าง Mailosaur ขึ้นเพื่อแก้ไขปัญหานี้ เราได้สร้างมันขึ้นมาเพื่อเพิ่มที่อยู่อีเมลทดสอบและ SMTP



1

ฉันแค่แยกแยะบริการ smtp ใด ๆ จากนั้นส่งผลลัพธ์ไปยังที่เก็บข้อมูลสักเล็กน้อย!


ฉันกำลังพูดถึงอีเมลขยะจำนวนมากและด้วยข้อมูลลูกค้าที่เกี่ยวข้อง ฉันต้องแน่ใจว่าฉันจะไม่ทำให้ intertrons ท่วมท้นด้วยการส่งจดหมาย
richo

ฉันปิดชั้นเรียน smtpd.SMTPServer ของ python ฉันจะเผยแพร่โครงการสาธารณะในสัปดาห์หรือดังนั้นเมื่อฉันมีความสุขกับมัน (ฉันรวมมันด้วยชุดทดสอบ httpd ที่ฉันเขียนกลับไป) ฉันได้ตั้งชื่อชุด sdb อย่างไม่แน่นอน
richo

@Richo: มีหลายวิธีในการหยุดเซิร์ฟเวอร์ SMTP ไม่ให้ส่งอีเมล - ส่วนใหญ่อนุญาตให้คุณปิดการเชื่อมต่อขาออกหรือเปลี่ยนเส้นทางข้อความทั้งหมดหรือคุณสามารถปิดกั้นการเชื่อมต่อขาออกไปยังพอร์ต 25 .... ไม่มีใครจะรบกวนการเขียนจดหมายเซิร์ฟเวอร์ มันเป็นเรื่องเล็กน้อยที่จะกำหนดค่าของจริงที่จะประพฤติในลักษณะนี้
symcbean

@symcbean: นั่นคือคะแนนที่ถูกต้องทั้งหมด โดยส่วนตัวแล้วฉันพบว่ามันง่ายกว่าที่จะหยุดบริการอีเมลปกติของฉันเริ่มบริการการดีบักทำการแก้ไขข้อบกพร่องของฉันแล้วเปิดไฟขึ้นสภาพแวดล้อมสดอีกครั้ง Kludges เช่นการถ่ายโอนทราฟฟิกพอร์ต 25 ทั้งหมดจากนั้นป้องกันสิ่งอื่นจากการส่งเมล ขอบคุณสำหรับความช่วยเหลือแม้ว่า
richo

ไม่มีสิ่งใดที่สมเหตุสมผลเกตเวย์ smtp ทั้งหมดจะให้ฟังก์ชันที่แน่นอนนี้โดยไม่สูญเสียอีเมลสดขาออกใด ๆ !
tony roth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.