Filtragem de Procmail e do corpo

2

Eu tenho um e-mail gerado por script que vem de hora em hora. Eu não preciso vê-lo, exceto sob certas condições, e por isso quero filtrá-lo para sua própria caixa de correio. A mensagem vem do cron e quero ter cuidado para não filtrar outras mensagens do cron, apenas essa baseada na origem e no conteúdo.

A linha do corpo (a primeira linha da mensagem começa com isso) Estou tentando corresponder é:

/etc/cron.hourly/scriptrun:

Aqui está o que eu descobri que NÃO está funcionando. Eu não tenho certeza onde eu errei.

:0 HB
* ^From:.*[email protected]
* ^Subject: {Cron
* \/etc\/cron.hourly\/scriptrun
.Save/

Qualquer ideia seria muito apreciada.

    
por David 27.11.2016 / 20:26

1 resposta

0

Não está claro o que você quer que a chave esquerda única combine; do jeito que está agora, é um erro de sintaxe. Eu suponho que você simplesmente quer que combine literalmente.

:0
* ^From:.*root@ns1\.domain\.net
* ^Subject: \{Cron
* B ?? ^^/etc/cron\.hourly/scriptrun
.Save/

Você notará as barras invertidas para corresponder literalmente aos metacaracteres regex (mas as barras não são metacaracteres, portanto, não as invertemos; e, na verdade, \/ tem um significado especial no Procmail e não corresponde a uma barra literal!), e o B ?? para corresponder apenas a uma condição ao corpo. A âncora dupla ^^ é uma construção do Procmail que corresponde ao primeiro caractere na primeira linha (e também após o último caractere na última linha).

Também observarei que o que você vê no seu cliente de e-mail pode ser bem diferente da mensagem bruta processada pelo Procmail; por exemplo, em uma mensagem MIME multipartes, a primeira linha da primeira parte do corpo será precedida por um preâmbulo MIME e um limite MIME. Para uma mensagem Cron simples, é improvável que isso seja um problema, mas estou mencionando isso apenas no caso.

    
por 28.11.2016 / 13:59