Постфикс: Измените адрес отправителя на основе получателя

У нас есть Постфиксный сервер, который получает почту от наших серверов приложений. Отправители находятся в форме user@host.fqdn (где host.fqdn может варьироваться, в зависимости от исходного сервера), и получатели могут быть внутренними или внешними пользователями.

Сообщениям, идущим к внешним пользователям, нужно изменить отправителя на user@domain.com. Я попытался использовать канонические карты, но так как это обрабатывается демоном очистки, прежде чем любые транспортные решения будут приняты, это влияло бы на все адреса отправителя.

Я также попытался создать пользовательский транспорт smtp с универсальными отображениями и настроить transport_maps для использования того пользовательского транспорта smtp для внешних доменов. Однако универсальные отображения влияют и на отправителя и на адреса получателя.

Наконец, я попробовал следующее:

  • Создайте пользовательского smtpd демона, который указывает отправителя канонические карты и уникальная транспортная таблица.
  • Отправьте всю внешне обращенную почту тому пользовательскому демону. Идеально, отправитель, канонические карты преобразовали бы адрес отправителя и уникальную транспортную таблицу, передаст сообщения к Интернету.

Однако очевидно только одна транспортная таблица может использоваться на Постфиксный экземпляр.

Я не хочу создавать совершенно новый Постфиксный экземпляр для размещения этой перезаписи. Какие-либо предложения? (и заранее спасибо)

2
задан 13 December 2012 в 23:46
1 ответ

Отказ от ответственности: этот ответ не будет работать должным образом при обработке электронной почты, имеющей несколько получателей с внутренним и внешним доменом

При использовании нескольких экземпляров postfix решение было бы тривиальным. Просто установите transport_maps во второй экземпляр, затем выполните перезапись во втором экземпляре.

Без нескольких экземпляров вам понадобятся два процесса smptd, два процесса очистки и карта доступа . идея состоит в том, чтобы фильтровать карты доступа вместо transport_maps. Когда у электронного письма есть получатель из внешнего домена, оно передается второму демону smtpd. Затем второй демон smtpd вызовет второго демона очистки. У первого демона очистки не будет параметра канонических карт, а во втором демоне очистки мы добавим этот параметр для перезаписи.

В main.cf определите check_recipient_access в ограничении smtpd _ * _. Например:

smtpd_recipient_restriction =
   ... 
   check_recipient_access hash:/etc/postfix/external-filter
   ... 

В файле external-filter определите механизм фильтрации

external.example.com    FILTER smtp:[127.0.0.1]:12525

В этом примере мы настроим второй демон smtpd, который будет прослушивать 127.0.0.1 порт 12525.

Теперь настройте второй smtpd и Демон очистки в master.cf

[127.0.0.1]:12525  ....  smtpd -o cleanup_service_name=cleanup_rewrite

cleanup_rewrite .... cleanup -o canonical_maps=hash:/etc/postfix/mysender_rewriting

Файл mysender_rewriting будет содержать отображение отправителя, как вы и предполагали.

2
ответ дан 3 December 2019 в 11:50

Теги

Похожие вопросы