Есть ли в рецептах procmail оператор-генератор «или»?

Есть ли в рецептах procmail оператор-генератор «или»?

Дан следующий рецепт procmail:

:0:
* ^Subject:.*viagra.*
* ^From:.*viagra.*
/dev/null

Procmail удалял только те письма, которые были от viagra и имели viagra в теме. Можно ли применить фильтр, если хотя бы одно из совпадений верно?

Предпочтительно, чтобы решение не использовало (regex1|regex2)операцию регулярного выражения, но если это единственное решение, то, пожалуйста, сообщите об этом.

решение1

Вы близки. Хорошее понимание регулярных выражений имеет большое значение для успешных рецептов procmail. Procmail чрезвычайно гибок, но эта гибкость во многом зависит от регулярных выражений.

:0: 
* ^(From|Cc|To|Subject).*viagara.* 
/dev/null

Альтернативно, и я думаю, ближе к тому, чего вы хотите добиться, используйте вертикальную черту и переход на новую строку, чтобы продолжить правило на следующей строке (для удобства чтения). В вашем примере вы создавали новое условие, которое также должно было сопоставляться.

:0:
* ^Subject:.*viagra.* |\
  ^From:.*viagra.*
/dev/null

решение2

Просто используйте два рецепта, каждый из которых идет в /dev/null, один соответствует Subject, другой соответствует From. Первое совпадение побеждает. Это по сути то же самое, что и оператор OR. Подход reg1|reg2 будет работать, но я думаю, что он читается более ясно как два рецепта.

Связанный контент