UMGUM.COM 

sSMTP ( Эмулятор Sendmail для Unix. )

27 марта 2010  (обновлено 5 августа 2017)

OS: Debian Lenny.

Предположим, что мы имеем произвольный сервер под управлением Debian Lenny фиксированной конфигурации в полноценном окружении, обеспечивающем работу таких служб как разрешение доменных имён, доставки почтовой корреспонденции и тому подобного. Предположим, нам необходимо отправлять с нашего воображаемого сервера почтовую корреспонденцию. Что для этого требуется? Если сервер функционирует сам по себе, вне развитой инфраструктуры, то ничего другого не остается, как только подкорректировать конфигурацию MTA самого сервера (это может быть Sendmail, Postfix, Exim, Qmail и тому подобные приложения). А вот, в том случае, если у нас "под боком" имеется полнофункциональный почтовый сервер считаю целесообразным полностью переложить на него функции доставки электронной почты; наш воображаемый сервер будет обрабатывать свои функции, а почтовый доставлять то, для доставки чего он и предназначен - почту.

Воспользуемся утилитой sSMTP. Все, что она умеет, это "эмулировать" функционал Sendmail пересылки почты от локальных пользователей. Никаких прослушиваемых портов, никаких внешних сервисов, на которые могут "покусится" энтузиасты по раскрытию секретов, никаких конфигураций для "внешнего релея". Все, что может программа - это принять почтовый пакет от локального пользователя и отправить его по адресу путём использования внешнего почтового сервера в качестве "шлюза". Нам больше ничего и не требуется. Единственный недостаток - во время недоступности нашего внешнего почтового "шлюза" в силу отсутствия локальной очереди отправка корреспонденции будет невозможна; но я считаю, что недоступность почтового сервиса инфраструктуры - это проблема, на фоне которой другие временно теряют свою остроту.


# aptitude install ssmtp

При инсталляции sSMTP будет предложено удалить Exim - делаем это, для локального сервера он нам не нужен.

Делаем резервную копию конфигурационного файла sSMTP:

# cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.dist

Приводим содержимое конфигурационного файла к следующему виду:

root=postmaster
# Адрес почтового "шлюза" с указанием порта
mailhub=mx.domain.name:465
# Имя хоста на котором запущен sSMTP
hostname=service.domain.name
# Реквизиты пользователя на почтовом "шлюзе" через которого осуществляется пересылка почты
AuthUser=service@domain.name
AuthPass=strong.password
# Метод аутенификации
AuthMethod=LOGIN
# Указание применять шифрование соединения
UseTLS=YES
# Разрешаем заменять отправителю значение поля "From"
FromLineOverride=YES

И это, практически, все. После монструозных конфигураций Sendmail или Exim такой простой подход кажется невероятным, но настраивать в пересылке почты от локального пользователя удалённому шлюзу действительно просто нечего.

Возможно, работающий ранее в системе MTA не будет корректно удалён или остановлен. Подстановка sSMTP вместо него довольно проста и подразумеваем гарантированный "откат" до исходного состояния. Необходимо остановить работающий MTA, заблокировать его авто-запуск и подставить вместо ссылки на запуск Sendmail (традиционно считающимся MTA "по умолчанию" в ~NIX) ссылку на запуск sSMTP:

# mv /usr/sbin/sendmail /usr/sbin/sendmail.original
# ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

Теперь все обращения к Sendmail будут осуществляться к sSMTP незаметно для пользователя сервиса.

Протестировать корректность установки и настройки sSMTP можно элементарно с командной строки непосредственно на сервере:

# echo "test" | ssmtp admin@domain.name

Понятно, что следует ожидать письма с содержимым "test" на почтовый ящик "admin@domain.name".


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )