Доброго дня!
Имеется установленный почтовый сервер, где в качестве МТА работает postfix. Подключен внешний фильтр содержимого — amavisd-new:
Далее я реализовал следующее, как описано здесь
То есть происходит ротация Ай-Пи адресов при отправке
master.cf
main.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
canonical_maps2.cf
Выполнил
для каждого по отдельности.
Дело в том, что вышеприведенный код работает, ротация происходит. Но не работает эта самая строчка sender_canonical_maps, то есть подмены не происходит.
Подскажите пожалуйста, почему не работает подмена адресов?
Причем, если прописать в main.cf
то подмена начинает работать. Но работать неправильно, потому что постфикс читает только первую карту canonical_maps1.cf и подменяет адреса согласно этой карты всем подряд.
Складывается такая ситуация, что без указания опции sender_canonical_maps
в main.cf (только лишь в master.cf) постфикс отказывается подменять адреса. Но указать правильно ротацию в main.cf не удается. Замкнутый круг получается…
Имеется установленный почтовый сервер, где в качестве МТА работает postfix. Подключен внешний фильтр содержимого — amavisd-new:
content_filter = smtp-amavis:[127.0.0.1]:10024
Далее я реализовал следующее, как описано здесь
То есть происходит ротация Ай-Пи адресов при отправке
master.cf
127.0.0.1:2527 inet n n n - 0 spawn
user=nobody argv=/etc/postfix/random.pl
# random smtp
rotate1 unix - - n - - smtp
-o smtp_bind_address=185.14.28.20
-o smtp_helo_name=mail1.oni4you.ru
-o myhostname=mail1.oni4you.ru
-o syslog_name=postfix-rotate1
rotate2 unix - - n - - smtp
-o smtp_bind_address=185.14.28.21
-o smtp_helo_name=mail2.oni4you.ru
-o myhostname=mail2.oni4you.ru
-o syslog_name=postfix-rotate2
rotate3 unix - - n - - smtp
-o smtp_bind_address=185.14.30.83
-o smtp_helo_name=oni4you.ru
-o myhostname=mx.oni4you.ru
-o syslog_name=postfix-rotate3
main.cf
transport_maps = tcp:127.0.0.1:2527
127.0.0.1:2527_time_limit = 3600s
ну а сам файл
/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:
127.0.0.1:2527 inet n n n - 0 spawn
user=nobody argv=/etc/postfix/random.pl
# random smtp
rotate1 unix - - n - - smtp
-o smtp_bind_address=185.14.28.20
-o smtp_helo_name=mail1.oni4you.ru
-o myhostname=mail1.oni4you.ru
-o syslog_name=postfix-rotate1
-o sender_canonical_maps=hash:/etc/postfix/canonical_maps1.cf
rotate2 unix - - n - - smtp
-o smtp_bind_address=185.14.28.21
-o smtp_helo_name=mail2.oni4you.ru
-o myhostname=mail2.oni4you.ru
-o syslog_name=postfix-rotate2
-o sender_canonical_maps=hash:/etc/postfix/canonical_maps2.cf
rotate3 unix - - n - - smtp
-o smtp_bind_address=185.14.30.83
-o smtp_helo_name=oni4you.ru
-o myhostname=mx.oni4you.ru
-o syslog_name=postfix-rotate3
Создал два файла canonical_maps1.cf и canonical_maps2.cf
canonical_maps1.cf
@oni4you.ru @mail1.oni4you.ru
canonical_maps2.cf
@oni4you.ru @mail2.oni4you.ru
Выполнил
# postmap hash:/etc/postfix/canonical_maps
для каждого по отдельности.
Дело в том, что вышеприведенный код работает, ротация происходит. Но не работает эта самая строчка sender_canonical_maps, то есть подмены не происходит.
Подскажите пожалуйста, почему не работает подмена адресов?
Причем, если прописать в main.cf
sender_canonical_maps=hash:/etc/postfix/canonical_maps1.cf, hash:/etc/postfix/canonical_maps2.cf
то подмена начинает работать. Но работать неправильно, потому что постфикс читает только первую карту canonical_maps1.cf и подменяет адреса согласно этой карты всем подряд.
Складывается такая ситуация, что без указания опции sender_canonical_maps
в main.cf (только лишь в master.cf) постфикс отказывается подменять адреса. Но указать правильно ротацию в main.cf не удается. Замкнутый круг получается…