Thank you for reading this post, don't forget to subscribe!
задача:
- Настроить автоматическое изменение темы сообщений, отправляемых через postfix. На конкретном примере я покажу, как ко всем сообщениям добавлять в тему имя сервера.
- Настроить автоматическую замену адреса отправителя. В моем примере я буду заменять локальный адрес отправителя root на адрес пользователя для отправки почты через внешний сервер яндекса — smtp.yandex.ru.
Замена адреса отправителя может быть полезна в разных ситуациях. Я ее буду использовать конкретно для решения проблемы с отправкой писем через почтовые сервера Яндекса. Для успешной отправки письма, Яндекс требует, чтобы адрес отправителя в письме совпадал с адресом для авторизации на сервере. Если это не будет сделано, то вы получите ошибку во время отправки — Sender address rejected: not owned by auth user.
1 |
May 8 15:13:14 prox-centos7 postfix/smtp[6297]: D84A51807123: to=<zeroxzed@gmail.com>, relay=smtp.yandex.ru[93.158.134.38]:587, delay=0.17, delays=0.02/0.01/0.13/0.01, dsn=5.7.1, status=bounced (host smtp.yandex.ru[93.158.134.38] said: <strong>553 5.7.1 Sender address rejected: not owned by auth user.</strong> (in reply to MAIL FROM command)) |
Происходит это потому, что отправка системных сообщений идет от локального пользователя root. Имя отправителя в письме будет примерно такое — root@prox-centos7.loc. В данном случае prox-centos7.loc это локальное имя сервера. Я его заменю на учетную запись яндекса.
Замена адреса отправителя в postfix
Начнем с подмены отправителя, чтобы можно было сразу тестировать отправку. Для этого добавляем в конфиг postfix /etc/postfix/main.cf следующий параметр.
1 |
smtp_generic_maps = hash:/etc/postfix/generic |
Там же у меня есть такие параметры:
1 2 3 |
myhostname = prox-centos7 mydomain = prox-centos7.loc mydestination = $myhostname |
Файл generic у вас уже должен быть. Если нет, то создайте его. Далее добавляем в него одну строку.
1 |
root@prox-centos7.loc root@sidmid.ru |
root@prox-centos7.loc | Локальный пользователь сервера. |
root@sidmid.ru | Пользователь сервера yandex. В данном случае домен sidmid.ru привязан к почте яндекса. |
Перезапускаем postfix и проверяем отправку.
В логе отправитель локальный, но тем не менее, яндекс успешно отправил письмо, ошибки не было.
Автоматическая замена темы писем в postfix
Переходим к замене темы письма. Для этого добавляем в конфиг postfix /etc/postfix/main.cf следующий параметр.
1 |
header_checks = pcre:/etc/postfix/rewrite_subject |
Создаем файл rewrite_subject следующего содержания:
1 |
/^Subject: (.*)$/ REPLACE Subject: (prox-centos7) $1 |
Это регулярное выражение, которое меняет заголовок письма, начинающийся с Subject. Оно добавляет в начало темы имя сервера в скобках — (prox-centos7). Вы можете добавлять что-то свое. Для тех, кто вообще не разбирается в регулярках, поясню, что в данном случае $1 это исходное содержание темы.
Перезапускаем postfix и проверяем, отправив через консоль письмо.
1 |
# df -h | mail -s "Disk usage" zeroxzed@gmail.com |
Проверяем ящик и видим там письмо с темой prox-centos7