Tengo un usuario local de procmail "bob".
Si llega un correo electrónico y coincide[correo electrónico protegido], entonces no se debe tomar ninguna medida.
Sin embargo, si llega un correo electrónico y es [cualquier otra cosa]@dominio.com, me gustaría reescribir la línea de asunto para insertar "[spam]" al frente de la línea de asunto.
Por lo tanto, es una coincidencia inversa en "bob@" (coincidencia en cualquier otra cosa que no sea bob@) y conservamos la línea de asunto original, simplemente anteponiendo "[spam]" al frente.
¿Cómo puedo hacer eso con Procmail?
Respuesta1
Sus requisitos son bastante confusos. Procmail puede coincidir con cualquier cadena, pero ¿realmente quiere buscar la cadena en cualquier parte del mensaje? ¿Y realmente quieres ignorar los mensajes que no domain.com
están incluidos a los efectos de esta regla?
:0 HB
* ! ()\<bob@domain\.com\>
* @domain\.com\>
{
:0fhw
* ^Subject:\/.+
| formail -I"Subject: [spam]$MATCH"
}
Los límites \<
de \>
las palabras y evitan la coincidencia en subcadenas como tombob
o subdomain.complete.org
y los paréntesis vacíos son un truco porque Procmail es extraño con las expresiones regulares que comienzan con una barra invertida.
Si quiere decir que desea buscar solo en los encabezados, elimine el HB
de la primera línea de dos puntos (puede dejarlo, H
pero ese es el valor predeterminado si no coloca ninguna bandera). Si desea hacer coincidir un encabezado específico, explíquelo. Si desea examinar el destinatario específicamente, la ^TO_
macro le permite hacerlo fácilmente en varios encabezados diferentes ( To:
,, Cc:
etc.).
:0fhw
* ! ^TO_bob@domain\.com\>
* ^TO_[^<>@ ]+@domain\.com\>
* ^Subject:\/.+
| formail -I"Subject: [spam]$MATCH"
Debido a que eliminamos las HB
banderas, podemos combinar lo que antes eran dos recetas con banderas diferentes. El segundo ^TO_
busca cualquier dirección que incluya bob
, que sin embargo ya fue excluida por la condición negada anterior.
Esto todavía tiene algunos casos extremos que podrían necesitar ser explorados más a fondo; Si puede editar su pregunta para aclararla, tal vez pueda actualizarla para cubrir más que lo básico.
Sin embargo, SMTP no requiere que se indique el destinatario en los encabezados. El caso clásico es Bcc:
el que también es esencialmente el mecanismo utilizado por muchas listas de correo. Quizás su MTA indique el destinatario, Delivered-To:
pero hablando propiamente, este tipo de filtro se implementa mejor en el MTA.