PHP-скрипты на сервере отправляют большой объем почтовых сообщений. Как определить, на каких доменах выполняются эти скрипты?

Относится к:

  • Plesk for Linux

Создана:

2016-11-16 13:24:35 UTC

Изменена:

2017-03-23 12:03:40 UTC

4

Помогла ли вам статья?


Есть вопросы?

Отправить запрос

PHP-скрипты на сервере отправляют большой объем почтовых сообщений. Как определить, на каких доменах выполняются эти скрипты?

Решение

Примечание. Эта статья предназначена для Qmail. Если вы пользуетесь Postfix, пожалуйста, смотрите следующую статью:

213914405 PHP-скрипты на сервере отправляют большой объем почтовых сообщений. Как определить, на каких доменах выполняются эти скрипты, если я использую Postfix?

Предупреждение. Использование этого способа может увеличить нагрузку на сервер, так как предполагает добавление дополнительных этапов в процесс обработки каждого сообщения. Если после выполнения действий из пункта 2 у вас возникли проблемы с высокой загрузкой сервера, откатите внесенные изменения, как описано в пункте 3.

Существует способ определить, из какой папки был запущен PHP-скрипт, отправляющий почтовые сообщения.

Примечание. В зависимости от вашей версии ОС и Parallels Plesk ваши пути могут отличаться от указанных ниже.

1) Создайте сценарий /var/qmail/bin/sendmail-wrapper со следующим содержимым:

#!/bin/sh
(echo X-Additional-Header: $PWD ;cat) | tee -a /var/tmp/mail.send|/var/qmail/bin/sendmail-qmail "$@"

Обратите внимание, что этот сценарий должен состоять из двух строк, включая #!/bin/sh

2) Создайте файл журнала /var/tmp/mail.send и выдайте ему права "a+rw". Разрешите исполнение программы-оболочки, переименуйте старую версию sendmail и привяжите ее к новой программе-оболочке:

~# touch /var/tmp/mail.send
~# chmod a+rw /var/tmp/mail.send
~# chmod a+x /var/qmail/bin/sendmail-wrapper
~# mv /var/qmail/bin/sendmail /var/qmail/bin/sendmail-qmail
~# ln -s /var/qmail/bin/sendmail-wrapper /var/qmail/bin/sendmail

3) Подождите как минимум два часа и затем переименуйте sendmail обратно:

~# rm -f /var/qmail/bin/sendmail
~# mv /var/qmail/bin/sendmail-qmail /var/qmail/bin/sendmail

Просмотрите файл /var/tmp/mail.send . Там должны присутствовать строки, начинающиеся с "X-Additional-Header:", - в них указаны папки, где находятся сценарии, отправившие сообщения.

Список всех папок, из которых были запущены почтовые PHP-сценарии, можно получить с помощью следующей команды:

~# grep X-Additional /var/tmp/mail.send | grep `cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//' `

Если эта команда не выдала никаких результатов, значит, из папки виртуальных серверов Plesk не отправлялись сообщения с помощью функции PHP mail().

Если файл /var/tmp/mail.send содержит только следующую запись:

X-Additional-Header: /var/www

и не указывает на конкретную папку, измените полномочия для Perl:

~# chmod 700 /usr/bin/perl
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 4 из 11
Еще есть вопросы? Отправить запрос
Войдите в службу, чтобы оставить комментарий.