Email-Server
將新的 DNSBL 添加到 Sendmail 後,如何重新送出電子郵件以查看是否會被拒絕?
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 Toolbox和DNSBL 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這就是我們測試的原因,女士們,先生們。