yandex

Сибирь. Сабынич. Айти

о природе, личной жизни и информационных технологиях

Замена sendmail на ssmtp в FreeBSD

Цикл статей по созданию идеального сервера для хостинга моих сайтов 😉 зреет довольно давно.

Помнится, когда я решился на переезд с виртуального хостинга на VPS я даже где-то делал заметки, что и как было настроено. Чтобы потом по ним написать тексты.

В предверьях выхода FreeBSD 10 я начал присматриваться к состоянию своей ОС. Не самое идеальное состояние, устаревшая версия FreeBSD 9.0, следы различных экспериментов и тому подобное. Поэтому я буду постепенно описывать то, что я сделал для приближения к своему видению идеального сервера.

Для хостинга VPS был выбран хостинг-провайдер ISPserver как наиболее проверенный по истечению большого срока работы с ним. Я пользуюсь его услугами уже не первый год и пути моих данных можно как-то так отобразить:

  1. VPS на виртуализации VDSmanager-FreeBSD 
  2. VPS на виртуализации XEN
  3. Облачный хостинг
  4. VPS на виртуализации KVM

Если кому будет интересно (например мне =)) то я опишу подробней почему я так странно мигрировал и практически вернулся к истокам =)

И так, под сервер взят FreeBSD в минимальной конфигурации.

По умолчанию на FreeBSD используется почтовый сервер Sendmail. Но так как я использую для почты сервис от gmail, то в общем-то запущенный почтовый демон мне не к чему. Все мои сайты так же работают через SMTP-авторизацию с удаленными почтовыми серверами.

Но тем не менее, различные отчеты о состоянии сервера получать полезно и даже необходимо.

Было принято решение найти что-то менее тяжеловесное для использования исключительно на отсылку почтовых сообщений наружу.

Первым в руки попал ssmtp, да так и остался.

Перед установкой и настройкой ssmtp требуется отключить работу Sendmail. Для этого в файл /etc/rc.conf помещаем следующие строки:

sendmail_enable=”NO”
sendmail_submit_enable=”NO”
sendmail_outbound_enable=”NO”
sendmail_msp_queue_enable=”NO”

И аварийно завершаем работающий процесс sendmail командой:

killall -9 sendmail

После чего приступаем к установке ssmtp:

make all install replace clean -C /usr/ports/mail/ssmtp

Использование в команде параметра replace приведет к изменению файла /etc/mail/mailer.conf

По умолчанию он выглядит так:

# $FreeBSD: release/9.2.0/etc/mail/mailer.conf 93858 2002-04-05 04:25:14Z gshapiro $
#
# Execute the “real” sendmail program, named /usr/libexec/sendmail/sendmail
#
sendmail        /usr/libexec/sendmail/sendmail
send-mail       /usr/libexec/sendmail/sendmail
mailq           /usr/libexec/sendmail/sendmail
newaliases      /usr/libexec/sendmail/sendmail
hoststat        /usr/libexec/sendmail/sendmail
purgestat       /usr/libexec/sendmail/sendmail

После установки ssmtp он стал содержать следующие строки

# $FreeBSD: release/9.2.0/etc/mail/mailer.conf 93858 2002-04-05 04:25:14Z gshapiro $

#

# Execute the “real” sendmail program, named /usr/libexec/sendmail/sendmail

#

#sendmail       /usr/libexec/sendmail/sendmail

#send-mail      /usr/libexec/sendmail/sendmail

#mailq          /usr/libexec/sendmail/sendmail

#newaliases     /usr/libexec/sendmail/sendmail

#hoststat       /usr/libexec/sendmail/sendmail

#purgestat      /usr/libexec/sendmail/sendmail

sendmail        /usr/local/sbin/ssmtp

send-mail       /usr/local/sbin/ssmtp

mailq           /usr/local/sbin/ssmtp

newaliases      /usr/local/sbin/ssmtp

hoststat        /usr/bin/true

purgestat       /usr/bin/true

В целом на этом можно и остановиться, теперь ssmtp полностью заменил собой sendmail и письма стали вновь уходить наружу. С той разницей, что принять письма на сервер не получится и MTA не запущен. Не является дополнительной нагрузкой и потенциальной брешью в безопасности.

В качестве продолжения можно рассказать о том, что при установке ssmtp помимо бинарного файла устанавливается так же файлы документации и примеры конфигурационных файлов.

Они расположены в директории /usr/local/etc/ssmpt/

Для того, чтобы начать использовать конфигурационный файл с целью более тонкой настройки отправки следует переименовать файл /usr/local/etc/ssmtp/ssmtp.conf.sample в /usr/local/etc/ssmtp/ssmtp.conf. Это легко выполнить командой:

cp /usr/local/etc/ssmtp/ssmtp.conf.sample /usr/local/etc/ssmtp/ssmtp.conf

После этого ssmtp начнет использовать данные из файла конфигурации.

Для увеличения безопасности можно проделать следующие трюки:

Создаем непривилегированного пользователя ssmtp

pw useradd ssmtp -g nogroup -h – -s /sbin/nologin -d /nonexistent -c “ssmtp pseudo-user”

Эта команда создаст пользователя ssmtp, присвоит его к группе nogroups и отключит возможность удаленной авторизации под ним и использование парольной авторизации в вобщем.

После этого выставляем права доступа и владельца на файлы и директорию

cd /usr/local/etc/ssmtp

chown ssmtp:wheel .

chmod 4750 .

Выполнение этих команд даст возможность для входа, чтения и записи в директорию только владельцу пользователю ssmtp и вход с чтением группе wheel, в которую в основном добавляют пользователей с административными полномочиями.
После переименования файла ему опять требуется выставить пользователя владельца и группу, а так же доступ на чтение файлов только владельцу.
chown ssmtp:wheel . ssmtp.conf
chmod 640 ssmtp.conf

И последнее, указываем владельца и группу с уровнеем доступа для исполняемого файла ssmtp

chown ssmtp:nogroup /usr/local/sbin/ssmtp

chmod 4555 /usr/local/sbin/ssmtp

Как я упоминал выше, для писем я использую привязку домена на gmail, конфигурационный файл будет выглядеть работающим относительно этой ситуации, но заработает и в любой другой при незначительных изменениях.

Конфигурационный файл для работы с gmail выглядит следующим образом:

mailhub=smtp.sabini.ch:465

hostname=vps.sabini.ch

FromLineOverride=YES

UseTLS=YES

[email protected]

AuthPass=<PASSWD>

Таким образом все отправленные с сервера письма будут уходить наружу через gmail.

Напомню, что этот метод работает при единоличном использовании сервера под исключительно свои нужны, в случае хостинга вместо ssmtp можно использовать DragonFly Mail Agent, который отсылает письма самостоятельно без авторизации на удаленном smtp-сервере.


Сначало хотел показать какой-нибудь смешной ролик, но решил остановиться на познавательном – история создания и использования настоящей голубиной почты


У меня есть телеграм-канал, где я пишу чуть чаще и менее формально 🙂 Подписывайся!
Замена sendmail на ssmtp в FreeBSD

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх