Regla personalizada de Exim y Spamassassin

Regla personalizada de Exim y Spamassassin

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

información relacionada