Установка и настройка MailCatcher

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

Комментарии (1)