Потребовалась отправка логов на нужный е-майл. Раскуривал штатный 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
Переведем основной конфигурационный файл:
# 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 нужен для создания псевдонимов (например как файл /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
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
Вдруг для кого-то
Вдруг для кого-то существенно. Пишут, что нет спуллинга.
Если получатель медлительный (далеко и/или хорошо нагружен), то программа-отправитель будет ждать окончания отправки. Хуже, что в это время будет невозможно отправить еще одно сообщение. MTA занят.
Установить можно проще
Добавив при установке к
make
ключreplace
можно избежать необходимости редактировать файл/etc/mail/mailer.conf
В итоге установка будет выглядеть следующим образом:
Да, это я все в хэндбуке вычитал, но ссылку фиг вставишь :)
Потратил минут 5 чтоб комент отправить, сначала сумму подсчитай, потом буквы введи =\