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

Постфикс: отклонить определенные адреса получателей, даже если они будут указаны в виртуальных картах псевдонимов.

Это будет звучать как небольшая головная боль, но мы переходим с сервера 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, так что это считается ответом.