Пытаюсь добавить правило в 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