Depois de adicionar uma nova DNSBL ao Sendmail, como posso reenviar um e-mail para ver se ele será rejeitado?

Depois de adicionar uma nova DNSBL ao Sendmail, como posso reenviar um e-mail para ver se ele será rejeitado?

DR

Como posso enganar meu próprio sendmail fazendo-o pensar que um e-mail vem de um endereço IP específico, de modo que ele rejeite a mensagem devido a uma correspondência de DNSBL?

Detalhes:

Eu administro meu próprio servidor de e-mail e a maior parte do spam é bloqueada pelas listas negras de DNS (DNSBL) que adicionei ao /etc/mail/sendmail.mc assim:

dnl FEATURE(`dnsbl',`dnsbl.sorbs.net',`"554 Rejected " $&{client_addr} " found in dnsbl.sorbs.net"')dnl
dnl FEATURE(`dnsbl',`b.barracudacentral.org',`"554 Rejected " $&{client_addr} " found in b.barracudacentral.org"')dnl

Hoje chegou algum spam (passando em todos os testes), e depois de verificarCaixa de ferramentas MXeInformações DNSBLpude ver que adicionar uma das várias DNSBLs teria bloqueado esse spam específico.

Então, adicionei outro DNSBL e agora quero testá-lo reenviando este e-mail para o Sendmail, mas é aí que reside o problema: ele não virá do endereço IP correto e o DNSBL não o verá como ruim.

Aqui está o comando que eu normalmente teria usado:

formail -s /usr/sbin/sendmail -oi -t < testmail.mbox

Antes de tentar reinventar uma roda, pensei em perguntar aqui primeiro. Ideias possíveis:

  • Existe uma opção CLI para sendmail para falsificar o IP de origem?
  • Talvez crie um arquivo de mensagem na fila e coloque-o diretamente na fila?
  • Talvez configurar outro endereço IP na minha máquina e enviar para mim mesmo com ele?
  • Um túnel OpenVPN ou SSH seria uma solução rápida?
  • Possivelmente, uma biblioteca compartilhada poderia ser carregada para interceptar chamadas do sistema, à laLibFakeTime?
  • O Dtrace parece poderoso, ele pode alterar chamadas de getockopt(2) assim?

Obrigado!

Responder1

Depois de dormir sobre isso, a solução acabou sendo trivial:

ssh my-mail-server

# Add 1.2.3.4 as an alias (eth1:0) to interface eth1:
sudo ifconfig eth1:0 1.2.3.4 netmask 255.255.255.255

# Use 1.2.3.4 as the source ip, connect to port 25 on the local host:
nc -s 1.2.3.4 0.0.0.0 25

HELO 1.2.3.4
MAIL FROM: [email protected]
RCPT TO: [email protected]
DATA
Subject: is this really from 1.2.3.4?

Test from 1.2.3.4
.
QUIT
^C

# Deleting 1.2.3.4 from eth1:
sudo ifconfig eth1:0 0.0.0.0

Voilà, o cabeçalho resultante:

Return-Path: <[email protected]>
Received: from 1.2.3.4 ([1.2.3.4] (may be forged))
    by earth.com (8.15.2/8.15.2) with SMTP id 1731SlYY013775
    for <[email protected]>; Mon, 2 Aug 2021 18:29:14 -0700
Authentication-Results:the-force.com; dkim=permerror (bad message/signature format)
Date: Mon, 2 Aug 2021 18:28:47 -0700
From: <[email protected]>
Message-Id: <[email protected]>
Subject: Test subject

Também revelou que o endereço IP não estava sendo bloqueado (DNSBL não funciona?), então nesse sentido o teste foi um sucesso. :-/

Atualização: D'oh! As linhas em sendmail.mc deveriam ser assim:

FEATURE(`dnsbl',`dnsbl.sorbs.net',`"554 Rejected " $&{client_addr} " found in dnsbl.sorbs.net"')dnl
FEATURE(`dnsbl',`b.barracudacentral.org',`"554 Rejected " $&{client_addr} " found in b.barracudacentral.org"')dnl

Em outras palavras, o 'dnl' na frente comentava todas as linhas da DNSBL. :-(

Eaaaaesseé por isso que testamos, senhoras e senhores.

informação relacionada