¿Hay alguna forma procmail
(o algo más) de buscar correos electrónicos donde los campos from:
y to:
contengan la misma dirección? ¿Y se puede hacer sin necesidad de codificar todas y cada una de las direcciones de correo electrónico de una receta?
Básicamente, estoy tratando de encontrar correos electrónicos donde el remitente envía el correo a su propia dirección y luego a todos los demás en copia oculta. Normalmente lo uso notmuch
y estoy contento con eso, pero no puede hacer lo que estoy tratando de lograr aquí. Sin embargo notmuch
, puedo trabajar en conjunto, procmail
así que esperaba que alguien que lo supiera procmail
realmente bien pudiera ayudarme y así ahorrarme la necesidad de aprender un sistema de filtrado completamente nuevo para hacer esto.
Respuesta1
Esto es posible, aunque requiere algunas características de Procmail bastante oscuras y, por supuesto, es necesario comprender lo que se está logrando.
:0
* ^From:[ ]*\/[^ ].*
* $ ^To:[ ]*$\MATCH
{ ... actions ... }
El \/
operador de captura recopila la cadena coincidente en la variable especial MATCH
. En la siguiente línea, buscamos la misma cadena en el To:
encabezado. Donde $MATCH
contiene la cadena capturada, $\MATCH
contiene una expresión regular en la que se han escapado todos los caracteres especiales de expresión regular de la cadena para que coincidan literalmente. El $
modificador es necesario en la receta para permitir la interpolación de variables de Procmail en la expresión regular.
Esto utiliza lo habitual [ ]*
(espacio o tabulación, cero o más) para omitir los espacios en blanco después de los dos puntos, luego toma todo comenzando desde el primer carácter que no es un espacio en blanco.
En la práctica, esto significa que los encabezados From:
y To:
deben tener contenidos idénticos. Si el remitente ingresa un "nombre real" diferente (que técnicamente es solo un comentario), esta receta no coincidirá. Por ejemplo,
From: Myself <[email protected]>
To: Everyone <[email protected]>
Aquí, el término del correo electrónico es idéntico, pero todo el campo es diferente. Si necesita hacer frente a este escenario, tal vez cambie la expresión regular para que coincida con la primera <
antes de, \/
pero esto obviamente dependerá de las cadenas precisas que necesita hacer coincidir; hay muchas variaciones posibles.