Regra de Spamassassin para comparar o caminho de retorno e os campos

2

Recentemente notei um padrão recorrente em alguns dos spams que recebo. O caminho de retorno e dos cabeçalhos sempre tem a mesma estrutura.

Deixe-me explicar com um exemplo:

Return-path: <[email protected]>
From: <[email protected]>
To: <[email protected]>

Basicamente, eu gostaria de verificar se a parte do usuário Return-path é igual a parte do usuário From com a adição do To ("@" alterado para "=") e um traço na frente do To.

Eu queria usar alguns Postfix header_checks e rejeitar o padrão USER=DOMAIN.COM@ , mas a maioria dos boletins legítimos que eu recebo contêm isso também em seu caminho de retorno (exceto que há uma string muito mais complexa antes, que nunca corresponde à campo).

Alguém criou essa regra antes e se importa em compartilhar?

Obrigado!

    
por Capsule 02.07.2015 / 03:50

1 resposta

2

O SpamAssassin não permite escrever código ou atribuir variáveis ... em suas regras. Para fazer o que você quer, seria mais adequado escrever um plugin personalizado (que lhe daria acesso total ao perl).

Dito isso, você pode tecnicamente fazer o que está pedindo na sintaxe de escrita de regras do SpamAssassin usando o tipo de cabeçalho ALL (que examina todos os cabeçalhos de uma só vez, como rawbody ):

header RPATH_EMBEDS_TO_ADDR  ALL =~ /\bReturn-Path:[^\r\n]{0,99}-([\w.])=([\w.-]{1,99}\.[a-z]{2,8})\@(?:[^\r\n]{0,99}[\r\n]{1,9}){1,30}To:[^\r\n]{0,99}<@>/ism

A regra acima é cara , e seria ainda mais cara se você permitisse traços no nome de usuário, já que teria que iterar todos os tamanhos possíveis de ([\w.-]) para o nome de usuário. Isso é caro não apenas porque requer muito backtracking, mas também porque requer examinar strings muito longas. Além disso, é possível que o cabeçalho Return-Path seja após o cabeçalho To , o que significa que você precisaria de uma segunda regra para um segundo regex para lidar com esse caso.

Seria melhor escrever um plugin personalizado do SpamAssassin para essa técnica.

No entanto, acho que você descobrirá que tudo isso afeta determinados tipos de correspondência em massa, muitos dos quais são legítimos; o cabeçalho Return-Path é usado como um endereço de devolução e muitas listas de e-mail codificam o destinatário para avaliar sua capacidade de entrega e limpar suas listas.

Se você realmente quer esse tipo de coisa, suspeito que não importa se o endereço To exato é o presente no cabeçalho Return-Path . Aqui está uma regra dramaticamente mais rápida que deve ter quase a mesma eficácia:

header RPATH_EMBEDS_ADDR  Return-Path =~ /-[\w.]{1,99}=[\w.-]{1,99}\.[a-z]{2,8}\@/i

Outra observação importante é que sempre que uma mensagem é redirecionada (por exemplo, um serviço de encaminhamento de email), o cabeçalho Return-Path é reescrito. Isso pode limitar o utilitário de detecção de spam dessa regra.

    
por 07.07.2015 / 01:12