
Tengo exim y spamassassin (usados por exiscan) instalados y ejecutándose, pero quiero agregar una regla personalizada que agregará algunos puntos a los correos electrónicos si "para" y "sobre-para" no son idénticos. Agregué las siguientes reglas a local.cf:
header EXIM_SENDER_SWAP X-Sender-Swap =~ /To_envelope-to/
describe EXIM_SENDER_SWAP To doesnt match envelope-to
score EXIM_SENDER_SWAP 2.0
y línea en exim.conf
acl_check_data:
warn message = X-Subject-Swap: To_envelope-to
condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}
Estoy enviando un mensaje de prueba y exim agrega el encabezado correspondiente, pero spamassassin no agrega ningún punto adicional. ¿Qué ocurre?
Respuesta1
En primer lugar, el modificador "mensaje" no es lo que desea; en su lugar, desea utilizar "add_header" cuando desee agregar un encabezado a un mensaje en una ACL. Leerhttp://www.exim.org/exim-html-current/doc/html/spec_html/ch42.html#SECTaddheadaclsi necesita más información sobre esa parte.
Sin embargo, no creo que lo que estás intentando hacer funcione de la forma en que lo estás utilizando. En el interior de exim, mientras procesa cada ACL, la ACL se ejecuta y luego, cuando la ACL tieneterminado, se realizan todas las adiciones y eliminaciones de encabezados. Está haciendo ambas cosas en la misma ACL de DATOS, lo que significa que los encabezados agregados por la primera comparación aún no se han agregado al mensaje en los archivos temporales que el comando de spam está analizando.
Una opción es realizar el análisis de spam, detectar la condición en la que habría agregado el encabezado y luego agregar esa puntuación a la variable que contiene la puntuación de spam al comparar para ver si es spam.
Una segunda opción, y la mejor en mi opinión, es tener dos usuarios diferentes para ejecutar el análisis de spam. Por un lado, tiene la puntuación de spam establecida en (por ejemplo) 5,0. Para el segundo, tienes la puntuación de spam establecida en 3,0. Esto es 2 puntos menos que el límite normal, lo que equivale a haber añadido 2 puntos a la puntuación de spam.
Entonces sus estrofas de ACL podrían verse así (no probadas):
warn condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}
set $acl_m_env_ok = 1
spam = strict_user:true
warn condtion = ${if eq{$acl_m_env_ok}{1} {no}{yes}}
spam = normal_user:true
warn add_header = X-Spam-Score: $spam_score
add_header = X-Spam-Report: $spam_report
deny condition = ${if eq{$acl_m_env_ok}{1}}
condition = ${if >{$spam_score_int}{30}}
message = This message with mismatched header/envelope score $spam_score_points...REJECTED
deny condition = ${if >{$spam_score_int}{50}}
message = This message scored $spam_score points...REJECTED