script de tamiz de expresiones regulares no coincide

script de tamiz de expresiones regulares no coincide

Tengo un problema en un servidor de correo dovecot2 con un script de tamiz que escribo. El script debería mover automáticamente el correo procedente de una lista de correo a una carpeta (por el nombre de la lista, no por el ID de la 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 un correo con el encabezado

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

Este script debería mover todo el correo a una carpeta "RZ Monitoring". Pero por alguna razón todo el correo se acumula en la bandeja de entrada.

El script se está ejecutando y no tengo errores en mis registros, por lo que debo haber cometido un error en el script.

Respuesta1

ElDocumentos de tamiz de palomarNo tengo claro esto (creo que habría que profundizar en los RFC), pero creo que el existsoperador distingue entre mayúsculas y minúsculas, aunque :regexno lo es. Entonces deberías usar List-Iden lugar 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;
    }
}

Respuesta2

Entonces lo siguiente funcionó:

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 señaló Andrew Schulman, parece que "existe" distingue entre mayúsculas y minúsculas. Después de solucionar esto, encontré un error en los registros. en la expresión regular

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

este "-" se interpreta como un rango de "9" a "_", lo cual no es válido (aunque, hasta donde yo entiendo, no debería ser así. Posiblemente sea una peculiaridad de la implementación de expresiones regulares de los palomares). Entonces el "-" aquí debe escaparse

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

información relacionada