Настройка Postfix для пересылки почты через публичный почтовый сервер

В случае проблем с сетью компании письма с тревогами могут не отправиться из-за недоступности внутреннего почтового сервера. Для решения этой проблемы можно использовать публичный почтовый сервер (mail.ru, yandex.ru…). В статье показан процесс настройки postfix’а.
Считается, что ОС Debian, Postfix уже поставлен, осталось только его настроить.

Часть 1. Предварительные действия

Для начала необходимо создать ящик (например, на mail.ru) с которого будет отправляться вся почта с мониторинговых и тревожных сообщений. Как это сделать здесь писать не буду.

Но, на момент 2025 года нельзя из Outlook, Thunderbird и других приложений на компе пользователя получать/отправлять почту с теми логином и паролем с которыми вы входите в почту через браузер. Надо создать пароль для внешних приложений и в этой части покажу как это сделать. Для того чтобы его задать, надо в браузере зайти в нужный ящик и левой клавишей мыши тыкаете в настройки пользователя (1), а в открывшемся меню в «Пароль и безопасность» (2).

Затем в «Пароли внешних приложений».

Затем «Создать»

Затем запишите название этого пароля и нажмите  «Продолжить».

Тут без описания.

Здесь надо ввести пароль с которым вы заходите в этог ящик и нажимаете «Подтвердить».

Ну и напоследок записываете/копируете сгенерившийся пароль и нажимаете «Готово».

Все предварительные настройки сделаны, переходим к основной части.


Часть 2. Настройка системы

Для начала идём в /etc/postfix и в файл main.cf добавляем строки:

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
inet_protocols = ipv4
recipient_delimiter = +
relayhost = [smtp.mail.ru]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/passwd

Затем создаём файл passwd (touch /etc/postfix/passwd) и добавляем в него строку:

smtp.mail.ru monitoring@mail.ru:password123

Здесь, вместо password123 вписываем созданный в первой части пароль для внешних приложений.

Затем создаём локальную базу данных на основе этого файла командой:

postmap /etc/postfix/passwd

На выходе получим файл passwd.db


Затем d файл /etc/aliases добавляем строку:

root: i.p.sidorov@gmail.com

Здесь мы видим, что почта со всех локальных аккаунтов (postmaster, nobody…) попадает в ящик root. И указываем, что вся почта которая направляется пользователю root будет пересылаться на ящик i.p.sidorov@gmail.com

И командой newaliases создаём локальную базу данных этого файла.


Перезапускаем сервер командой

systemctl restart postfix

И проверяем отправку командой:

echo "Test body message." | mail -s "$(hostname)" i.p.sidorov@gmail.com

Если письмо пришло (а если не пришло, посмотрите в папке «Спам»), то вы всё сделали правильно.