Email-Server

將新的 DNSBL 添加到 Sendmail 後,如何重新送出電子郵件以查看是否會被拒絕?

  • August 3, 2021

TL;博士

如何欺騙我自己的 sendmail 認為電子郵件來自特定的 IP 地址,以便由於 DNSBL 匹配而拒絕該郵件?

細節:

我執行自己的郵件伺服器,大多數垃圾郵件都被我添加到 /etc/mail/sendmail.mc 的 DNS 黑名單 (DNSBL) 阻止,如下所示:

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

今天進來了一些垃圾郵件(通過了所有測試),在檢查了MX ToolboxDNSBL Information之後,可以看到添加幾個 DNSBL 中的一個會阻止這個特定的垃圾郵件。

因此,我添加了另一個 DNSBL,現在我想通過將這封電子郵件重新送出到 Sendmail 來對其進行測試,但問題在於:它不會來自正確的 IP 地址,並且 DNSBL 不會認為它很糟糕。

這是我通常會使用的命令:

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

在我嘗試重新發明輪子之前,我想我先在這裡問一下。可能的想法:

  • 是否有用於發送郵件以偽造源 IP 的 CLI 選項?
  • 也許製作一個排隊的消息文件並將其直接放入隊列中?
  • 也許在我的機器上設置另一個IP地址,然後用它發送給自己?
  • OpenVPN 或 SSH 隧道會是一個快速解決方案嗎?
  • 可能可以載入共享庫來攔截系統呼叫,à la LibFakeTime
  • Dtrace 看起來很強大,它可以像這樣改變 getsockopt(2) 呼叫嗎?

謝謝!

在上面睡覺之後,解決方案最終變得微不足道:

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: yoda@the-force.com
RCPT TO: me@earth.com
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

瞧,生成的標題:

Return-Path: <yoda@the-force.com>
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 <me@earth.com>; 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: <yoda@the-force.com>
Message-Id: <202108030129.1731SlYY013775@earth.com>
Subject: Test subject

它還顯示 IP 地址沒有被阻止(DNSBL 不起作用?),所以從這個意義上說,測試是成功的。:-/

更新:哦!sendmail.mc 中的行應該是這樣的:

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

換句話說,前面的“dnl”註釋掉了所有的 DNSBL 行。:-(

Aaaa就是我們測試的原因,女士們,先生們。

引用自:https://serverfault.com/questions/1073189