script de peneira regex não correspondente

1

Eu tenho um problema em um servidor de correio dovecot2 com um script de peneira que escrevo. O script deve mover automaticamente o correio proveniente de uma lista de discussão para uma pasta (por nome de lista, não id de lista)

require ["fileinto", "mailbox", "variables", "regex"];
if exists "list-id" {
    if header :regex "list-id" "([a-zA-Z0-9][a-zA-Z0-9-_. ]+[a-zA-Z0-9.])" {
        fileinto :create "${1}";
        stop;
    }
}

Para um email com o cabeçalho

List-Id: RZ Monitoring <rz-monitoring.lists.example.com>

Este script deve mover todas as mensagens para uma pasta "Monitoramento RZ". Mas, por algum motivo, todos os e-mails estão se acumulando na caixa de entrada.

O script está sendo executado e não tenho erros em meus registros, por isso devo ter cometido um erro no próprio script.

    
por M1k3y 01.03.2018 / 16:52

2 respostas

0

Então, o seguinte funcionou:

require ["fileinto", "mailbox", "variables", "regex"];
if exists "List-Id" {
    if header :regex "List-Id" "([a-zA-Z0-9][a-zA-Z0-9\-_. ]+[a-zA-Z0-9.])" {
        fileinto :create "${1}";
        stop;
    }
}

Como Andrew Schulman apontou, parece que "existe" é sensível a maiúsculas e minúsculas. Depois de consertar isso, me deparei com um erro nos logs. Na regex

([a-zA-Z0-9][a-zA-Z0-9-_. ]+[a-zA-Z0-9.])
                      ^

este "-" é interpretado como um intervalo de "9" a "_", ehich não é válido (embora na medida em que minha compreensão de regex seja, não deveria. Possivelmente uma peculiaridade da implementação de regex dovecots). Então o "-" aqui tem que ser escapado

([a-zA-Z0-9][a-zA-Z0-9\-_. ]+[a-zA-Z0-9.])
    
por 02.03.2018 / 10:24
0

Os documentos da peneira do Dovecot não são claros sobre isso - acho que você teria que se aprofundar nos RFCs - mas acho que o operador exists faz distinção entre maiúsculas e minúsculas, embora :regex não seja. Então você deve usar List-Id em vez de list-id :

if exists "List-Id" {
    if header :regex "List-Id" "([a-zA-Z0-9][a-zA-Z0-9-_. ]+[a-zA-Z0-9.])" {
        fileinto :create "${1}";
        stop;
    }
}
    
por 01.03.2018 / 17:09