
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 exists
operador distingue entre mayúsculas y minúsculas, aunque :regex
no lo es. Entonces deberías usar List-Id
en 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.])