Como rejeitar / detectar e-mails que dizem ser do meu próprio domínio?

6

Temos a seguinte topologia de e-mail:

Exchange server --------- Sendmail server ---------------Internet

No servidor do sendmail não há nenhuma caixa de correio do usuário e as mensagens com o endereço do remetente [email protected] podem chegar somente do servidor do Exchange e nunca da Internet. Com base nesse fato, quero limitar a quantidade de spam recebido, rejeitando todos os e-mails recebidos da Internet e afirmando serem de meu próprio domínio ( [email protected] ).

Configurei um registro SPF para meu domínio e instalei no servidor sendmail um spfmilter, spamassassin e pacotes spamasster. Funciona bem, mas há dois problemas:

  1. Se durante o remetente da conversa SMTP especificar endereço incorreto no comando " MAIL FROM: ", ele será rejeitado, mas o remetente ainda poderá emitir outro comando " MAIL FROM: " e se esse segundo endereço for aceito, mensagens inteiras serão aceitos também. Eu prefiro que o remetente não tenha uma segunda chance e, se ele especificar, por fim, um endereço rejeitado pelo spfmilter, toda a mensagem deverá ser rejeitada incondicionalmente.

  2. Se o remetente tiver especificado endereços válidos (aceitos pelo spfmilter), ele poderá emitir o comando DATA e, em seguida, colocar uma linha (como corpo da mensagem) como " From: <[email protected]> ". Essa linha não faz parte da conversa SMTP, mas se torna parte do cabeçalho da mensagem (meu outlook exibe esse endereço como um endereço de remetente). Então, eu quero configurar um teste / regra de filtro spamassassin, que marcará a mensagem como spam (depois que o comando DATA já estiver muito atrasado para rejeitar a mensagem) se os endereços do remetente fornecidos no cabeçalho da mensagem não corresponderem aos endereços especificados como parte da conversa SMTP , mas não sei como fazer isso.

Alguma sugestão?

    
por user71061 23.03.2011 / 14:28

3 respostas

2

Eu uso o Exim configurado com o mysql para filtrar meu email. Eu acho a configuração mais fácil de fazer. A configuração do Sendmail sempre me pareceu bastante enigmática.

  1. Para evitar que um remetente altere a identidade mail_from e tente novamente, você precisará adicionar o endereço IP a uma lista negra e impor a lista negra. Se você conseguir que o filtro solte a conexão em vez de rejeitar o mail_from, eles precisarão se reconectar para alterar o endereço mail_from. Não acho que muitos remetentes façam isso. Vou verificar meu banco de dados e atualizar mais tarde.

  2. A regra a seguir verificará se o endereço De está no domínio 'example.com'. Adicione estas linhas ao seu arquivo local.cf e reinicie o spamassassin. Aumente a pontuação quando tiver certeza de que está funcionando corretamente. Isso pressupõe que você não esteja usando o spamassassin para enviar emails.

header   LOCAL_FROM_HERE        From =~ /[.@]example.com/
score    LOCAL_FROM_HERE        -0.75
describe LOCAL_FROM_HERE        From header is local address

EDIT: Eu executei algumas consultas no meu banco de dados de dados de email. De 2500 conexões que usaram um endereço local no comando MAIL FROM, apenas 28 repetiram com um endereço não local. Trata-se de uma taxa de falha de 1% ao apenas rejeitar o uso de endereços locais no comando MAIL FROM. Não encontrei nenhum caso em que um servidor se reconectasse e tentasse um endereço não local.

Supondo que o cabeçalho Envelope_from seja adicionado antes que o spamassassin filtre a mensagem, ambas as condições podem ser combinadas em uma única entrada da lista negra em local.cf. Novamente, isso pressupõe que você não execute o spamassassin no email de saída.

blacklist_from   *@example.com

EDIT2: Eu uso uma ACL no Exim para rejeitar o comando Mail From se um domínio local for usado no endereço. Isso se aplica se o host de conexão não for um que eu considero local. Hosts locais incluem servidores na rede local, relés aprovados e hosts usando uma conexão autenticada na porta de envio (587).

    
por 23.03.2011 / 16:26
0

Use DKIM . É como um registro SPF, mas mostra a chave pública. Seu servidor assina e-mails do seu domínio com chave privada

identificator._domainkey.mydomain.com. IN txt "/*spf*/" +" v=DKIM1; k=rsa; p=MIG......endofkey" //BIND9

e na ACL configurada para verificar a assinatura DKIM de todos os e-mails recebidos que dizem ser do seu domínio

O Dkim foi desenvolvido para combater o seu problema (pesca :))

    
por 23.03.2011 / 14:43
0

+1 para a pergunta.

Isso soa como um cenário comum muito no qual deve haver muitos plugins do sendmail.

É claro que você deve ter dkim-milter e spfmilter , mas eles não resolvem esse problema exato, o que parece fácil com apenas adicionar seu próprio filtro para rejeitar qualquer correspondência que corresponda a egrep -e '^From: *@my.domain.com'

DKIM é muito bom, mas se o email não estiver assinado, você não poderá falhar devido a uma assinatura incorreta. Então você deve falhar porque falta uma assinatura e afirma ser do seu domínio.

    
por 23.03.2011 / 15:19