As receitas procmail possuem um operador alternador “or”?

4

Dada a seguinte receita do procmail:

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

O Procmail só excluiria e-mails que fossem do viagra e tivessem o viagra no assunto. É possível aplicar o filtro se uma das correspondências for verdadeira?

A solução preferencialmente não deve usar a expressão regular (regex1|regex2) operation, mas se essa for a única solução, então por favor diga.

    
por Cory Klein 29.06.2012 / 22:30

2 respostas

7

Você está perto. Um strong entendimento do regex é um bom caminho para receitas bem-sucedidas do procmail. O Procmail é extremamente flexível, mas essa flexibilidade depende muito da regex.

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

Como alternativa, e acredito que mais perto do que você deseja alcançar, use um pipe e escape de nova linha para continuar a regra na próxima linha (para legibilidade). No seu exemplo, você estava criando uma nova condição que também precisava ser correspondida.

:0:
* ^Subject:.*viagra.* |\
  ^From:.*viagra.*
/dev/null
    
por 29.06.2012 / 23:04
3

Use apenas duas receitas, cada uma indo para / dev / null, uma correspondente no assunto e outra correspondente no From. O primeiro jogo vence. Isso é essencialmente o mesmo que um operador OR. A abordagem reg1 | reg2 funcionaria, mas acho que é mais clara como duas receitas.

    
por 29.06.2012 / 22:59