
Я использую postfix-pcre на моем Ubuntu Server. Если я проверю конфигурацию header_checks с помощью следующей команды
postmap -q 'To: "Markus Schlei" <[email protected]>' regexp:/etc/postfix/header_checks
Я получаю следующее предупреждающее сообщение:
postmap: предупреждение: regexp map /etc/postfix/header_checks, строка 36: недопустимое предшествующее регулярное выражение.
Также это не отклонило мой тест. В строке 36 я получил этот код:
/^To:.*\@(?!(gmail\.com)).*/ REJECT Test-Nr-1
Я хочу отклонить все сообщения, которые не соответствуютgmail.com
Редактирование 1: Я обнаружил, что если я удалю "(?!(..)" предупреждающее сообщение исчезло, но оно делает обратное тому, что я хотел.
решение1
Вы должны знать, что существуют регулярные выражения POSIX и регулярные выражения PCRE.
Вы используетеотрицательный просмотр вперед( ?!
) срегулярное выражениеtable. Этот тип регулярного выражения поддерживается только таблицами регулярных выражений PCRE.
Чтобы узнать, какие типы таблиц поиска поддерживает ваша система Postfix, используйте команду «postconf -m».
Если pcre указан, то просто переключитесь на pcre tables вместо regexp tables. Если нет, то вам нужно установитьпостфикс-pcre.