07. Postfix: отправка писем через Яндекс
Зачем серверу отправлять письма
Мониторинг, бэкапы, оповещения от fail2ban, unattended-upgrades — все эти сервисы умеют слать email. Если не настроить почту, уведомления останутся в локальном почтовом ящике root, читать который никто не будет.
Мы настроим Postfix как smarthost (релей) через SMTP Яндекса. Письма будут уходить с вашего реального ящика, проходить DKIM и SPF — а значит, не попадать в спам.
Установка Postfix и пакетов
sudo apt update
sudo apt install postfix mailutils libsasl2-modules -y
Во время установки появится окно конфигурации. Выберите Internet Site и введите полное доменное имя (FQDN) вашего сервера, например vds.example.com.
Если окно не появилось — переконфигурируем вручную:
sudo dpkg-reconfigure postfix
Конфигурация smarthost
Редактируем главный конфиг /etc/postfix/main.cf:
sudo nano /etc/postfix/main.cf
Приводим к такому виду (остальное можно оставить по умолчанию):
myhostname = vds.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = loopback-only
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost = [smtp.yandex.ru]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Разберём ключевое:
relayhost— отправляем всё через Яндексsmtp_sasl_auth_enable— включаем авторизациюinet_interfaces = loopback-only— Postfix слушает только локальный интерфейс (наружу не торчит)
Настройка аутентификации
Создаём файл с паролями:
sudo nano /etc/postfix/sasl_passwd
Содержимое:
[smtp.yandex.ru]:587 ваш_логин@yandex.ru:пароль_приложения
Пароль приложения нужно сгенерировать в настройках Яндекса: Безопасность → Пароли приложений. Создайте пароль для «Почты» и укажите его. Основной пароль от Яндекса здесь указывать нельзя — он не пройдёт.
Конвертируем в базу данных:
sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
Проверка конфигурации
sudo postfix check
Если команда не вывела ошибок — всё в порядке. Перезагружаем:
sudo systemctl restart postfix
Смотрим логи:
sudo journalctl -u postfix --no-pager -n 30
Тестовая отправка
Отправляем письмо через mailutils:
echo "Тело письма: сервер работает исправно" | mail -s "Тест Postfix от $(date)" ваш_email@yandex.ru
В /var/log/mail.log проверяем статус:
sudo tail -f /var/log/mail.log
Если письмо не пришло — смотрим причину в логе. Типичные проблемы: неверный пароль приложения, заблокированный SMTP-доступ в настройках Яндекса, или неправильный relayhost.
Настройка root alias
Чтобы письма для root приходили на ваш реальный ящик, редактируем /etc/aliases:
root: ваш_email@yandex.ru
Применяем:
sudo newaliases
Теперь все оповещения от системы (отчёт unattended-upgrades, fail2ban, логи) будут прилетать на почту.
Итог
Postfix настроен как smarthost и раздаёт письма через Яндекс. Теперь автоматические уведомления не скапливаются в системе — они ждут вас в почтовом ящике. В следующей части развернём веб-сервер с Nginx, PHP и бесплатным SSL.
Комментарии
Комментарии пока не подключены.