在 Sendmail 新增新的 DNSBL 後,如何重新提交電子郵件以查看是否會被拒絕?

在 Sendmail 新增新的 DNSBL 後,如何重新提交電子郵件以查看是否會被拒絕?

長話短說

如何欺騙我自己的 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工具箱DNSBL資訊可以看到,新增幾個 DNSBL 之一將會封鎖該特定垃圾郵件。

因此,我添加了另一個 DNSBL,現在我想透過重新提交此電子郵件到 Sendmail 來測試它,但問題就在這裡:它不會來自正確的 IP 位址,並且 DNSBL 不會認為它是錯誤的。

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

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

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

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

謝謝!

答案1

睡了一覺後,解決方案變得微不足道:

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

瞧,生成的標頭:

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

它還顯示該 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 行。 :-(

啊啊啊女士們先生們,這就是我們進行測試的原因。

相關內容