Home » Linux » Как изменить тему письма и адрес отправителя через postfix

Как изменить тему письма и адрес отправителя через postfix

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

Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .

Цели статьи

  1. Настроить автоматическое изменение темы сообщений, отправляемых через postfix. На конкретном примере я покажу, как ко всем сообщениям добавлять в тему имя сервера.
  2. Настроить автоматическую замену адреса отправителя. В моем примере я буду заменять локальный адрес отправителя root на адрес пользователя для отправки почты через внешний сервер яндекса - smtp.yandex.ru.

Введение

Данная статья будет написана по мотивам другого материала - отправка почты через консоль с авторизацией. В целом, там представлено законченное решение, но в некоторых случаях требуется дополнительная настройка.

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

Я сходу предложил решение по автоматическому изменению темы сообщения через postfix, так как предполагал, что он это умеет и не ошибся. Читатель вернулся и подсказал, как это легко и быстро настроить. Я проверил решение, оно реально рабочее, поэтому решил оформить в виде отдельной статьи. Думаю, это будет полезно остальным.

Замена адреса отправителя может быть полезна в разных ситуациях. Я ее буду использовать конкретно для решения проблемы с отправкой писем через почтовые сервера Яндекса. Для успешной отправки письма, Яндекс требует, чтобы адрес отправителя в письме совпадал с адресом для авторизации на сервере. Если это не будет сделано, то вы получите ошибку во время отправки - Sender address rejected: not owned by auth user.

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: 553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command))

Происходит это потому, что отправка системных сообщений идет от локального пользователя root. Имя отправителя в письме будет примерно такое - root@prox-centos7.loc. В данном случае prox-centos7.loc это локальное имя сервера. Я его заменю на учетную запись яндекса.

Замена адреса отправителя в postfix

Начнем с подмены отправителя, чтобы можно было сразу тестировать отправку. Для этого добавляем в конфиг postfix /etc/postfix/main.cf следующий параметр.

smtp_generic_maps = hash:/etc/postfix/generic

Там же у меня есть такие параметры:

myhostname = prox-centos7
mydomain = prox-centos7.loc
mydestination = $myhostname

Файл generic у вас уже должен быть. Если нет, то создайте его. Далее добавляем в него одну строку.

root@prox-centos7.loc root@serveradmin.ru
root@prox-centos7.loc Локальный пользователь сервера.
root@serveradmin.ru Пользователь сервера yandex. В данном случае домен serveradmin.ru привязан к почте яндекса.

Перезапускаем postfix и проверяем отправку.

Автоматическая замена отправителя в postfix

В логе отправитель локальный, но тем не менее, яндекс успешно отправил письмо, ошибки не было.

Автоматическая замена темы писем в postfix

Переходим к замене темы письма. Для этого добавляем в конфиг postfix /etc/postfix/main.cf следующий параметр.

header_checks = pcre:/etc/postfix/rewrite_subject

Создаем файл rewrite_subject следующего содержания:

/^Subject: (.*)$/ REPLACE Subject: (prox-centos7) $1

Это регулярное выражение, которое меняет заголовок письма, начинающийся с Subject. Оно добавляет в начало темы имя сервера в скобках - (prox-centos7). Вы можете добавлять что-то свое. Для тех, кто вообще не разбирается в регулярках, поясню, что в данном случае $1 это исходное содержание темы.

Перезапускаем postfix и проверяем, отправив через консоль письмо.

# df -h | mail -s "Disk usage" zeroxzed@gmail.com

Автоматическая замена темы сообщения

Проверяем ящик и видим там письмо.

Измененная тема через postfix

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

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Я рекомендую собирать системные сообщения с разных серверов тем или иным способом. Там часто бывает критически важная информация, которая не будет лишней, даже если у вас хорошо настроена система мониторинга, например zabbix.

Если вас интересует настройка полноценного почтового сервера postfix, то у меня есть очень подробная статья на эту тему.

Буду рад полезным замечаниям и дополнениям. Ваши комментарии иногда делают меня умнее :)

Онлайн курс Основы сетевых технологий

Теоретический курс с самыми базовыми знаниями по сетям. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:
  • На каком уровне модели OSI могут работать коммутаторы;
  • Как лучше организовать работу сети организации с множеством отделов;
  • Для чего и как использовать технологию VLAN;
  • Для чего сервера стоит выносить в DMZ;
  • Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
  • и многое другое.
Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

11 комментариев

  1. Аватар

    Добрый вечер!
    После настройки и при проверке отправки письма вылетает такая ошибка ? Что не так сделал ?
    send-mail: fatal: /etc/postfix/main.cf, line 43: missing '=' after attribute name: root@cnt6 igoronik@yandex.ru

  2. Аватар
    Никита

    Спасибо за статью Владимир. Единственное дополнение. После изменения в файле /etc/postfix/generic необходимо выполнить команду
    postmap /etc/postfix/generic , иначе будут ошибка и предупреждение:
    error: open database /etc/postfix/generic.db
    warning: hash:/etc/postfix/generic is unavailable. open database /etc/postfix/generic.db: No such file or directory

  3. Аватар
    Сергей

    В CentOS 8 директива header_checks = pcre:/etc/postfix/rewrite_subject
    не работает.
    Теперь она выглядит так:
    header_checks = regexp:/etc/postfix/rewrite_subject

  4. Аватар
    Сергей

    А как изменить отправителя? Сейчас все время отправка от root.

  5. Leonid Mamchenkov

    Полезно, спасибо!

    А для тех случаев, когда нет возможности настроить сервер, можно использовать lifehack с Gmail-ом: добавлять +something к local part. Например: писмьа для user+server1@gmail.com и user+server2@gmail.com будут доставлены пользователю user@gmail.com, который их сможет сортировать по полю To. Особенно полезно для отслеживания сервисов, которые сливают вашу инфу. Типа user+facebook@gmail.com, user+twitter@gmail.com ... Если видим спам приходящий на user+facebook@gmail.com, то очевидно, что это через facebook. Можно блокировать, итд.

    Говорят, что это работает и с некоторыми другими почтовыми сервисами. Кстати, вот и мысль для следующей статьи - как настроить почтовик (postfix/exim), чтоб у вас точно также работало на входящую почту. :)

    • Zerox

      Прикольная штука. Я не знал про этот функционал, спасибо. Для сбора тех же логов с разных серверов подойдет. Можно вообще postfix не трогать.

    • Аватар
      Дмитрий

      Спасибо за подсказку, на майл.ру проверил - работает

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.