При развертывании и отладки работы различных информационных систем зачастую требуется настройка и отладка почтовых уведомлений. В ряде случаев настройка коннектора к почтовой системе требует дополнительного согласования и ожидания настроек со стороны различных ИТ подразделений. В таких инфраструктурах было бы удобно использовать некий “синтетический” почтовый сервера. Либо же почтового сервера нет вовсе. Sendria – это почтовый сервер, который вы можете использовать для этих целей. В этой публикации будет рассмотрена установка Sendria на Ubuntu 20.04.
С детальнам описанием продукта можно озакомится на соответствующей странице на GitHub. Если кратко, то Sendria может принимать письма от ваших сервисов вместо реальных людей. Это очень удобно в сценариях тестирования и отладки. Для просмотра всех писем используется веб интерфейс.
Пример интерфейса приведен ниже:
Предварительные требования
Для корректной работы Sendria необходимо, чтобы был установлен Python версии 3.7 или выше.
Посмотреть текущую версию Python можно следующей командой:
pythov3 -V
Подготовка операционной системы
Мы не будет рассматривать процесс остановки операционной системы, т.к. есть огромное количество соответствующего материала на просторах Интернета. Мы только рассмотрим шаги, которые необходимо выполнить сразу после установки операционной системы.
А именно:
1. Актуализируем репозитории.
sudo apt update
2. Выполним обновление текущих пакетов:
sudo apt upgrade
Подтверждаем наше согласие на обновление пакетов:
Дожидаемся окончания процесса обновления пакетов.
Установка Sendria
Установка Sendria выполняет очень просто. Сначала необходимо установить модуль pip:
sudo apt-get install python3-pip
Дожидаемся окончания процесса установки модуля pip.
Теперь запускаем непосредственную установку Sendria:
sudo python3 -m pip install sendria
Дожидаемся окончания процесса установки модуля.
Настройка автоматического запуска
Создаем файл для запуска службы systemd:
sudo touch /lib/systemd/system/sendria.service
sudo chmod 664 /lib/systemd/system/sendria.service
Редактируем файл sendria.service:
[Unit]
Description=Sendria SMTP server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/local/bin/sendria --db mails.sqlite --smtp-ip 10.10.10.27 --smtp-port 25 --http-ip 10.10.10.27 --http-port 80 --no-quit --pidfile /var/run/sendria.pid
ExecStop=/usr/bin/python3 /usr/local/bin/sendria --stop
Restart=always
[Install]
WantedBy=multi-user.target
Немного поподробнее поговорим про строчку с ExecStart. Именно тут задаются параметры запуска нашего сервиса Sendroia. Многие из этих параметров отличаются от параметров по умолчанию.
–db – указывает имя базы данных для хранения сообщений. Вы можете указать полный пусть к файлу с базой данных. Например, /opt/sendria/mails.sqlite.
–smtp-ip – указывает на каком IP-адресе прослушивать подключения к SMTP серверу. По умолчанию это адрес 127.0.0.1.
–smtp-port – указывает на каком порту сервис Sendria будет принимать клиентские подключения. По умолчанию используется порт 1025.
–http-ip – указывает на каком порту будет запущен веб сервер для подключения к веб интерфейсу Sendria. По умолчанию это адрес 127.0.0.1.
–http-port – этот параметр определяет номер TCP порта на котором будет прослушиваться подключение к веб интерфейсу.
–no-quit – при использовании данного параметра в веб интерфейсе не будет отображаться кнопка выключения сервера Sendria.
–pidfile – определяет расположение PID файла сервиса Sendria.
Перезагрузим информация о доступных сервисах:
sudo systemctl daemon-reload
Включим автозапуск нашего сервиса при старте операционной системы:
sudo systemctl enable sendria.service
Теперь попробуем запустить наш сервис:
sudo systemctl start sendria.service
Проверим статус нашего сервиса:
sudo systemctl status sendria.service
Проверка
Теперь мы можем приступить к проверке работы Sendria.
Попробуем зайти на веб интерфейс:
http://10.10.10.27/
Сервис доступен. Теперь попробуем отправить тестовое письмо:
echo 'From: Sendria <sendria@example.com>\n' 'To: You <you@example.com>\n' 'Subject: Welcome!\n\n' 'Welcome to Sendria!' | curl smtp://10.10.10.27:25 --mail-from sendria@example.com --mail-rcpt you@example.com --upload-file -
И снова проверим наш веб интерфейс:
Как видно, новое письмо отображается в списке. Попробуем открыть детальное представление письма:
Как видно из скриншота выше, все заголовки и основные составляющие письма также отображаются.