Spam de uma organização bem conhecida que vende grandes quantidades de imitações de tudo, de drones a roombas, usa domínios aleatórios nos campos
From:
, Message-ID:
, e , todos diferentes , sem sequer um trailing comum .
(O e-mail não spam tende a compartilhar nomes de domínio para pelo menos e .)Reply-To:
xyz.com
Message-ID:
Reply-To:
Uma receita em ~/.procmailrc pode detectar esse spam e encaminhá-lo para uma pasta de spam?
Regexes extravagantes com grupos de captura nomeados?
Algo sobre encadear ações com 'A' ou 'a'?
Chamar o procmail recursivamente, conforme sugerido por sua página de manual?
Um 'filtro' para passar o cabeçalho do email para um script escrito em uma linguagem com melhor processamento de string?
Um exemplo: namebrandwigs.com, mysuburbankitchen.com, aliyun.com.
From [email protected] Wed Mar 17 09:27:54 2021
Return-Path: <[email protected]>
X-Original-To: ---
Delivered-To: ---
Received: from mysuburbankitchen.com (unknown [5.253.84.113])
by --- (Postfix) with ESMTP id 332025E236
for <--->; Wed, 17 Mar 2021 09:27:53 -0500 (CDT)
To: ---
Subject: drone with new features
Message-ID: <[email protected]>
Date: Wed, 17 Mar 2021 08:13:03 +0100
From: "Jake Allen" <[email protected]>
Reply-To: [email protected]
MIME-Version: 1.0
X-Mailer-Sent-By: 1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Status: RO
<html>
<head>
</head>
<body>
<span style="display: block; text-align: left;"><span style="display:
block; text-align: left;">Hi,<br /><br /><span>Hope all is well.</span><br
/>We are contacting you today to let you know that we have got the
following new drone, ready to ship to worldwide customers.<span><span><br
/><br /></span></span></span></span><span style="display: block;
text-align: left;"><span style="display: block; text-align:
left;"></span></span><span style="display: block; text-align: left;"><span
style="display: block; text-align: left;"><span style="display: block;
text-align: left;"></span></span></span><span style="display: block;
text-align: left;">Explore new places and amp up your videography skills
with the our F9 4K HD camera drone.
...
Outros exemplos, formatados de forma semelhante, mas sem texto sinalizado no corpo da mensagem:
- uma cadeira de massagem de couro da momentumwatch.com / musicalley.com
- um roomba de mtndewkid.com/myhondafitev.com/constructiongear.com
- um projetor de vídeo de hairrehablondon.com / hairocean.com / hotmail.com
Com base em alguns exemplos limitados, é difícil encontrar algo específico que funcione hoje e continue funcionando amanhã. Se sua pergunta real é realmente "como posso evitar spam do Procmail", a resposta óbvia, simples e bem documentada para isso é "execute um filtro de spam de espectro completo como o SpamAssassin e examine seu resultado". Mesmo assim, sua precisão provavelmente nunca será 100%; mas o SpamAssassin faz um trabalho decente para uma ferramenta que você basicamente configura e esquece. Ele se baseia amplamente em serviços externos que fornecem informações de reputação dinâmicas para endereços IP, URLs e outros recursos de rede usados por spammers, de modo que, de fato, há uma quantidade razoável de ações acontecendo nos bastidores.
O UsedViaProcmail no wiki do SpamAssassin tem mais instruções. Em resumo, depois de instalar e configurar o SpamAssassin, tente algo como
O segundo dois pontos
:0:
está correto apenas se você estiver entregando em uma caixa de correio que requer bloqueio (como um arquivo mbox, mas definitivamente não um diretório Maildir; mas com base no exemplo em sua pergunta, você parece estar no mbox). Se você recebe regularmente grandes mensagens de spam, talvez retire a condição de tamanho* < 512000
ou ajuste o número. O clichê do Procmail padrão do SpamAssassin inclui um arquivo de bloqueio que é desnecessário em seu sistema pessoal e talvez duvidoso em hosts compartilhados, e algum vodu estranho de culto de carga em torno deFrom
linhas quebradas que acredito nunca estar realmente correto.Se você quiser um conselho específico para as amostras que você forneceu, por favor, entenda que mesmo fatos profundamente pesquisados e absolutamente verdadeiros que podem permitir que você descarte essas mensagens específicas com total confiança de que não haverá falsos positivos serão praticamente inúteis para lidar com qualquer outro mensagens e/ou obsoletos amanhã ou na próxima semana.
Aqui está uma receita do Procmail que implementa o que eu acho que você pode estar perguntando.
Ele usa pontuação , que é um recurso um pouco obscuro, mas ocasionalmente útil. Resumidamente, atribuímos uma pontuação de 1 se houver um
From:
cabeçalho com um nome de domínio (como sempre haveria) e, em seguida, subtraímos um da pontuação se o cabeçalhoReply-To:
ou tiver a mesma string após o .Message-Id:
@
Prevejo que isso terá uma taxa bastante alta de falsos positivos, mas talvez possa agregar valor a você se receber muito spam com esse padrão específico, especialmente se puder combiná-lo com uma lista de permissões.
Eu ainda recomendaria que você verificasse a
suspicious
pasta regularmente e pescasse quaisquer falsos positivos de volta à sua caixa de entrada normal.Aqui está uma demonstração executada com a amostra que você forneceu, com entrega
/dev/null
apenas para a demonstração.Uma complicação específica é que isso não permite acessos de subdomínio; não seria muito difícil permitir
Message-id: <[email protected]>
um remetenteFrom: real name <[email protected]>
, mas o cenário oposto é muito mais complicado, porque você não pode realmente saber no caso geralFrom: sender <[email protected]>
se o nome de domínio élabels.here
(como nos.com
e.fr
TLDs por exemplo) oumany.labels.here
(como no.co.uk
,.com.au
etc TLDs) ou até mais (conforme o casok12.place.name.us
e algumas prefeituras no Japão, etc).Mais detalhadamente,
1^0
atribui uma1
pontuação para o primeiro acerto na primeira linha da receita e nenhuma pontuação adicional para acertos adicionais. O\/
token captura a string depois dela da string correspondente, ou seja, tudo após o último@
sinal no cabeçalho. AMATCH
variável é então usada nas seguintes linhas de receita para fazer referência a essa string capturada; a sintaxe$\MATCH
produz um padrão com escape de regex que corresponde à string literal. As receitas subsequentes têm um$
sinalizador para dizer ao Procmail para interpolar quaisquer variáveis (ou seja,$MATCH
) na condição da receita, e uma-1^0
instrução de pontuação para subtrair um para o primeiro acerto na condição e, em seguida, nada se corresponder novamente.As páginas man explicam todas essas construções, mas podem ser bastante densas; talvez veja também a referência rápida do Procmail que é ainda mais densa, mas talvez também mais rápida de ler e entender.
Eu postei isso como uma resposta separada para não misturar o conteúdo aqui com minha outra resposta, que basicamente tenta dissuadi-lo de criar seus próprios filtros de spam usando apenas o Procmail.