====== Настройка на Proxmox Backup Server отправки email уведомлений ======

Ставим утилиты, которые нам понадобятся для настройки и диагностики:
<code bash># apt install -y libsasl2-modules mailutils</code>

В почтовом ящике Яндекса создаём пароль для приложения. Без него не работает smtp аутентификация в сторонних приложениях. После этого создаём файл **/etc/postfix/sasl_passwd** следующего содержания:
<code bash>smtp.yandex.ru mailbox@yandex.ru:sjmprudhjgfmrds</code>
Формат такой: имя сервера, логин, пароль приложения. 

Дальше создадим ещё один файл **/etc/postfix/generic**. Он нам нужен для того, чтобы заменять адрес отправителя. Яндекс разрешает отправлять только тому отправителю, кто является владельцем ящика. В нашем случае mailbox@yandex.ru, а pbs будет пытаться отправлять почту от системного пользователя root@servername.ru. Точно узнать почтовый адрес системного пользователя можно в лог файле postfix - **/var/log/mail.log**. Там вы увидите попытки отправки, где отправитель будет указан примерно так: 9D8CC3C81DE4: from=<root@pbs.servername.ru>.

Содержимое файла **/etc/postfix/generic** следующее:
<code bash>root@pbs.servername.ru mailbox@yandex.ru</code>
Заменили локальный ящик на ящик Яндекса. 

Назначаем права и формируем хэш файлы:
<code bash># postmap hash:/etc/postfix/sasl_passwd hash:/etc/postfix/generic
# chmod 600 /etc/postfix/sasl_passwd /etc/postfix/generic</code>

Редактируем конфигурационный файл postfix - **/etc/postfix/main.cf**. Приводим его к виду:

<code bash>myhostname=pbs.servername.ru
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
inet_interfaces = loopback-only
recipient_delimiter = +
compatibility_level = 2

relayhost = smtp.yandex.ru:465
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
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic</code>

До пустой строки то, что было по умолчанию, после - то, что добавил я. Пустое значение relayhost =, что было по умолчанию, я удалил. 

Перечитываем конфигурацию postfix:
<code bash># postfix reload</code>
И пробуем отправить тестовое письмо через консоль:
<code bash># echo "Message for test" | mail -s "Test subject" zeroxzed@gmail.com</code>
В логе **/var/log/mail.info** должно быть примерно следующее:
<code bash>Sep 29 21:47:24 pbs postfix/pickup[640930]: E282E3C820D6: uid=0 from=<root@pbs.servername.ru>
Sep 29 21:47:25 pbs postfix/cleanup[640993]: E282E3C820D6: message-id=<20230929184724.E282E3C820D6@pbs.servername.ru>
Sep 29 21:47:25 pbs postfix/qmgr[640929]: E282E3C820D6: from=<root@pbs.servername.ru>, size=348, nrcpt=1 (queue active)
Sep 29 21:47:25 pbs postfix/smtp[640994]: E282E3C820D6: to=<zeroxzed@gmail.com>, relay=smtp.yandex.ru[77.88.21.158]:465, delay=1.1, delays=0.34/0.01/0.51/0.2, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net 1696013245-PlXVUC7DXqM0-wnVoD1Uo)
Sep 29 21:47:25 pbs postfix/qmgr[640929]: E282E3C820D6: removed</code>

Письмо успешно доставлено. Теперь надо указать почтовый ящик для локального пользователя root@pam, чтобы почта отправлялась на внешний ящик, а не локальный /var/spool/mail/root. Сделать это можно через web интерфейс в разделе Configuration ⇨ Access Control. Выбираем пользователя root и в свойствах указываем его ящик. Теперь вся почта, что настроена в PBS для пользователя root@pam будет попадать во внешний ящик. 

Инструкция будет актуальна и для PVE, только замену адреса отправителя можно не настраивать через консоль, так как в веб интерфейсе есть настройка для этого: Datacenter ⇨ Options ⇨ Email from address.