Когда нужно научить свой сервер отправлять почту…
Вообще-то, FreeBSD в своей базовой комплектации, если можно так выразится, имеет на борту полноценный почтовый сервер — sendmail. Предполагалось, что этим почтовиком будет пользоваться как сама операционная система, уведомляя своего администратора о результатах тестов и проверок, так и рядовые пользователи для повседневного общения. В этом случае настройка и запуск sendmail’а оправдана, если ваш сервер у вас именно «почтовый» (как минимум, обслуживает пользователей компании, например) и, что немаловажно, sendmail вы настраивать умеете.
Для «непочтового» сервера на FreeBSD, выполняющего другие задачи (например, запущен какой-нибудь web-сервер ) тратить время и разбираться в sendmail’е, когда нужны только отчеты системы, считаю нецелесообразно. (Для меня sendmail вообще темный лес и мне туда лезть страшно).
В таком случае на помощь приходит sSMTP. Это некий эмулятор sendmail’а, с помощью которого можно _только отправлять_ почту через удаленный «полноценный почтовый сервер».
Установка
Ставим с портов:
# whereis ssmtp ssmtp: /usr/ports/mail/ssmtp # cd /usr/ports/mail/ssmtp # make install clean
После окончания установки видим следующее сообщение — руководство к дальнейшим действиям:
sSMTP has been installed successfully. To replace sendmail with ssmtp type "make replace" or change your /etc/mail/mailer.conf to: 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 However, before you can use the program, you should copy the files "revaliases.sample" and "ssmtp.conf.sample" in /usr/local/etc/ssmtp to "revaliases" and "ssmtp.conf" respectively and edit them to suit your needs.
Настройка
Следуем рекомендации…
1. Вместо дефолтного sendmail’а прописываем ssmtp в /etc/mail/mailer.conf:
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
2. Редактируем конфигурационный файл /usr/local/etc/ssmtp/ssmtp.conf:
root=admin@provoip.in.ua mailhub=mail.pro-voip.com.ua rewriteDomain=provoip.in.ua hostname=server.provoip.in.ua FromLineOverride=YES
Кто получает почту для userids < 1000 (т.е. от всех системный пользователей):
root=admin@provoip.in.ua
Через какой MTA отправлять почту (МТА здесь полноценный сервер, который реально занимается доставкой почты пользователю — ищет MX запись домена, отправляет, следит за доставкой, возвращает письмо отправителю при невозможности доставки):
mailhub=mail.pro-voip.com.ua
Можно указать порт (по умолчанию 25), например:
mailhub=mail.your.domain:2525
С какого домена будет отправлена почта:
rewriteDomain=provoip.in.ua
Полное имя хоста:
hostname=server.provoip.in.ua
Не перезаписывать заголовок From при отправке, если он явно задан (если будет указано значение «NO», в заголовке From отобразится реальный пользователь, от имени которого отсылается письмо):
FromLineOverride=YES
Другие возможности:
Использовать SSL/TLS для отправки сообщений на сервер:
UseTLS=YES
Использовать SSL/TLS сертификат to authenticate against smtp host.
UseTLSCert=YES
Использрвать этот RSA сертификат:
TLSCert=/usr/local/etc/ssmtp/ssmtp.pem
Debug
Если возникли проблемы с отправкой письма и нужно посмотреть детально, как происходит общение между ssmtp и удаленным почтовым сервером, следующей опцией можно включить debug отправки письма:
Debug=YES
Здесь следует обратить внимание на расположение данной опции в файле конфига /usr/local/etc/ssmtp/ssmtp.conf:
- если ее поставить в конце файла — получим в логах (/var/log/maillog) подробный вывод smtp-сесси:
- если ее поставить в начале файла — кроме вывода smtp-сессии получим вывод парсинга по конфигу ssmtp.conf:
- если поставить где-нибудь в середине, то процесс парсинга в логах увидим начиная с опции, которая идет за «Debug=YES».
Отправка от определенного пользователя в системе
Допустим, в системе есть пользователь user123, у которого есть почтовый ящик user123@example.com. Чтобы пользователь смог отправлять письма со своего ящика через сервер mail.pro-voip.com.ua, отредактируем файл алиасов /usr/local/etc/ssmtp/revaliases:
# sSMTP aliases # # Format: local_account:outgoing_address:mailhub # # Example: root:your_login@your.domain:mailhub.your.domain[:port] # where [:port] is an optional port number that defaults to 25. user123:user123@example.com:mail.pro-voip.com.ua
— смотрим строку вконце.
Если файла revaliases, его можно создать самим 🙂 или переименовать revaliases.sample в revaliases.
Отправка сообщения от пользователя user123 с консоли будет выглядеть примерно следующим образом:
# mail -s «This is mail» -u user123 user777@gmail.com < /dev/null