Article ID: 1711, created on Jun 1, 2010, last review on Jun 17, 2016

  • Applies to:
  • Plesk for Linux/Unix

Решение

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

114845 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 

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article
Save as PDF