Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:debian:buster:linux-how-to-setup-msmtp-for-email-notifications-to-relayhost-smarthost-in-debian-10-buster

Как настроить отсылку уведомлений на внешний почтовый сервер с помощью msmtp в Debian GNU/Linux

Не смотря на то, что в документе указано то, что Exim поставляется в Debian Linux по умолчанию, как это было в предыдущих версиях Debain, свежеустановленный Debian Buster не имеет никакого ПО для отправки электронной почты за пределы сервера.

Предположим, у нас в организации уже имеется почтовый сервер и нам нужно сделать так, чтобы письма, сформированные всевозможными локальными службами и приложениями на нашей Linux-системе, пересылались на этот почтовый сервер (relayhost/smarthost).

Для решения этой задачи мы можем установить в систему простой и легковесный почтовый клиент, умеющий выполнять такую пересылку - msmtp:

# apt install msmtp

Конфигурационные файлы для работы msmtp могут быть, как глобальные на уровне системы, так и на уровне отдельно взятого пользователя системы.
Глобальный файл может располагаться в /etc/msmtprc.
Файл настроек пользователя может размещаться в профиле в ~/.msmtprc.
Получить информацию о настройке конфигурации msmtp можно в man msmtp.

Примеры конфиг.файлов для системы и пользователя лежат здесь:

# updatedb
# locate msmtprc

/usr/share/doc/msmtp/examples/msmtprc-system.example /usr/share/doc/msmtp/examples/msmtprc-user.example

Скопируем примерный конфиг.файл уровня системы и откроем его на редактирование:

# cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc
# nano /etc/msmtprc

Задаём в файле адрес внешнего почтового сервера в опциях host / port, а также при необходимости добавляем поле from, в котором указывается имя отправителя почты на тот случай, если в внутренний почтовый сервер использует проверку имён отправителя.

Пример заполненного файла:

msmtprc
# Example for a system wide configuration file
 
# A system wide configuration file is optional.
# If it exists, it usually defines a default account.
# This allows msmtp to be used like /usr/sbin/sendmail.
account default
 
# The SMTP smarthost
host kom-smtp.holding.com
port 25
 
# Use TLS on port 465
#port 465
#tls on
#tls_starttls off
 
# Construct envelope-from addresses of the form "user@oursite.example"
#auto_from on
#maildomain oursite.example
 
from KOM-DL20@holding.com
 
# Syslog logging with facility LOG_MAIL instead of the default LOG_USER
syslog LOG_MAIL

Сохраняем конфигурационный файл и тестируем отправку с помощью msmtp:

# echo -e "Subject: mSMTP Test" | msmtp DST-Monitoring@holding.com

Должно прийти письмо с адреса, указанного в опции from в конфиг.файле msmtprc.
Если письмо не приходит, то можно проанализировать лог отправки:

# cat /var/log/mail.log

В Debian 12 (Boorkworm) классический лог-файл /var/log/mail.log отсутствует, поэтому, согласно настроек нашего конфигурационного файла msmtprc искать лог активности msmtp можно в системном логе с помощью journalctl. Первая команда покажет все уже зафиксированные события системного лога. В случае, если событий в логе очень много, мы можем отфильтровать их вывод, оставив только события, касающиеся facility=LOG_MAIL:

# journalctl --system
# journalctl --system --facility=2

Клиент msmtp это sendmail-совместимое приложение, поэтому для любых служб и приложений сервера, использующих вызов sendmail мы сделаем перенаправление на msmtp.
Для начала убедимся в том, что в системе нет действующих ссылок на /usr/sbin/sendmail:

# ls -la /usr/sbin/sendmail

ls: cannot access '/usr/sbin/sendmail': No such file or directory

Слинкуем sendmail с клиентом msmtp:

# ln -s /usr/bin/msmtp /usr/sbin/sendmail
# ls -la /usr/sbin/sendmail

lrwxrwxrwx 1 root root 14 Aug 21 17:47 /usr/sbin/sendmail -> /usr/bin/msmtp

Теперь можно протестировать приложения, использующие отправку почты.
Например, если в системе сконфигурированы программные RAID-массивы mdraid и настроена и сконфигурирована служба оповещений mdmonitor (опции MAILADDR и MAILFROM в /etc/mdadm/mdadm.conf), то можем инициировать разовый тест состояния RAID-устройств с отправкой оповещения:

# mdadm --monitor --scan --test --oneshot

В результате по каждому из устройств mdraid мы должны получить по отдельному письму. Если это произошло, значит настроенный нами механизм оповещений через msmtp работает успешно.


Дополнительные источники информации:

How To Configure mdadm RAID e-mail Notifications via ISP SMTP Using msmtp


Проверено на следующих конфигурациях:

Версия ОС Версия msmtp
Debian GNU/Linux Buster 10.13 1.8.3
Debian GNU/Linux Bullseye 11.7 1.8.11
Debian GNU/Linux Bookworm 12.0 1.8.23

Автор первичной редакции:
Алексей Максимов
Время публикации: 21.08.2020 18:22

Обсуждение

Ваш комментарий:
 
unix-linux/debian/buster/linux-how-to-setup-msmtp-for-email-notifications-to-relayhost-smarthost-in-debian-10-buster.txt · Последнее изменение: 21.06.2023 16:49 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki