Разрабатывая новую версию платформы Абрикос у меня появилась идея автоматической отладки e-mail сообщений отправляемых движком. В текущей версии движка <= 0.5.6 можно в настройках включать сохранение отправляемых сообщений в файл, но это крайне не удобно.

Была поставлена следующая задача:

— в новой версии упор сделан на REST API движка с покрытием тестами. Сборщик и покрытие тестами осуществляется в Node.js, поэтому желательно, чтобы e-mail отладчик дружил с Node.js;

— тест REST API платформы Абрикос должен работать так: скачали сборку -> запустили тест -> тест запускает виртуальный SMTP-сервер -> движок отправляет письма в процессе прохождения теста -> виртуальный SMTP-сервер перехватывает сообщения и сохраняет их в удобном формате JSON -> тестер запрашивает отправленное сообщение у SMTP-сервера по идентификатору messageId -> по окончанию теста SMTP-сервер закрывается;

— возможность просматривать отправляемые e-mail сообщения в браузере.

Погуглив на предмет запрашиваемых возможностей ни чего подходящего не нашел, кроме simplesmtp для Node.js. И то, в реадми simplesmtp было сказано что его разработка прекращена в пользу полноценного SMTP-сервера Haraka

Разобравшись с Haraka понял, что при незначительной доработке, это то, что нужно.

В итоге был разработано приложение SMTPeshka на базе Haraka (плагин JSON) со всеми выше перечисленными возможностями.

Итак, встречайте — Виртуальный SMTP-сервер под Node.js SMTPeshka

Лицензия MIT

Исходники на Github: https://github.com/abricos/smtpeshka

Пакет NPM: https://www.npmjs.com/package/smtpeshka

Текущая стабильная версия: 0.1.0

Возможности:

— запуск виртуального SMTP-сервера и Web-панели из командной строки;

— перехват отправляемых e-mail сообщений из сторонних приложений и сохранением их в файл JSON;

— просмотр отправленных e-mail через в панели через Веб-браузер;

— REST API для просмотра отправленных e-mail.

 

Установка SMTPeshka

Ставим Node.js и NPM, описывать не буду, в интернете полно статей на любой вкус и цвет.

Ставим smtpeshka через npm в глобальное хранилище:

$ [sudo] npm install -g smtpeshka

 

Запуск SMTPeshka

Создаем папку рабочего проекта, например my-smtp-test и запускаем в ней smtpeshk-у:

$ mkdir my-smtp-test
$ cd my-smtp-test
$ smtpeshka

В этот момент будет запущен виртуальный SMTP-сервер на 2525-м порту и Веб-сервер для работы панели управления в браузере и REST API на localhost порт 2580

Настройка

В директории запуска smtpeshk-и создайте файл конфигурации в формате JSON: smtpeshka.json

Например:

"log": {
    "console": {
        "level": "debug"
    }
},
"web": {
    "port": 12580
},
"SMTP": {
    "port": 12525
},
"transport": {
    "json": {
        "saveto": "<%= directory %>/my-emails"
    }
},
"haraka": {
    "config": {
        "build": {
            "dir": "<%= directory %>/tmp"
        }
    }
}

log.console.level=[error]|[warn]|[info]|[debug] — режим логирования

web.port — порт для работы панели управления в браузере и REST API

SMTP.port — порт для Виртуального SMTP-сервера

transport.json.saveto — директория для сохранения отправленных e-mail (значение <%= directory %> указывает на текущую директорию запуска smtpeshk-и)

haraka.config.build.dir — временная папка для хранения рабочих файлов сервера Haraka.

 

Отладка e-mail сообщений

Настройте ваше приложение, которое будет отправлять e-mail на отправку через SMTP-сервер:

host: localhost

port: 2525 (или тот, который укажите в настройках smtpeshk-и)

Запустите smtpeshk-у и потом ваше приложение и отправьте в нем e-mail сообщение.

Это сообщение не будет доставлено адресату, а будет сохранено в файл директории sent-emails (или ту, которую укажите в настройках smtpeshk-и)

Теперь откройте в браузере панель просмотра отправленных сообщений по адресу: localhost:2580

Если все сделано правильно, то в браузере вы увидите ваши e-mail-ы

 

Статья актуальна для версии SMTPeshka 0.1.0, поэтому более подробную и актуальную информацию вы можете получить на сайте проекта: https://github.com/abricos/smtpeshka

Вопросы и пожелания оставляйте в комментариях или в баг-трекере проекта на GitHub.

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

0
23 Января 2015, 15:36