script de peneira regex não corresponde

script de peneira regex não corresponde

Estou com um problema em um servidor de e-mail dovecot2 com um script de peneira que escrevo. O script deve mover automaticamente os e-mails provenientes de uma lista de e-mails para uma pasta (pelo nome da lista, não pelo ID da 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 e-mail com o cabeçalho

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

Este script deve mover todos os e-mails 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 logs, portanto devo ter cometido um erro no próprio script.

Responder1

ODocumentos da peneira Dovecotnão está claro sobre isso - acho que você teria que se aprofundar nas RFCs - mas acho que o existsoperador diferencia maiúsculas de minúsculas, embora :regexnão seja. Então você deve usar List-Idem 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;
    }
}

Responder2

Então funcionou o seguinte:

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” diferencia maiúsculas de minúsculas. Depois de corrigir isso, encontrei um erro nos logs. Na expressão regular

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

este "-" é interpretado como um intervalo de "9" a "_", e isso não é válido (embora, pelo que entendi de regex, não deveria. Possivelmente uma peculiaridade da implementação de regex de pombas). Então o "-" aqui tem que ser escapado

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

informação relacionada