ssmtp - отправляем логи на почту

Аватар пользователя Raven2000

Потребовалась отправка логов на нужный е-майл. Раскуривал штатный Sendmail, но выходило довольно монструозно (+ мне нужно было менять заголовки отправителя). Ставить Exim для этой мелочи тоже не хотелось. Посему остановился на утилите ssmtp. Она элементарна и проста в эксплуатации.

Установка

# cd /usr/ports/
# make search name=ssmtp
Port:   ssmtp-2.62.3
Path:   /usr/ports/mail/ssmtp
Info:   Extremely simple MTA to get mail off the system to a mail hub
Maint:  aragon@phat.za.net
B-deps: gettext-0.17_1 gmake-3.81_3 libiconv-1.13.1_1
R-deps:
WWW:    _http://packages.debian.org/stable/mail/ssmtp
 
# cd /usr/ports/mail/ssmtp; make install clean
~~
===> SECURITY REPORT:
      This port has installed the following binaries which execute with
      increased privileges.
/usr/local/sbin/ssmtp
 
      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.
 
      For more information, and contact details about the security
      status of this software, see the following webpage:
_http://packages.debian.org/stable/mail/ssmtp
===>  Cleaning for gmake-3.81_3
===>  Cleaning for ssmtp-2.62.3

Создадим и настроим конфигурационные файлы:

# cd /usr/local/etc/ssmtp/
# ll
total 4
-rw-r-----  1 root  ssmtp   200 Apr 22 11:53 revaliases.sample
-rw-r-----  1 root  ssmtp  1286 Apr 22 11:53 ssmtp.conf.sample
# cp ssmtp.conf.sample ssmtp.conf
# cp revaliases.sample revaliases

Настроим ssmtp.conf

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

# cat ssmtp.conf
 
# /etc/ssmtp.conf -- конфигурационный файл для sSMTP sendmail.
#
# Пользователь, который получает всю почту для userids < 1000
# Сделайте пустым для отключения перезаписи. Или укажите пользователя.
# А также вы можете указать нужный е-майл на который будет
# приходить почта для root.
root=postmaster
 
# Место, где идет почта. Настоящее имя машины не требуются
# MX записи. Обычно mailhosts является именем mail.domain.com
# Например если вы находитесь в domain.com ваш mailhub с таким же именем.
mailhub=mail
 
# Пример для SMTP портом 2525
# mailhub=mail.your.domain:2525
# Пример для SMTP портом 25 (Standard/RFC)
# mailhub=mail.your.domain
# Пример для SSL шифрованного соединения
# mailhub=mail.your.domain:465
 
# От кого якобы должна приходить почта?
rewriteDomain=
 
# Полное имя машины
hostname=_HOSTNAME_
 
# Установите это чтобы никогда не переписывать "From:" (если не указано) и
# использовать этот адрес в "from line" оболочки.
#FromLineOverride=YES
 
# Использовать SSL/TLS, чтобы отправить безопасные сообщения на сервер.
#UseTLS=YES
 
# Использовать SSL/TLS сертификат для аутентификации на SMTP-хосте.
#UseTLSCert=YES
 
# Используйте этот сертификат RSA.
#TLSCert=/usr/local/etc/ssmtp/ssmtp.pem
 
# Получить расширенное (* действительно * расширенную) отладочную информацию в логах
# Если вы хотите иметь отладке в конфигурационных отпарсенных файлах, переместите этот
# параметр в начало файла конфигурации и раскомментируйте
#Debug=YES

Мой тестовый конфигурационный файл:

# grep -v '^#' ssmtp.conf |grep -v ^\$
root=Raven2000@lissyara.su
mailhub=mail.ignix.ru
hostname=raven.local

Настроим revaliases

Revaliases нужен для создания псевдонимов (например как файл /etc/mail/aliases для sendmail). Переведем конфигурационный файл:

# cat revaliases
 
# sSMTP псевдонимы
#
# Формат: local_account:outgoing_address:mailhub
#
# Пример: root:your_login@your.domain:mailhub.your.domain[:port]
# где [:port] – это дополнительный номер порта, который по умолчанию 25.

Настроим соответствующим образом:

# grep -v '^#' revaliases |grep -v ^\$
root:root@raven.local:mail.ignix.ru

Система

Остановите Sendmail и приведите конфигурационные файлы к этому виду:

# cat /etc/rc.conf |grep sendmail
sendmail_enable="NONE"
 
