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 のうちの 1 つを追加すると、この特定のスパムがブロックされることがわかりました。

そこで、別の DNSBL を追加し、この電子メールを Sendmail に再送信してテストしたいのですが、そこに問題があります。正しい IP アドレスから送信されていないため、DNSBL はそれを悪いものとして認識しません。

通常使用するコマンドは次のとおりです。

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

車輪の再発明を試みる前に、まずここで質問してみようと思いました。考えられるアイデア:

  • 送信元 IP を偽装するための sendmail の CLI オプションはありますか?
  • キューに入れられたメッセージ ファイルを作成し、それを直接キューに入れることは可能でしょうか?
  • 自分のマシンに別の IP アドレスを設定し、それを使って自分自身に送信するというのはどうでしょうか?
  • OpenVPN または SSH トンネルは簡単な解決策でしょうか?
  • おそらく、共有ライブラリをロードしてシステムコールを傍受することも可能だろう。リブフェイクタイム?
  • 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 行すべてをコメント アウトしていました。:-(

そしてこれそれが私たちがテストをする理由です、皆様。

関連情報