TL;DR
이메일이 특정 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
바퀴를 재발명하기 전에 먼저 여기에 물어보고 싶다고 생각했습니다. 가능한 아이디어:
- 소스 IP를 위조하기 위해 메일을 보내는 CLI 옵션이 있습니까?
- 대기 중인 메시지 파일을 만들어 대기열에 직접 넣을 수 있을까요?
- 아마도 내 컴퓨터에 다른 IP 주소를 설정하고 그 주소를 나에게 보낼 수 있을까요?
- OpenVPN이나 SSH 터널이 빠른 해결책이 될까요?
- 시스템 호출을 가로채기 위해 공유 라이브러리를 로드할 수도 있습니다.Lib가짜 시간?
- Dtrace는 강력해 보입니다. getockopt(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 라인을 주석 처리한 것입니다. :-(
아아아아아아아아아아아아아아아아아앙이것이것이 우리가 테스트하는 이유입니다, 신사 숙녀 여러분.