По сути, я хочу переписать заголовок From: Header с помощью header_checks, но только если почта отправляется в определенный домен.
Проблема с header_check в том, что я не могу проверить комбинацию заголовков To: и From :.
Теперь мне было интересно, можно ли использовать header_checks в сочетании с smtpd_restriction_classes или чем-то подобным.
При поиске в сети я нашел много информации о header_checks и нескольких полях заголовка. Все они в основном говорят мне, что нельзя комбинировать два заголовка для проверки. Но я не нашел никакой информации о том, можно ли было выполнить проверку заголовка только при выполнении условия (например, почта отправляется на example.com).
редактировать:
Проводя еще несколько исследований, я обнаружил следующее статья который предлагает добавить службу в postfix master.cf, использовать транспортную карту для передачи почты для домена этой службе и иметь отдельный header_check, определенный с помощью -o.
Дело в том, что не могу заставить его работать ...
Что я сделал до сих пор, так это добавлял Сервис в master.cf:
example unix - - n - - smtpd
-o header_checks=regexp:/etc/postfix/check_headers_example
Добавление следующей строки в транспортную карту:
example.com example:
И последнее, но не менее важное: у меня есть два файла регулярных выражений для проверки заголовков, один для недавно добавленной службы и один для перенаправления ответов в перезаписанный домен.
check_headers_example:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:$1@mydomain.example.com>$2
Очевидно, что если кто-то ответит, письмо отправится в нирвану, поэтому у меня есть следующие check_headers, определенные в основном процессе постфикса:
/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT $2@mydomain.ain$2
Почему-то Транспорт игнорируется. Любая помощь приветствуется.
Изменить 2:
Я все еще застрял ... Я пробовал следующее:
smtpd_restriction_classes = header_rewrite
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks)
в rewrite_table
существуют следующие записи:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:$1@mydomain.example.com>$2
Все, что меня получает, это NOQUEUE: reject: 451 4.3.5 Server configuration error
. Я не мог найти никаких ресурсов о том, как это сделать, но некоторые люди говорят, что это невозможно.
Изменить 3:
Причина, по которой я задал этот вопрос, заключалась в том, что у нас есть клиент (скажем, customer.com), который использует некоторые псевдонимы, которые пересылают почту в домен, скажем, example.com.
Почтовый сервер example.com не принимает почту с внешнего сервера, исходящую от sender @ example.com.
Таким образом, все письма, отправленные с example.com на alias@customer.com, в конце будут отклонены.
Исключение на почтовом сервере example.com невозможно.
На самом деле мы не решили эту проблему, но попробуем обойти ее, используя списки (mailman) вместо псевдонимов. Это не очень хорошее решение и не настоящее решение.
Буду признателен за все предложения, как это можно сделать должным образом.
Я не уверен, что вы смогли добиться того, чего хотели. Я тестировал аналогичную вещь, мне требовалась фильтрация ключевых слов и т. Д. Для каждого домена, и я мог использовать header_checks для каждого домена или для доменов, которые я хотел, используя функцию нескольких экземпляров postfix.
Вы создаете экземпляр, вы просто меняете порт smtp на этом конкретном экземпляре. Вы используете transport_maps на первичном экземпляре для маршрутизации электронной почты для определенного домена на smtp-порт вторичного экземпляра. И сделайте там все header_checks и ретранслируйте электронную почту!
Ура!
Вы можете настроить новый сервер, направить все домены, которые вы хотите обрабатывать, с помощью транспортного файла, а затем применить правила header_checks на новом сервере.