Утро понедельника не задалось — при прочтении утренней почты обнаруживаю абузу с датацентра на один из моих серверов 🙁
При ознакомлении выясняется, что мне закинули какой то «сифак», который благополучно спамит добропорядочных граждан «via sendmail with smtp»
Предположив, что сиё действо выполняется с какого-то php скриптика сразу же встал вопрос о методе его поиска! Собственно — как?
Через мои защиты он уже каким то образом пролез, значит моими регулярками его не выцепить!
В идеале фукнцию отправки почты логировать — а там то я бы его по факту обнаружил!
Оказывается, начиная с PHP 5.3 такая возможность присутствует! и имея ей MAILHEAD
Пересобираем php с указанным выше патчем:
(инструкция для FreeBSD):
смотрим какая версия PHP
#php -v
у меня 5.3
#cd /usr/ports/lang/php53
#make config
отмечаем [X] MAILHEAD Enable mail header patch
#make
как все соберется без ошибок
#make deinstall
#make install clean
Далее в php.ini указываем куда писать лог
mail.log = /var/log/php-mail.log
рестартим веб сервер и делаем тестовую отправку
1 2 3 4 5 6 7 8 |
$to = ‘nobody@example.com’; $subject = ‘the subject’; $message = ‘hello’; $headers = ‘From: webmaster@example.com’ . «\r\n» . ‘Reply-To: webmaster@example.com’ . «\r\n» . ‘X-Mailer: PHP/’ . phpversion(); mail($to, $subject, $message, $headers); |
проверяем лог — если скрипт попал в лог — всё окей
Далее ловим гада.
Добавлю ещё выдержку со статьи:
Чтобы найти источник спам-рассылки на сайте, нужно в файле php.ini включить логирование рассылаемой почты директивами:
mail.add_x_header = On
mail.log = <путь до вашего пользовательского каталога>/php-mail.log
В моей ситуации я прикручивал эту фишку к виртуальной машине Битрика, с несколькими хостами на одной виртуалке.
На каждый хостинг была включена openbasedir соответственно путь для почтовых логов нужно определять внутри openbasedir и задавать отдельно для каждого сайта,
поэтому выставлять значения нужных параметров я решил не в php.ini а в конфиге аппача для каждого сайта
php_admin_value mail.add_x_header On
php_admin_value mail.log <путь до вашего пользовательского каталога>/php-mail.log
PS
Быстро удалить спам письма из очереди
find /var/spool/clientmqueue/ -type f -delete
find /var/spool/mqueue/ -type f -delete
там же наблюдаем за новыми отправками
Один комментарий на «“Как найти php скрипт — mail спамер?”»
[…] на одном из хостингов с помощью обновлённой статейки Как найти php скрипт — mail спамер? Сразу же вопрос — может ещё чего прокинули […]