Назад | Перейти на главную страницу

Postfix: выбор узла ретрансляции на основе заголовка From: mail, а не отправителя конверта

Я успешно установил 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

Отказ от ответственности:

У меня это сработало с одним изменением: действие «ФИЛЬТР» нужно добавить в 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]

Видеть http://www.postfix.org/header_checks.5.html