Ставим утилиты, которые нам понадобятся для настройки и диагностики:
# apt install -y libsasl2-modules mailutilsВ почтовом ящике Яндекса создаём пароль для приложения. Без него не работает smtp аутентификация в сторонних приложениях. После этого создаём файл
/etc/postfix/sasl_passwd следующего содержания:smtp.yandex.ru mailbox@yandex.ru:sjmprudhjgfmrdsФормат такой: имя сервера, логин, пароль приложения.
Дальше создадим ещё один файл
/etc/postfix/generic. Он нам нужен для того, чтобы заменять адрес отправителя. Яндекс разрешает отправлять только тому отправителю, кто является владельцем ящика. В нашем случае mailbox@yandex.ru, а pbs будет пытаться отправлять почту от системного пользователя root@servername.ru. Точно узнать почтовый адрес системного пользователя можно в лог файле postfix - /var/log/mail.log. Там вы увидите попытки отправки, где отправитель будет указан примерно так: 9D8CC3C81DE4: from=<root@pbs.servername.ru>.Содержимое файла
/etc/postfix/generic следующее:root@pbs.servername.ru mailbox@yandex.ruЗаменили локальный ящик на ящик Яндекса.
Назначаем права и формируем хэш файлы:
# postmap hash:/etc/postfix/sasl_passwd hash:/etc/postfix/generic# chmod 600 /etc/postfix/sasl_passwd /etc/postfix/genericРедактируем конфигурационный файл postfix -
/etc/postfix/main.cf. Приводим его к виду:myhostname=pbs.servername.rusmtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)biff = noappend_dot_mydomain = noalias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliasesmydestination = $myhostname, localhost.$mydomain, localhostmynetworks = 127.0.0.0/8inet_interfaces = loopback-onlyrecipient_delimiter = +compatibility_level = 2relayhost = smtp.yandex.ru:465smtp_use_tls = yessmtp_sasl_auth_enable = yessmtp_sasl_security_options =smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwdsmtp_tls_CAfile = /etc/ssl/certs/Entrust_Root_Certification_Authority.pemsmtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cachesmtp_tls_session_cache_timeout = 3600ssmtp_tls_wrappermode = yessmtp_tls_security_level = encryptsmtp_generic_maps = hash:/etc/postfix/genericДо пустой строки то, что было по умолчанию, после - то, что добавил я. Пустое значение
relayhost =, что было по умолчанию, я удалил. Перечитываем конфигурацию postfix:
# postfix reloadИ пробуем отправить тестовое письмо через консоль:
# echo "Message for test" | mail -s "Test subject" zeroxzed@gmail.comВ логе
/var/log/mail.info должно быть примерно следующее: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Письмо успешно доставлено. Теперь надо указать почтовый ящик для локального пользователя root@pam, чтобы почта отправлялась на внешний ящик, а не локальный
/var/spool/mail/root. Сделать это можно через web интерфейс в разделе Configuration ⇨ Access Control. Выбираем пользователя root и в свойствах указываем его ящик. Теперь вся почта, что настроена в PBS для пользователя root@pam будет попадать во внешний ящик. Инструкция будет актуальна и для PVE, только замену адреса отправителя можно не настраивать через консоль, так как в веб интерфейсе есть настройка для этого: Datacenter ⇨ Options ⇨ Email from address.
#proxmox