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

Postfix: как перенаправить отдельный адрес электронной почты в зависимости от отправителя

Пытаюсь добавить правило в Postfix.

Моя цель такова: когда кто-нибудь, КРОМЕ (server@example.com) отправляет электронное письмо на (info@example.com), пересылает его на (sales@example.com). Если server@example.com отправляет почту, просто позвольте ей пройти. Напомним, что если отправитель НЕ server@example.com, перенаправьте сообщение на sales@example.com. Если отправитель IS server@example.com, не перенаправляйте.

К вашему сведению, info@example.com - это псевдоним, определенный в / etc / postfix / virtual, который отправляется нескольким получателям.

Я использую pcre header_checks, но он просто не работает - ничего не происходит, и вся почта отправляется, как и раньше, без перенаправления.

Если есть лучший / простой способ сделать это, я весь уши!

Итак, согласно инструкциям в эта почта и эта почта Я добавил следующие строки в main.cf и headers_check:

main.cf:

header_checks = pcre:/etc/postfix/headers_check

/ и т.д. / postfix / headers_check

/To:info@example.com/ && /From:(?(?!server@example.com).)*/ REDIRECT sales@example.com

Однако ничего не происходит. Вся почта по-прежнему попадает на info@example.com. Я удалил проверку «От», чтобы проверить, могу ли я просто захватить все сообщения, отправленные на info@example.com, и перенаправить. Однако и это не сработало. Я побежал

postmap -q "From:server@example.com\nTo:info@example.com" pcre:/etc/postfix/headers_check

и получил ответ

&& /(?(?!server@example.com).)*/ REDIRECT sales@example.com

Я также перезапустил postfix (перезагрузка postfix), чтобы убедиться, что он загрузил конфигурацию.

Также обратите внимание, что это машина с множеством виртуальных хостов, каждый со своими адресами электронной почты и псевдонимами. Все они объединены в / etc / postfix / virtual.

Спасибо за любой совет о том, как это сделать!

Я не знаю почему этот ответ был принят и получил одобрение.Документация Postfix четко указано, что postfix проверяет только одну строку заголовка за раз.

Эти правила работают с одним логическим заголовком сообщения или одной строкой тела за раз. Решение, принятое для одной строки, не переносится на следующую строку.

Итак, ваша идея объединить Из и Чтобы заголовок не поддерживается Postfix.


Другой способ - использовать адрес в конверте вместо адреса в заголовке электронной почты. Для этого вы можете использовать функцию постфикса, называемую классами ограничений. Видеть

В main.cf добавьте эту строку

smtpd_restriction_classes = specialsender
specialsender = permit
smtpd_recipient_restrictions = 
    ...
    check_sender_access hash:/etc/postfix/mycompany.redirection,
    check_recipient_access  hash:/etc/postfix/redirect.sales
    ...

Содержание /etc/postfix/mycompany.redirection

server@example.com     specialsender

Содержание /etc/postfix/redirect.sales

info@example.com      REDIRECT sales@example.com

Как это устроено

Когда postfix встречает эту строку

check_sender_access hash:/etc/postfix/mycompany.redirection

и обнаружил, что server@example.com находится в классе specialsender, а затем postfix разрешает его без перенаправления. Другой адрес электронной почты будет проверяться на соответствие

check_recipient_access  /etc/postfix/redirect.sales

И если получатель == info@example.com, он будет перенаправлен на sales@example.com