mailcatcher

Конечно да, можно использовать обычную почту, но для облачных IDE или изолированных контейнеров LXC или для DOCKER окружения удобней будет подменять SMTP и смотреть почту локально или в браузере. Особенно удобно когда работаем дистанционно через облако.
mailcatcher написан на Ruby. Так как часть проектов у нас в экосистеме Rails это оказался самый удобный вариант. Каждый проект работает в изолированной среде. Это Docker/VPS/LXC. Для проектов есть шаблоны окружения. Поэтому все сервисы доступны разработчику сразу после инициализации.
Установка в контейнере
# ubuntu 18.04 LTS
sudo apt install ruby ruby-dev sqlite3 libsqlite3-dev
sudo gem install mailcatcher
Использование
# daemon mode by default
# демон будет работать как почтовый сервер, то есть он должен
# работать всегда при тестировании, ниже есть пример как создать
# сервис в Ubuntu.
mailcatcher --ip 0.0.0.0
# foreground, по сути это простой интерфейс для просмотра почты
# работает асинхронно.
mailcatcher --ip 0.0.0.0 --foreground
переходим в браузере http://<ip контейнера| или вашего сервера>:1080
и смотрим почту. Почту можно просматривать в text/html форматах.
docker/rails
Добавляем сервис в docker-compose проекта
version: "3"
services:
app:
...
env_file:
- .env.development
mailcatcher:
image: diproart/mailcatcher
ports:
- 1080:1080
В окружении разработки config/environment/development.rb
настроим работу с сервисом
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: ENV['RAILS_SMTP_ADDRESS'], # mailcatcher
port: ENV['RAILS_SMTP_PORT'] # 1025
}
Определим в файле .env.development
переменные окружения
RAILS_SMTP_ADDRESS=mailcatcher
RAILS_SMTP_PORT=1025
RAILS_MAILER_URL=localhost:3000
переходим в браузере http://localhost:1080
mailcatcher as service in ubuntu
Если используется LXC или сервер разработки (vps, hyper-v и т.д.), удобно создать сервис и иметь возможность управлять им.
Исполняемые файлы в ubuntu расположены в /usr/local/bin/{mailcatcher, catchmail}
.
#
# mailcatcher.service
# /etc/systemd/system/mailcatcher.service
#
[Unit]
Description=Mailcatcher
After=netwok.target
#After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/local/bin/mailcatcher --ip 0.0.0.0 --foreground
Restart=always
#User=ubuntu
#Group=ubuntu
#UMask=0022
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable mailcatcher
sudo systemctl start mailcatcher
mailcatcher php
Пример настройки php.ini
; php.ini
; sednmail_path = /usr/local/bin/catchmail --ip 127.0.0.1 -f from@dev.mail
sednmail_path = /usr/local/bin/catchmail -f from@dev.mail
если при этом необходимо выключить postfix
, но не удалять
sudo update-rc.d postfix disable