Regra personalizada Exim e spamassassin

Regra personalizada Exim e spamassassin

tenho o exim e o spamassassin (usado pelo exiscan) instalados e em execução, mas quero adicionar uma regra personalizada que adicionará alguns pontos aos e-mails se "para" e "envelope para" não forem idênticos. Adicionei as seguintes regras ao 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

e linha em 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}}

Estou enviando uma mensagem de teste e o cabeçalho correspondente é adicionado pelo exim, mas nenhum ponto adicional adicionado pelo spamassassin. O que está errado?

Responder1

Primeiro, o modificador "message" não é o que você deseja; em vez disso, você deseja usar "add_header" quando quiser adicionar um cabeçalho a uma mensagem em uma ACL. Lerhttp://www.exim.org/exim-html-current/doc/html/spec_html/ch42.html#SECTaddheadaclse precisar de mais informações sobre essa parte.

No entanto, não acho que o que você está tentando fazer funcionará da maneira que você está usando. Nas entranhas do exim, enquanto ele processa cada ACL, a ACL é executada e, quando a ACL temconcluído, todas as adições e exclusões de cabeçalho serão concluídas. Você está fazendo ambos na mesma DATA ACL, o que significa que os cabeçalhos adicionados pela primeira comparação ainda não foram adicionados à mensagem nos arquivos temporários que o comando de spam está verificando.

Uma opção é fazer a verificação de spam, detectar a condição onde você teria adicionado o cabeçalho e, em seguida, adicionar essa pontuação à variável que contém a pontuação de spam ao comparar para ver se é spam.

Uma segunda opção, e a melhor na minha opinião, é ter dois usuários diferentes para executar a verificação de spam. Por um lado, você tem a pontuação de spam definida como (por exemplo) 5,0. Para o segundo, você tem a pontuação de spam definida como 3,0. Isso é 2 pontos a menos que o limite normal, o que equivale a adicionar 2 pontos à pontuação de spam.

Então suas sub-rotinas ACL poderiam parecer (não testadas):

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

informação relacionada