Это будет звучать как небольшая головная боль, но мы переходим с сервера Sendmail на сервер Postfix, чтобы обрабатывать маршрутизацию почты в нашей сети, выборочно определяя, какие адреса приводят к тому, что почта перенаправляется в разные места (или просто переписывается на другой @domain). Таким образом, домены, которые обрабатываются этой системой, находятся в virtual_alias_domains
список.
Проблема в том, что у нас есть несколько адресов, которые мы хотим всегда отклонять, и мы также см. адреса в virtual_alias_domains
все в конце конфига. По сути, мы делаем следующее и ссылаемся на этот файл в virtual_alias_maps
директива:
/etc/postfix/virtusertable:
...
@domain.tld @internal.domain.tld
Мы хотим иметь возможность REJECT
вместе с сообщением «Получатель отклонен политикой», поэтому мы попытались сформулировать его следующим образом:
/etc/postfix/recipient-access:
baduser@domain.tld REJECT Recipient rejected by policy.
baduser@ REJECT Recipient rejected by policy.
и файл, указанный в конфигурации для обоих smtpd_recipient_restrictions
и smtp_relay_restrictions
с участием ... check_recipient_access hash:/etc/postfix/recipient-access ...
Проблема в том, что мы ожидаем, что он вернет ответ «Отклонено» или аналогично «Запрещено», когда почта, предназначенная для этой цели, доставляется на почтовый сервер, и до того, как она будет перезаписана и ретранслируется на следующее звено в цепочке. Однако при обработке путем тестирования с sendmail -bv baduser@domain.tld
, Postfix сообщает, что письмо можно доставить (даже если доставка не была предпринята), а не «отклонено» и т.п.
Я не уверен, где двигаться дальше, чтобы установить такие правила «отклонения». Похоже, у нас это «работает» в системе Sendmail, но мы хотим избавиться от этой злой системы и заменить ее системой Postfix.
Обратите внимание, что мы пытаемся максимально приблизить конфигурацию Sendmail. Мы В настоящее время все работает, кроме отклонения определенных адресов, и не знаете, что делать дальше ...
Наконец-то я нашел решение, но мне пришлось потрудиться #postfix
IRC-канал на Freenode, чтобы получить его. Предложили использовать header_checks
вместо этого для правильной обработки заголовков с помощью регулярного выражения или аналогичного для определения политики отклонения.
Итак, я сделал это. Я поставил на место header_checks = regexp:/etc/postfix/header_checks
в main.cf
файл для PostFix, а затем настройте правила, как показано в /etc/postfix/header_checks
файл:
/etc/postfix/header_checks:
/^To: baduser@domain.tld/ REJECT Recipient rejected by policy.
/^To: baduser@/ REJECT Recipient rejected by policy.
Это можно расширить, чтобы проверить определенные поля «От» или другие элементы в заголовках. При этом вы должны немного знать свое регулярное выражение, чтобы оно работало. Вы могли бы использовать /^From: somwhere@evildoer.tld/
для полей From или чего-то еще, но вам нужен /^
часть в начале регулярного выражения для правильной работы.
Жаль, что это не более четко документировано, но я смог решить проблему с помощью header_checks
, так что это считается ответом.