После добавления нового DNSBL в Sendmail, как я могу повторно отправить электронное письмо, чтобы узнать, будет ли оно отклонено?

TL; DR

Как я могу обмануть мой собственный sendmail, заставив думать, что электронное письмо приходит с определенного IP-адреса, чтобы он отклонял сообщение из-за совпадения DNSBL?

Подробности:

У меня есть собственный почтовый сервер, и большая часть спама блокируется черными списками DNS (DNSBL), которые я добавил в /etc/mail/sendmail.mc примерно так:

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 можно было увидеть, что добавление одного из нескольких DNSBL заблокировало бы этот конкретный спам.

Итак, я добавил еще один DNSBL, и теперь я хочу протестировать его, повторно отправив это письмо в Sendmail, но в этом проблема: оно не будет приходить с правильного IP-адреса, и DNSBL не будет считаю это плохим.

Вот команду, которую я обычно использовал бы:

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

Прежде чем я попытаюсь изобрести колесо, я подумал, что сначала спрошу здесь. Возможные идеи:

  • Есть ли опция CLI для sendmail для подделки IP-адреса источника?
  • Может быть, создать файл сообщений в очереди и напрямую поместить его в очередь?
  • Возможно, настроить другой IP-адрес на моей машине, и отправить мне с ним?
  • Будет ли туннель OpenVPN или SSH быстрым решением?
  • Возможно, можно загрузить разделяемую библиотеку для перехвата системных вызовов, а-ля LibFakeTime ?
  • Dtrace смотрит мощный, может ли он так изменять вызовы getsockopt (2)?

Спасибо!

1
задан 31 July 2021 в 23:56
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: 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 не работает? ), так что в этом смысле испытание прошло успешно. :-/

Обновление: D'oh! Вместо этого строки в 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и это вот почему мы тестируем, дамы и господа.

1
ответ дан 3 August 2021 в 01:46

Теги

Похожие вопросы