Подмена отправителя в Postfix
Очень срочно, как обычно вчера, встала задача. В общем необходимо для определенного списка пользователей, домен у них не обязательно одинаковый, при отправки им писем, подменять отправителя.
Прошу помощи в реализации этого! Наверняка у кого-нибудь был подобный опыт!?
при отправки им писем, подменять отправителя
Т.е. пользователю пишут с lusha-klush@gmail.com, а ему приходит письмо с at@fsb.gov.ru?
Или всё-таки наоборот: пользователь пишет письмо с адреса vasya@htaxxx.com а получателю приходит с адреса v.v.p@corporate.example.com?
smtp_generic_maps не подойдёт?
Т.е. у меня есть некий сервис, который производит по определенному правилу рассылку. Рассылку производит с адреса no-reply@mydomain.ru. Есть группа пользователей, например user1@organization1.ru, user2@organisation2.ru, user3@organisation3.ru и т.д. Вот как раз при отправке пользователям из этой группы нужно подменять отправителя с no-reply@mydomain.ru на service@mydomain.ru.
Мне кажется это не то.
Посмотрел в сторону header_checks, но вот никак не могу придумать как в нем делать проверку по группе адресатов и заменять на нужный адрес.
Как изменить тему письма и адрес отправителя через postfix
Хочу поделиться парочкой полезных советов по настройке почтового сервера. Я расскажу, как автоматически изменять тему всех отправляемых сообщений через postfix, а так же подменять адрес отправителя. На днях в комментариях к одной статье про отправку почты, читатель показал простое и интересное решение, которое я решил проверить, дополнить и оформить в виде отдельной статьи.
Цели статьи
Введение
В комментариях читатель захотел использовать один и тот же почтовый ящик для отправки оповещений с нескольких серверов. Для удобной сортировки в ящике получателя нужно было как-то разделить письма по серверам. Когда отправитель один, других надежных признаков для сортировки не найти.
Я сходу предложил решение по автоматическому изменению темы сообщения через postfix, так как предполагал, что он это умеет и не ошибся. Читатель вернулся и подсказал, как это легко и быстро настроить. Я проверил решение, оно реально рабочее, поэтому решил оформить в виде отдельной статьи. Думаю, это будет полезно остальным.
Замена адреса отправителя в postfix
Начнем с подмены отправителя, чтобы можно было сразу тестировать отправку. Для этого добавляем в конфиг postfix /etc/postfix/main.cf следующий параметр.
Там же у меня есть такие параметры:
Файл generic у вас уже должен быть. Если нет, то создайте его. Далее добавляем в него одну строку.
| root@prox-centos7.loc | Локальный пользователь сервера. |
| root@serveradmin.ru | Пользователь сервера yandex. В данном случае домен serveradmin.ru привязан к почте яндекса. |
Перезапускаем postfix и проверяем отправку.
В логе отправитель локальный, но тем не менее, яндекс успешно отправил письмо, ошибки не было.
Автоматическая замена темы писем в postfix
Переходим к замене темы письма. Для этого добавляем в конфиг postfix /etc/postfix/main.cf следующий параметр.
Создаем файл rewrite_subject следующего содержания:
Перезапускаем postfix и проверяем, отправив через консоль письмо.
Проверяем ящик и видим там письмо.
Теперь вы можете настраивать отправку системных писем с разных серверов, используя один и тот же ящик, просто автоматически меняя тему всех почтовых сообщений сервера.
Заключение
Я рекомендую собирать системные сообщения с разных серверов тем или иным способом. Там часто бывает критически важная информация, которая не будет лишней, даже если у вас хорошо настроена система мониторинга, например zabbix.
Если вас интересует настройка полноценного почтового сервера postfix, то у меня есть очень подробная статья на эту тему.
Буду рад полезным замечаниям и дополнениям. Ваши комментарии иногда делают меня умнее 🙂
Перезапись адресов отправителей и получателей при помощи Postfix
Сегодня хочу показать, как можно довольно быстро и легко поднять почтовый релей, который будет подменять адреса и домены отправителей и получателей.
В качестве примеров использования, можно придумать сотни вариантов, но сходу в голову пришли такие сценарии:
Если вы хотите отправлять письма от имени партнера, либо если было какое-нибудь объединение компаний и нужно, чтобы старый домен компании отправителя менялся на новый.
Например, у вас есть группа поддержки, и вы не хотите, чтобы определенные получатели видели индивидуальные ящики пользователей, а к примеру, чтобы получатель видел, что письма приходят с адреса [email protected] – можно подменить в каждом письме ящик участника, и всегда адреса пользователей будут меняться на support.
Устанавливаем postfix и postfix-pcre. Последний нужен для того, чтобы была возможность править заголовки:
Идём в папку /etc/postfix и создаём там файл конфигурации – main.cf:
Следующего содержимого файла должно хватить:
compatibility_level = 2
#queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix/sbin
data_directory = /var/lib/postfix
#Правка заголовков, при помощи этого хозяйства можно скрыть информацию о предыдущих серверах и id писем, где может фигурировать домен, который нужно подменять.
smtp_header_checks = pcre:/etc/postfix/anon-headers.pcre
#разрешаем пересылку для домена externaldomain.com
relay_domains = externaldomain.com
#включаем работу правил транспорта
transport_maps = hash:/etc/postfix/transport
#собственно включаеи rewrite
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
smtp_generic_maps = hash:/etc/postfix/generic
local_recipient_maps =
unknown_local_recipient_reject_code = 550
Далее нужно создать файл при помощи которого будет осуществляться правка заголовков:
Содержимое примерно такое:
Далее создадим правило транспорта, чтобы почта пришедшая на наши домены пересылалась на нужные почтовые серверы:
externaldomain.com smtp:[192.168.1.200]
yourlocaldomain.loc smtp:[192.168.1.200]
Создаем файл перезаписи адресов:
Пример его содержимого:
Тут видно, что меняются как внешний так и внутренний домен. Это нужно, что бы была возможность менять адреса не только при отправке почты, но и при приёме. Также для примера показана смена конкретного адреса.
Применяем:
Создаём еще один файл перезаписи адресов:
Также может потребоваться добавить внешний домен в файл hosts:
В конец файла нужно добавить строчку:
Всё, теперь во всех письмах проходящих через ваш релей будет меняться адрес отправителя/получателя в соответсвии с вашими правилами. Остается только направить письма, для которых треубется осуществить замену адреса, через этот релей. Например в Exchange – можно добавить Send Connector, для определенных доменов, и в качестве Smart Host указать адрес только что настроенного сервера.
Следить за тем, что происходит можно в логах mail.log:
Также не лишним будет следить за здоровьем вашего нового релея, поможет в этом утилита pflogsumm:
Соответственно можно сохранить этот скрипт, добавить его в cron и будет приходить письмо о состоянии здоровья сервера.
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Подменить адрес e-mail FROM POSTFIX
Доброго дня!
Имеется установленный почтовый сервер, где в качестве МТА работает postfix. Подключен внешний фильтр содержимого — amavisd-new:
content_filter = smtp-amavis:[127.0.0.1]:10024
Далее я реализовал следующее, как описано здесь
То есть происходит ротация Ай-Пи адресов при отправке
master.cf
ну а сам файл
/etc/postfix/random.pl
нет смысла приводить, там описана функция ротации
На сервере установлена php-программа для рассылки e-mail. Основной поток исходящих сообщений идет от этой программы через /usr/sbin/sendmail
Причем, эта программа использует в качестве e-mail адреса FROM: (от кого) — адрес Return-Path: и в рамках одной сессии этот адрес один и тот же для всех писем. В нашем случае он @oni4you.ru
Теперь перехожу к своему вопросу.
Мне необходимо в процессе ротации подменять в заголовках писем адрес Return-Path: на тот адрес, с которого в данный момент идет отправка. Например, если в данный момент идет отправка через rotate2, то необходимо подменить адрес @oni4you.ru на @mail2.oni4you.ru, а если отправка идет через rotate1, то адрес @oni4you.ru надо подменить на @mail1.oni4you.ru
Смысл данной операции — правильное формирование DKIM подписания в заголовках входящих писем у почтовых провайдеров. Вот здесь я более подробно объясняю причину того, для чего надо подменять адреса.
Я для этого прописал дополнительно sender_canonical_maps:
Создал два файла canonical_maps1.cf и canonical_maps2.cf
canonical_maps1.cf
Postfix. Замена адреса отправителя.
Здравствуйте, помогите пожалуйста решить следующую проблему: Есть нормально работающий сервер на postfix, сделана привязка к AD. Необходимо настроить postfix так, чтобы пользователям определенной группы, например office при отправке почты во внешний мир обратный адрес заменялся на office@mydomain.ru. А при получении почты на адрес office@mydomain.ru происходила рассылка всем членам группы office.
Что уже делалось: 1. Создана группа рассылки office в AD, в нее добавлены пользователи. 2. Почта, приходящая на office@mydomain.ru рассылается всем членам группы. 3. При настройке smtp_generic_maps = hash:/etc/postfix/generic со списком замен адреса отправителя, адрес отправителя меняется, но перестает получаться вся почта на адрес office@mydomain.ru.
Помогите пожалуйста разобраться.
smtp_generic_maps подменяет, но он не создает ящик office@mydomain.ru, те скорее всего вам нужно просто сделать office@mydomain.ru алиасом для группы или еще как-то указать постфиксу, то он существует и является рассылочным листом.
те мы оставляем smtp_generic_maps с существующими настройками, но так же создаем ящик/алис office@mydomain.ru
В логах postfix следующее:
А как выглядит лог при без подмены адреса? Логически можно предположить, что отвечающие тупо давят (в почтовом клиенте) на кнопульку =Ответить= и ответ летит на вымышленный алиас. Хотя по логу не скажешь.












