Dummy SMTP

Иногда возникает необходимость проверить, правильно ли ходит почта. Или разово получить какое-нибудь письмо. Поднимать для этого целый почтовый сервер нецелесообразно, поэтому будем использовать Dummy SMTP.

Dummy SMTP — скрипт, написанный на Python. Всего 28 строк, включая пустые строки и комментарии!

listen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python
# Original script written by Stuart Colville: http://muffinresearch.co.uk/archives/2010/10/15/fake-smtp-server-with-python/
"""A noddy fake smtp server."""

import smtpd
import asyncore
import time

class FakeSMTPServer(smtpd.SMTPServer):
  """A Fake smtp server"""

  def __init__(*args, **kwargs):
      print "Running fake smtp server on port 25"
      smtpd.SMTPServer.__init__(*args, **kwargs)

  def process_message(*args, **kwargs):
      mail = open("mails/"+str(time.time())+".eml", "w")
      print "New mail from " + args[2]
      mail.write(args[4])
      mail.close
      pass

if __name__ == "__main__":
  smtp_server = FakeSMTPServer(('', 25), None)
  try:
      asyncore.loop()
  except KeyboardInterrupt:
      smtp_server.close()

Чтобы скрипт слушал на всех интерфейсах, я убрал localhost из 24-й строки.

Запускается просто:

1
sudo python listen.py

Вся входящая почта будет сохраняться в директории mails.

Комментарии