Eu substituí temporariamente meu arquivo .forward
pelo seu e confirmei que ele não funciona.
Existem dois problemas.
-
contains
executa uma correspondência de substring e não entende expressões regulares. Para regexes, você desejamatches
em vez decontains
. -
A classe de caractere
\d
do estilo PCRE parece estar quebrada, assim como a sintaxe{N}
! Eu tentei todos os tipos de combinações. A única sintaxe que funcionou foi[0-9][0-9]
. Mesmo[0-9]{2}
não funcionou e nem[0-9]\{2\}
nem\d\d
. (Estou executando a versão 4.72.) Edit: Aqui está o motivo: As cotas não precisam ser usadas em regexes nos arquivos de filtro do Exim, exceto quando os regexes contêm whitspace. No entanto, as barras invertidas devem ser duplicadas, mesmo em expressões regulares não citadas. Nos regexes citados, eles devem ser duplicados novamente:$header_subject: matches "\\d{2}% OFF"
. Conte-os: quatro barras invertidas.
Teste seu script com /usr/sbin/exim -bF <scriptfile> -f <sender>
. Uma mensagem de teste deve ser fornecida na entrada padrão (por exemplo, redirecionada de um arquivo).
Para testar o processamento Subject:
, ele pode conter apenas essa linha de cabeçalho e nada mais. O capital F
in -bF
é ativar o processamento do comando fail
que está desativado se você usar -bf
.