Proxmox. Настройка отправки уведомлений через Яндекс почту

После установки Proxmox 7 в одном удаленном объекте, решил настроить отправку уведомлений через Яндекс почту. И сделал заметку, чтобы в следующий раз не тратить время.

Чтобы сервер отправлял письма и они доходили на бесплатные почтовые сервисы, нужно настроить отправку, через реальный почтовый ящик. Proxmox использует для этого Postfix. Настроим его.

Откроем консоль сервера и доставим недостающие модули

apt install postfix-pcre libsasl2-modules

Сделаем бэкап конфигурационного файла Postfix

cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

Отредактируем этот файл

mcedit /etc/postfix/main.cf 

Жирным выделены добавленная конфигурация



# See /usr/share/postfix/main.cf.dist for a commented, more complete version

myhostname=pve1.hserv.su

default_transport = smtp

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost = [smtp.yandex.ru]:587
mynetworks = 127.0.0.0/8
inet_interfaces = loopback-only
recipient_delimiter = +

compatibility_level = 2

header_checks = pcre:/etc/postfix/rewrite_subject
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relayhost.hash
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_auth.hash
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_generic_maps = hash:/etc/postfix/generic

Создаем хеш файл авторизации для доступа к почтовому ящику. Далее по коду везде вместо youremail и yourpassword подставьте ваш логин и пароль

Откроем файл

mcedit /etc/postfix/sasl_auth.hash

Добавим в него следующую строчку

[smtp.yandex.ru]:587 youremail@yandex.ru:yourpassword

Создаем хеш файл sender_relayhost. Откроем файл

mcedit /etc/postfix/sender_relayhost.hash

Добавим в него следующую строчку, скобки [ ] обязательны!

youremail@yandex.ru [smtp.yandex.ru]:587

Чтобы отправка через Яндекс работала, нужно чтобы адрес отправителя в письме совпадал с адресом авторизации на почтовом сервере. Для этого поменяем адрес локального отправителя на Яндекс. Откроем файл generic

mcedit  /etc/postfix/generic

Добавим в него

root@yournameserver youremail@yandex.ru

Пример для моей установки:

root@pve1.hserv.su mymail@yandex.ru

Зашифруем файлы с помощью postmap

postmap /etc/postfix/sender_relayhost.hash
postmap /etc/postfix/sasl_auth.hash
postmap /etc/postfix/generic

Установим права доступа, на созданные файлы

chmod 0600 /etc/postfix/sasl_auth.*

Чтобы письма от proxmox было легче сортировать в почтовой программе, откроем файл

mcedit /etc/postfix/rewrite_subject

Добавим в него

/^Subject: (.*)$/ REPLACE Subject: [pve]: $1

Это выражение, которое меняет заголовок письма, начинающийся с Subject. Оно добавит в начало темы фразу: [pve]:, по которому легко сортировать.

На этом настройка Postfix закончена, осталось применить внесенные настройки

service postfix restart

Давайте проверим отправку писем

echo "Test from proxmox" | mail -s test my-email@mail.ru

Если система нам ругнется


-bash: mail: command not found

То поставим следующий пакет

apt install mailutils -y

Вот и результат:

Если письма не приходят смотрим логи

cat /var/log/mail.log | grep postfix

Одной из ошибок, может быть настройки безопасности Яндекс. Проверьте, разрешен ли доступ к почте для сторонних почтовых программ.

Заключение

Как видим из заметки, настройка отправки почты, достаточно легко организовать. Особенно полезно в тех местах, где нет своего почтового сервера, или нет постоянного технического персонала, для обслуживания сервера.

5 ответов к «Proxmox. Настройка отправки уведомлений через Яндекс почту»

  1. Огромное спасибо!
    Перепробовал много мануалов и по postfix и по exim4, но только по Вашей статье отправка реально заработала.

    1. Александр, рад был помочь! Я и написал статью, как раз по той же причине. Когда у меня заработало, я решил поделиться результатом!

  2. У меня заработала только такая конфигурация:
    myhostname=yourhostname

    default_transport = smtp

    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
    relayhost = [smtp.yandex.ru]:465
    mynetworks = 127.0.0.0/8
    inet_interfaces = loopback-only
    recipient_delimiter = +

    compatibility_level = 9999

    header_checks = pcre:/etc/postfix/rewrite_subject
    smtp_sender_dependent_authentication = yes
    sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relayhost.hash
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_auth.hash
    smtp_sasl_security_options = noanonymous
    smtp_use_tls = yes
    smtp_tls_CAfile = /etc/ssl/certs/ca_yandex.pem
    smtp_generic_maps = hash:/etc/postfix/generic
    smtp_tls_wrappermode = yes
    smtp_tls_security_level = encrypt

    предварительно установил сертификат yandex:
    openssl s_client -starttls smtp -crlf -connect smtp.yandex.ru:25

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.