Proxmox: настраиваем отправку важных сообщений по email

Узкоспециализированная заметка, решающая одну проблему. Home Assistant у меня установлен в виртуальную машину, работающую под управлением Proxmox. Когда-нибудь я напишу серию статей про эту замечательную систему, сегодня же я хочу остановиться на вопросе отправки email сообщений о различных событиях, которые требуют вашего внимания.

В частности, на моём сервере каждую ночь средствами Proxmox автоматически создаётся полный бэкап двух виртуальных машин, на которых установлены экземпляры Home Assistant (бывший Hass.io). Наличие ежедневного бэкапа позволяет за считанные минуты вернуть их в работоспособное состояние, если что-то пойдёт не так. В настройках шедулера Proxmox есть возможность указать адрес электронной почты, на который нужно оптавлять сообщения о сбоях, однако документация Proxmox стыдливо умалчивает каким образом можно настроить почту. Эта заметка является вольным переводом сообщения сабреддита homelab и призвана заполнить пробелы в официальной документации. Всё не так сложно, поехали!

Для того, чтобы всё заработало, нам нужно установить и настроить т.н. mail transfer agent (MTA), специальное ПО, предоставляющее другим UNIX программам сервис отправки сообщений. В качестве MTA у нас будет работать написанный ещё в далёком двадцатом веке могучий программный продукт postfix. Так как отправлять сообщения мы будем через SMTP сервер gmail, поэтому данная инструкция рассчитана на его особенности аутентификации. Первым делом залогинимся по ssh на сервер и установим библиотеку для этой самой аутентификации:

apt-get install libsasl2-modules

Если ваш gmail защищён двухфакторной аутентификацией, нужно сгенерировать пароль приложения для Proxmox, перейдя по этой ссылке. Его нужно будет скопировать в файл, который мы сейчас создадим:

nano /etc/postfix/sasl_passwd

Скопируем туда данные нашей учётной записи gmail: smtp.gmail.com youremail@gmail.com:yourpassword. Чтобы выйти из редактора nano не потеряв результаты своего труда, нужно нажать Ctrl+X, потом Y и Enter. Создадим базу данных с паролями для postfix:

postmap hash:/etc/postfix/sasl_passwd

На всякий случай ограничим доступ к файлу с паролями:

chmod 600 /etc/postfix/sasl_passwd

Откроем для редактирования файл конфигурации postfix:

nano /etc/postfix/main.cf

И добавим туда следующие строки:

relayhost = smtp.gmail.com:587 
smtp_use_tls = yes 
smtp_sasl_auth_enable = yes 
smtp_sasl_security_options = 
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd 
smtp_tls_CAfile = /etc/ssl/certs/Entrust_Root_Certification_Authority.pem smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache smtp_tls_session_cache_timeout = 3600s

Сохраним изменения и перезагрузим конфигурацию postfix

postfix reload

Если всё сделано правильно, никаких сообщений об ошибках не появится. Осталось протестировать отправку сообщений:

echo "test message" | mail -s "test subject" youremail@gmail.com

Если найдём в своём почтовом ящике весточку от тестового скрипта, значит всё сделано правильно. Теперь ваш почтовый ящик будет набит не только почтовыми рассылками и спамом, но и (иногда) полезными сообщениями от вашего домашнего сервера.