Как настроить поддельный SMTP-сервер для перехвата всех писем?

50

Я ищу SMTP-сервис, который по сути подчиняется RFC, за исключением того, что вместо отправки почты он просто записывает в файл

[date] sent mail to <address>

Или что угодно. Я могу сделать это вместе с минимальным набором функций, которые мне нужны в python, примерно через полчаса, я считаю, но если есть существующий проект, который работает лучше, я бы лучше использовал это.

Причиной этого является отладка приложения, которое продолжает отправлять 7 * количество почты, на которое он должен.

РЕДАКТИРОВАТЬ: И уже спросил: https://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email

richo
источник
Да, на этот вопрос ответили на stackoverflow, но я не увидел ответа на основе Python.
BitwiseMan
На этот вопрос также отвечают в stackoverflow: stackoverflow.com/questions/48653699/…
realbart

Ответы:

58

Если у вас есть python, он напишет 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 Righ
1
@AttRigh В smtplib реализован TLS, но его использование не будет таким простым. Разместить вопрос; может у кого уже есть скрипт?
Джон Ми,
11

Вы должны взглянуть на то, smtp-sinkчто является частью Postfix. Вам не нужно запускать Postfix, чтобы он работал. Просто установите его, чтобы получить исполняемый файл. Все, что вам нужно, можно настроить с помощью параметров командной строки:

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

mailq
источник
Спасибо mailq. Это более или менее точно то, что я был после!
richo
8

Существует также рубиновый камень под названием mailcatcher .

Вы можете читать электронные письма прямо в своем браузере через встроенный веб-интерфейс, ниже приведен скриншот с их домашней страницы.

Интерфейс Mailcatcher

Дэвид Коста
источник
1
В настоящее время мы используем mailcatcher, слишком много аварий.
Джейкоб Эванс
6

Мы используем веб-сервис http://mailtrap.io в среде разработки и подготовки. Он не зависит от платформы и не требует запуска собственного SMTP.

Это предлагает:

  • Все электронные письма в одном месте
  • Общий доступ для команды разработчиков к почтовому ящику
  • Инструменты разработчика для анализа писем
  • Гибкая конфигурация
Богдан Гусиев
источник
Это здорово и намного надежнее, чем я делал! Благодарю.
Ричо
Мне нравится, что они предлагают щедрый бесплатный план (пока).
Дэвид
3

smtp4dev хорошо сработал для меня. (Только для Windows)

Ферруччо
источник
Я только что установил и использовал этот замечательный маленький инструмент. Идеально
подходит
2

http://quintanasoft.com/dumbster/

Это похоже на то, что это, вероятно, сделает работу, для любого другого, кто натыкается на это.

richo
источник
Жаль, это требует javavm. Плюс, кто-то недавно разветвлялся и работал над этим ... github.com/rjo1970/dumbster
Джон Ми,
Ура Джон. Основанного на Java было достаточно, чтобы в конце концов меня оттолкнуть, я просто написал что-то сам.
Ричо
2

Отказ от ответственности: Это поздний ответ, но я искренне верю, что он поможет будущим зрителям. Также обратите внимание, что я работал над этим продуктом.

Мы создали Mailosaur , чтобы решить эту проблему. С тех пор мы создали его для добавления тестовых адресов электронной почты, а также SMTP.

isNaN1247
источник
1

Я просто разбираюсь с любыми службами smtp, а затем отправляю результаты в ведро!

Тони Рот
источник
Я говорю о массовых электронных письмах, хотя и с живыми данными о клиентах. Мне нужно быть уверенным, что я не собираюсь затоплять интертронов почтой.
richo
Я закончил расширением класса python smtpd.SMTPServer, я опубликую проект через неделю или около того, когда я буду им доволен (я связываю его с набором тестов httpd, который я написал некоторое время назад). Я предварительно назвал набор SDB.
Ричо
@Richo: существует множество способов остановить отправку электронной почты SMTP-сервером - большинство из них позволяют отключить исходящие соединения или перенаправить все сообщения, или вы можете заблокировать исходящие соединения на порт 25 .... никто бы не стал писать фиктивный почтовый сервер. его тривиально настроить реальное поведение таким образом.
symcbean
@symcbean: все это действительные точки. Лично мне проще остановить свою обычную почтовую службу, запустить службу отладки, выполнить отладку, а затем снова запустить живую среду. Такие помехи, как сброс трафика всего порта 25, затем запрещают отправку почты. Спасибо за помощь, хотя,
richo
все это не имеет смысла, все шлюзы smtp дадут вам именно эту функциональность, не теряя при этом никаких исходящих электронных писем!
Тони Рот