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.3 (6 голосов)

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

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

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

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

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

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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <em> <b> <u> <i> <strong> <font> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike> <caption>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <c>, <cpp>, <mysql>, <perl>, <php>, <python>, <text>. The supported tag styles are: <foo>, [foo].
  • Glossary terms will be automatically marked with links to their descriptions. If there are certain phrases or sections of text that should be excluded from glossary marking and linking, use the special markup, [no-glossary] ... [/no-glossary]. Additionally, these HTML elements will not be scanned: a, abbr, acronym, code, pre.

Подробнее о форматировании

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
1 + 4 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.

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

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer