As receitas do procmail possuem um alternador "ou" operador?

As receitas do procmail possuem um alternador "ou" operador?

Dada a seguinte receita do procmail:

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

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

A solução preferencialmente não deve fazer uso da (regex1|regex2)operação de expressão regular, mas se essa for a única solução, diga-o.

Responder1

Você está perto. Um forte entendimento de regex ajuda muito no sucesso de receitas de procmail. O Procmail é extremamente flexível, mas essa flexibilidade depende muito do regex.

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

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

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

Responder2

Basta usar duas receitas, cada uma indo para /dev/null, uma correspondente ao Assunto e a outra correspondente ao De. A primeira partida vence. Isto é essencialmente o mesmo que um operador OR. A abordagem reg1|reg2 funcionaria, mas acho que pode ser lida mais claramente como duas receitas.

informação relacionada