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

1

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

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

^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]{2,5}@example.org.*

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

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

:0hD:
* ^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]{2,5}@example.org.*
!spam

procmail: No match on "^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]{2,5}@example.org.*"

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

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

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

Christian
источник

Ответы:

2

Регулярный диалект Procmail не поддерживает {Т, п} оператор повторения. Вам просто нужно будет прописать шаблон от руки (возможно, использовать переменную, если она становится слишком большой)

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

Кроме того, вы не должны использовать блокировку на рецепте пересылки, конечный шаблон бесполезен, и h флаг по умолчанию; поэтому я достал эти вещи.

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