===== Как настроить отсылку уведомлений на внешний почтовый сервер с помощью msmtp в Debian GNU/Linux ===== {{:unix-linux:debian:pasted:20170319-123914.png }} Не смотря на то, что [[https://wiki.debian.org/Exim|в документе]] указано то, что **Exim** поставляется в **Debian Linux** по умолчанию, как это было [[unix-linux:debian:jessie:linux-how-to-setup-exim4-for-email-notifications-to-relayhost-in-debian-8-jessie|в предыдущих версиях Debain]], свежеустановленный **Debian Buster** не имеет никакого ПО для отправки электронной почты за пределы сервера. Предположим, у нас в организации уже имеется почтовый сервер и нам нужно сделать так, чтобы письма, сформированные всевозможными локальными службами и приложениями на нашей Linux-системе, пересылались на этот почтовый сервер (relayhost/smarthost). Для решения этой задачи мы можем установить в систему простой и легковесный почтовый клиент, умеющий выполнять такую пересылку - [[https://wiki.debian.org/msmtp|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'', в котором указывается имя отправителя почты на тот случай, если в внутренний почтовый сервер использует проверку имён отправителя. Пример заполненного файла: # 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** работает успешно. ---- Дополнительные источники информации: [[https://ubuntuforums.org/showthread.php?t=1185134|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 | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 21.08.2020 18:22 {{tag>Linux Debian "Debian 10" "Debian 11" "Debian 12" "Debian Buster" "Debian Bullseye" "Debian Bookworm" msmtp mail email smarthost relayhost SMTP sendmail mdraid mdmonitor mdadm}} ~~DISCUSSION~~