например:
[ad#ad-5]
(ИП адреса и домены изменены)
Return-Path:
X-Originating-IP: [66.98.220.220]
Authentication-Results: mta222.mail.re2.yahoo.com from=million.com; domainkeys=neutral (no sig)
Received: from 66.98.220.220 (EHLO s120.valroot.com) (66.98.220.220)
by mta222.mail.re2.yahoo.com with SMTP; Sat, 20 Sep 2008 23:51:41 -0700
Received: from nobody by s120.valroot.com.net with local (Exim 4.69)
(envelope-from )
id 1KhIm3-0000KS-16
for naecole@yahoo.com; Sun, 21 Sep 2008 01:50:27 -0500
To: naeco@yahoo.com
Subject: Winning Number (2-9-41-48-51) Bonus Ball (37).
From: MILLIONS
Reply-To: fastwaycouriers@yahoo.com.hk
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Message-Id:
Date: Sun, 21 Sep 2008 01:50:27 -0500
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - s120.valroot.com
X-AntiAbuse: Original Domain - yahoo.com
X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12]
X-AntiAbuse: Sender Address Domain - s120.valroot.com
Content-Length: 560
MIME element (text/plain)
Be notified by our organization MILLIONS
http://www.millions.com/numbers/
That your email id has just won you a lump sum pay out of $250,000.00.
Как видно из хедеров жалобы, мы не видим домена либо логина спаммера
Мониторинг файла exim_mainlog также ничем не помогает, мы видим, что письмо было отправлено, и видим кому было отправлено...но самое главное, мы НЕ видим кто это отправил...
Если Вы откроете свой файл php.ini,
найти его можно
locate php.ini
то мы увидим, что почтовая программа стоит: /usr/sbin/sendmail
99.99% скриптов выполняющие функцию mail() в PHP используют /usr/sbin/sendmail для отправки сообщений.
Итак, как же найти спаммера?
Требования: apache 1.3x, 2.x. PHP 4/5, Exim. Может работает и в PHP 6, честно, не знаю. Тестировал на php 4/5, с панелью управления cpanel/whm на системе Red Hat Enterprise.
Шаг №1.
Заходим под рутом
Шаг №2
Останавливаем exim:
service exim stop
Шаг №3
Переименовуем /usr/sbin/sendmail в /usr/sbin/sendmail.hidden
mv /usr/sbin/sendmail /usr/sbin/sendmail.hidden
Шаг №4
Делаем шлюз
Создаем новый файл /usr/sbin/sendmail
vi /usr/sbin/sendmail
Вставляем следующее:
#!/usr/local/bin/perl
# use strict;
use Env;
my $date = `date`;
chomp $date;
open (INFO, “>>/var/log/spam_log”) || die “Failed to open file ::$!”;
my $uid = $>;
my @info = getpwuid($uid);
if($REMOTE_ADDR) {
print INFO “$date - $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME n”;
}
else {
print INFO “$date - $PWD - @infon”;
}
my $mailprog = ‘/usr/sbin/sendmail.hidden’;
foreach (@ARGV) {
$arg=”$arg” . ” $_”;
}
open (MAIL,”|$mailprog $arg”) || die “cannot open $mailprog: $!n”;
while ( ) {
print MAIL;
}
close (INFO);
close (MAIL);
Сохраняем и выходим (для vi - ESC, :wq)
Шаг №5
Даем права на запуск для /usr/sbin/sendmail:
chmod a+x /usr/sbin/sendmail
Шаг №6
Создаем новый файл лога, для мониторинга сообщений от Nobody:
touch /var/log/spam_log
И разрешаем запись в него:
chmod 0777 /var/log/spam_log
Шаг №7
Запускаем Exim
/etc/init.d/exim start
Теперь мы можем мониторить все сообщения от nobody, все эти логи находятся здесь: /var/log/spam_log
tail -f /var/log/spam_log
Также можно выставить права только на чтение и выполнения для /usr/sbin/sendmail
довольно таки полезная штука. Делается это командой:
chattr +i /usr/sbin/sendmail
Вернуть обратно:
chattr -i /usr/sbin/sendmail
В логах будем видеть примерно следующее:
Fri Sep 19 00:57:02 EDT 2008 - / - Fri Sep 19 00:58:02 EDT 2008 - / - Fri Sep 19 00:59:02 EDT 2008 - / - Fri Sep 19 01:00:02 EDT 2008 - / - Fri Sep 19 01:01:02 EDT 2008 - / - Fri Sep 19 01:02:02 EDT 2008 - / - Fri Sep 19 01:03:02 EDT 2008 - / - Fri Sep 19 01:04:02 EDT 2008 - / - Fri Sep 19 01:04:18 EDT 2008 - /home/girls4sp/public_html - Fri Sep 19 01:05:02 EDT 2008 - / - Fri Sep 19 01:05:16 EDT 2008 - - Fri Sep 19 01:06:03 EDT 2008 - / - Fri Sep 19 01:07:02 EDT 2008 - / - Fri Sep 19 01:08:02 EDT 2008 - / -
Да уж, это на самом деле непросто. :)
ОтветитьУдалить