# grep -v ^# /etc/mail/mailer.conf |grep -v ^\$
sendmail        /usr/local/sbin/ssmtp
send-mail       /usr/local/sbin/ssmtp
mailq           /usr/local/sbin/ssmtp
newaliases      /usr/local/sbin/ssmtp
hoststat        /usr/local/sbin/ssmtp
purgestat       /usr/local/sbin/ssmtp

Тестируем

Отправим письмо руту:

# mail root
Subject: test ssmtp
test ssmtp
.
EOT

Готово. Если письмо пришло то вас можно поздравить.

Проблемы

А если не пришло то это проблема =).
Для начала нам нужно обнаружить проблемное место. Для этого в конфигурационном файле ssmtp.conf Добавляем в самое начало конфига строчку:

Debug=YES

Далее необходимо смотреть как и куда отправляются письма. Для этого необходимо видеть логи почтового сервера в реальном времени (для удобства). И пробуем отправить письмо заодно смотря логи.
# tail -f /var/log/maillog
Apr 23 11:38:43 bsd sSMTP[72138]: Sent mail for root@raven.local (221 Bye) uid=0
username=root outbytes=296
Apr 23 11:38:51 bsd sSMTP[72143]: Set Root="Raven2000@lissyara.su"
Apr 23 11:38:51 bsd sSMTP[72143]: Set MailHub="mail.ignix.ru"
Apr 23 11:38:51 bsd sSMTP[72143]: Set RemotePort="25"
Apr 23 11:38:51 bsd sSMTP[72143]: Set HostName="raven.local"
Apr 23 11:38:51 bsd sSMTP[72143]: Set MailHub="mail.ignix.ru"
Apr 23 11:38:51 bsd sSMTP[72143]: via SMTP Port Number="25"
Apr 23 11:38:51 bsd sSMTP[72143]: 220 MailServer 2005
Apr 23 11:38:51 bsd sSMTP[72143]: HELO raven.local
Apr 23 11:38:52 bsd sSMTP[72143]: 250 ignix.ru
Apr 23 11:38:52 bsd sSMTP[72143]: MAIL FROM:<root@raven.local>
Apr 23 11:38:52 bsd sSMTP[72143]: 250 Ok
Apr 23 11:38:52 bsd sSMTP[72143]: RCPT TO:<Raven2000@lissyara.su>
Apr 23 11:38:52 bsd sSMTP[72143]: 250 Ok
Apr 23 11:38:52 bsd sSMTP[72143]: DATA
Apr 23 11:38:52 bsd sSMTP[72143]: 354 End data with <CR><LF>.<CR><LF>
Apr 23 11:38:52 bsd sSMTP[72143]: Received: by raven.local (sSMTP sendmail emulation);
Fri, 23 Apr 2010 11:38:51 +0400
Apr 23 11:38:52 bsd sSMTP[72143]: From: "Charlie &" <root@raven.local>
Apr 23 11:38:52 bsd sSMTP[72143]: Date: Fri, 23 Apr 2010 11:38:51 +0400
Apr 23 11:38:52 bsd sSMTP[72143]: To: Raven2000@lissyara.su
Apr 23 11:38:52 bsd sSMTP[72143]: Subject: test ssmtp2
Apr 23 11:38:52 bsd sSMTP[72143]:
Apr 23 11:38:52 bsd sSMTP[72143]: test ssmtp2
Apr 23 11:38:53 bsd sSMTP[72143]: .
Apr 23 11:38:53 bsd sSMTP[72143]: 250 Ok: queued as 50A392BC12D
Apr 23 11:38:53 bsd sSMTP[72143]: QUIT
Apr 23 11:38:53 bsd sSMTP[72143]: 221 Bye
Apr 23 11:38:53 bsd sSMTP[72143]: Sent mail for root@raven.local (221 Bye) uid=0
username=root outbytes=331

Как видим все в порядке это можно проследить по записям. У вас же могут быть несоответствия в работе которые вы заметите и устраните.

Ваша оценка: Нет Средняя: 4.8 (19 голосов)

Вдруг для кого-то

Вдруг для кого-то существенно. Пишут, что нет спуллинга.
Если получатель медлительный (далеко и/или хорошо нагружен), то программа-отправитель будет ждать окончания отправки. Хуже, что в это время будет невозможно отправить еще одно сообщение. MTA занят.

Установить можно проще

Добавив при установке к make ключ replace можно избежать необходимости редактировать файл /etc/mail/mailer.conf
В итоге установка будет выглядеть следующим образом:

# cd /usr/ports/mail/ssmtp
# make install replace clean

Да, это я все в хэндбуке вычитал, но ссылку фиг вставишь :)
Потратил минут 5 чтоб комент отправить, сначала сумму подсчитай, потом буквы введи =\

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer