Как стать автором
Обновить

Комментарии 28

Но зачем, если есть mailcatcher.me?
Например чтоб при тестировании не отправлять письма реальным пользователям или на не существующие адреса.
Debug Mail — это сервис, его не нужно устанавливать в отличии от mailcatcher. Также в Debug Mail есть возможности для совместной работы.
Много говорите о фичах, но какую проблему вы решаете?
Интересный инструмент, но с чем его едят?
Решаем проблему отладки email-рассылок. Т.к. в этот процесс могут быть вовлечены сразу несколько сотрудников (разработчики, верстальщики, дизайнеры, клиенты), то важной частью сервиса мы сделали совместную работу.
Это понял, но тогда еще вопрос.
Какие задачи в рассылках требуют коллективного решения, для чего тут нужна совместная работа, и почему для этого нельзя использовать любой SMTP-сервер?
Задаю не из праздного любопытства, а из профессионального интереса.
Опишу несколько кейсов:
  • Совместная работа нескольких разработчиков на staging сервере.
  • Работа тестировщика. Если найдена ошибка в письме, он может легко получить на него прямую ссылку и отправить её в баг-трекер.
  • Работа дизайнеров. Если есть какая-то ошибка в дизайне письма, можно добавить к нему комментарии через сервис coment.me. Это делается в один клик.
  • Показать письмо по прямой ссылке заказчику, если тот уже очень любопытный.


Сервис делался с оглядкой на те ситуации, которые возникали при работе нашей команды.
Это скорее транзакционные рассылки или массовые? Есть ли у вас анализ DKIM, SPF и прочих подписей?
Имеется в виду работа над автоматическими рассылками в процессе разработки сайта/приложения и тд.
Предполагается использование исключительно в dev/staging окружении, анализа DKIM, SPF у нас нет, по этой причине.
А как это связано с работой верстальщика (упомянутого вами дизайнера). Он сможет посмотреть это письмо в различных почтовых клиентах чтобы проверить не поплыл ли дизайн или еще какие косяки отладить?
На данный момент он может посмотреть как выглядит письмо в браузере. Описанная вами функция есть в плане для дальнейшнего развития сервиса, если комьюнити проявит заинтересованность.
Да, сервисы решают примерно одну проблему, но у нас акцент на совместную работу.
Это не одно и тоже. Для локальной работы ваше решение вполне применимо, но это не достаточно удобно при работе в команде. Да и история писем не сохраняется.
$ python -m smtpd -nc DebuggingServer localhost:2525 > smtp_history

Теперь сохраняется. =) Конечно ваш сервис круче, с этим никто не спорит. Просто многие не знают, что если у них есть python в системе, то вот так просто можно запустить smtp-демон для дебага. Он входит в стандартную пайтоновскую библиотеку.
Да, такое решение тоже имеет право на жизнь. Вопрос в том, какие задачи возникают у конкретного разработчика/команды. Для кого-то ваше решение будет покрывать все необходимые задачи.
Так проще было, из-за того, что слушать 25-й порт может только root.
Если есть какая-то причина, по которой 25й порт удобнее, то подумаем о том, чтобы настроить forwarding с него.
Причина простая — порт для SMTP это 25. RFC, IANA.

sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 25 -j REDIRECT --to-ports 9025
Это понятно. Сделаем.
Открыли 25й порт.
Да крутая штука, чего уж тут.
Он у вас почему-то не-MIME письма не принимает — молча закрывает сокет и всё. Понимаю, конечно, что plaintext письма почти никто не отправляет сейчас, но можно же хотя-бы по человечески по RFC ответить сообщением об ошибке и только после этого отключаться.

$ python
Python 2.7.3 (default, Feb 27 2014, 20:00:17) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import smtplib
>>> s = smtplib.SMTP('debugmail.io', 9025, 'localhost')
>>> s.login("*********************", "***************")
(235, '2.7.0 Authentication successful')
>>> s.sendmail("wasd@localhost", "to@localhost", "non-mime-plaintext")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/smtplib.py", line 734, in sendmail
    (code, resp) = self.data(msg)
  File "/usr/lib/python2.7/smtplib.py", line 502, in data
    (code, msg) = self.getreply()
  File "/usr/lib/python2.7/smtplib.py", line 361, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
Спасибо, поправим.
Поправили это.
Отличный сервис, сделан достаточно просто. Он останется бесплатным?
Спасибо. Все доступные сейчас функции точно останутся бесплатными.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.