MailCatcher позволяет перехватывать отправленные электронные сообщения. Для меня он удобен тем, что перехваченное сообщение можно просматривать в браузере. Очень удобно, когда нужно настроить текст электронного сообщения, особенно когда речь идет об HTML.
Установка Ruby
В терминале выполняем команды:
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.2 ruby2.2-dev
Установка и настройка MailCatcher
Для установки в терминале выполянем команду:
sudo gem install mailcatcher
Далее необходимо сделать так, что бы MailCatcher запускался автоматически при старте ОС. Для этого необходимо написать сервис (в сети можно найти готовые сервисы, но к сожалению у меня они отказались работать, поэтому я написал свой).
Редактируем /etc/init.d/mailcatcher
:
sudo nano /etc/init.d/mailcatcher
Вставляем код скрипта:
#!/bin/sh
### BEGIN INIT INFO
# Provides: mailcatcher
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop the mailcatcher smtp server daemon
# Description: Controls the main MailCatcher SMTP server daemon "mailcatcher"
### END INIT INFO
DESC="MailCatcher SMTP server"
NAME=mailcatcher
DAEMON=/usr/local/bin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME="${0##*/}"
SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start() {
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
if pidofproc -p $PIDFILE "$DAEMON" > /dev/null 2>&1 ; then
return 1
fi
if start-stop-daemon \
--starts \
--pidfile $PIDFILE \
--make-pidfile \
--background \
--exec $DAEMON \
-- \
--foreground \
--http-ip=0.0.0.0 > /dev/null 2>&1 ; then
return $?
fi
return 2;
}
#
# Function that stops the daemon/service
#
do_stop() {
# Return
# 0 if daemon has been stopped
# 1 if daemon could not be stopped
# other if a failure occurred
if pidofproc -p $PIDFILE "$DAEMON" > /dev/null 2>&1 ; then
killproc -p $PIDFILE $DAEMON
return $?
fi
return 1
}
case "$1" in
start)
log_daemon_msg "Starting $DESC"
do_start
case "$?" in
0)
log_success_msg
log_daemon_msg "$DESC has been started"
log_end_msg 0
;;
1)
log_success_msg
log_daemon_msg "$DESC was already running"
log_end_msg 0
;;
2)
log_success_msg
log_daemon_msg "$DESC could not be started"
log_end_msg 1
exit 1
;;
esac
;;
stop)
log_daemon_msg "Stopping $DESC"
do_stop
case "$?" in
0)
log_success_msg
log_daemon_msg "$DESC has been spopped"
log_end_msg 0
;;
1)
log_success_msg
log_daemon_msg "$DESC was already stopped"
log_end_msg 1
exit 1
;;
esac
;;
restart)
log_daemon_msg "Restarting $DESC"
do_stop
do_start
case "$?" in
0)
log_end_msg 0
;;
1|*)
log_end_msg 1
exit 1
;;
esac
;;
status)
status_of_proc -p $PIDFILE "$NAME" "$DESC"
exit $?
;;
*)
echo "Usage: $SCRIPTNAME {start|stop||restart|status}" >&2
exit 3
;;
esac
exit 0
Далее в терминале выполняем команды:
sudo chmod 755 /etc/init.d/mailcatcher
sudo update-rc.d mailcatcher defaults
Перезагружаемся и убеждаемся что MailCatcher запустился, для этого откроем в браузере страницу http://localhost:1080
.
Далее необходимо настроить PHP, что бы при отправке сообщений использовался MailCatcher. Напомню, что у меня установлен PHPBrew и несколько версий PHP, поэтому настроить нужно каждую версию. В терминале выполняем команды:
phpbrew cd etc
sudo nano php.ini
Находим строку:
;sendmail_path =
Меняем ее на строку:
sendmail_path = /usr/bin/env catchmail
Повторяем для всех установленных версий PHP.
Часто используемые команды MailCatcher
Запуск:
sudo service mailcatcher start
Остановка:
sudo service mailcatcher stop
Перезапуск:
sudo service mailcatcher restart