Регулярные выражения в procmail

804
Christian

У меня проблема с обратным рассеянием для случайно сгенерированных поддельных адресов в домене с ловушкой.

Поддельный псевдоним использует схему, используя egrep с регулярным выражением

^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]@example.org.* 

в моих списках maildir все нежелательные обратные рассылки и, к счастью, ни один адрес, использующий эту схему, фактически не используется.

Тем не менее, procmail убежден, что он не совпадает.

:0hD: * ^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]@example.org.* !spam  procmail: No match on "^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]@example.org.*" 

Я не могу заставить procmail интерпретировать регулярное выражение, как egrep (и другие инструменты, использующие регулярные выражения).

Что я делаю неправильно?

Я обнаружил, что по умолчанию procmail игнорирует регистр, поэтому я добавил «D» в рецепт. Но я не нашел ни одного примера с использованием [AZ] в procmail-рецептах. Я пытаюсь что-то невозможное?

1

1 ответ на вопрос

2
tripleee

Procmail's regex dialect doesn't support the repetition operator. You will simply have to spell out the pattern in longhand (maybe use a variable if it gets too massive).

:0D * ^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9][0-9]([0-9]([0-9][0-9]?)?)?@example\.org !spam 

As an aside, you should not use locking on a forwarding recipe, a trailing wildcard is useless, and the h flag is the default; so I took those things out.

Да, я добавил некоторые опции из-за отчаяния;) `procmail: Match on" ^ To:. *. [AZ]. [Az]. * [AZ]. [Az]. * [0-9] [0-9] ([0-9] ([0-9] [0-9]?)?)? @ Example.org "` Большое спасибо, теперь я могу снова включить почтовые уведомления :) Christian 8 лет назад 0