Pregunta

Usando procmail, quiero mover cualquier correo entrante que no contenga mi nombre ("John Doe") en el campo "Para" a la carpeta "Basura".

Sin embargo, la siguiente regla no parece tener ningún efecto, aunque he probado exhaustivamente la expresión regular en aplicaciones de prueba en línea para asegurarme de que coincida con lo que debería:

# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/

Por si es de interés, mi archivo completo de reglas de procmail es:

# Filter mail using SpamAssassin
:0fw: spamassassin.lock
* < 256000
| /usr/bin/spamassassin

# Filter spam based on "Spam-Level"
:0:
* ^X-Spam-Level: \*\*
.Junk/

# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/

¿Por qué no funciona mi regla?

¡Gracias por cualquier ayuda!

¿Fue útil?

Solución

Porque las búsquedas anticipadas de Perl no son parte del repertorio de expresiones regulares de Procmail.

Pruebe esto en su lugar.

:0
* ! ^To:.*John[  ]+Doe
.Junk/

El espacio en blanco dentro de [] debe ser un espacio y una tabulación;el \s El perlismo tampoco es compatible.

Sería mejor que utilizara su dirección de correo electrónico como criterio de filtrado y quizás utilizara el ^TO_ macro especial para cubrir Cc:etc.Aún no puedes manejar Cco:a tu cuenta, por supuesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top