Я успешно установил Postfix для ретрансляции писем через Mandrill, используя SASL и sender_dependent_relayhost_maps
с таблицей MySQL, чтобы разные отправители подключались к Mandrill, используя свое собственное имя пользователя Mandrill и ключ API.
Пока все хорошо, но у меня есть три пользователя, которые все используют поставщика услуг электронной почты, а отправитель в конверте сообщения установлен на «mailer@infusionmail.com» для всех трех пользователей, и это единственное место, содержащее фактический адрес электронной почты пользователя. адрес находится в От: заголовок электронного письма.
Я доволен безопасностью (или ее отсутствием) использования От: заголовок электронного письма поскольку я пересылаю только письма, отправленные на определенные адреса электронной почты, которые строго контролируются, но я был бы очень благодарен за предложения относительно того, как я могу лучше всего указать relayhost на основе значения От: заголовок. Есть ли способ установить значение конверта таким же, как в поле От? Или каким-то другим способом сделать это?
На основе этой ветки в списке рассылки postfix: другой транспорт для всей почты введен через sendmail (1), похоже, ваш случай был возможен. К сожалению, нельзя полагаться только на два стола sender_dependent_relayhost_maps
и smtp_sasl_password_maps
. Вам нужно изменить master.cf
. Идея использует header_checks
для маршрутизации электронной почты на другой транспорт. Затем в каждом транспорте мы определяем клиента smtp, который использует независимые учетные данные и relayhost.
Сначала определите header_checks в main.cf и его таблице pcre
#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay
#/etc/postfix/header_dependent_relay
/^From:.*specialsender1\@example\.com/ smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/ smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/ smtp3:[host3.example.com]
Хорошо, теперь мы настраиваем smtp1
,smtp2
,smtp3
транспорт в master.cf
#master.cf
smtp1 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay
файл smtpX.relay
имеет похожий контент, например
[hostX.example.com] userX:passwordX
Отказ от ответственности:
smtp_sasl_password_maps
есть только для примера. Вы можете заменить его таблицей mysql.У меня это сработало с одним изменением: действие «ФИЛЬТР» нужно добавить в header_dependent_relay файл:
#/etc/postfix/header_dependent_relay
/^From:.*specialsender1\@example\.com/ FILTER smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/ FILTER smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/ FILTER smtp3:[host3.example.com]