
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