Article ID: 766, created on Jun 13, 2010, last review on Oct 10, 2014

  • Applies to:
  • Plesk 11.0 for Linux
  • Plesk 11.5 for Linux

Решение

Прежде всего убедитесь, что для всех доменов для параметра "Почта несуществующим пользователям" установлено значение "отклонять", а не "пересылать". Эти настройки можно изменить для всех доменов, используя групповые операции на вкладке "Домены" в панели управления Parallels Plesk.

Параметр "Отклонять почту для несуществующих пользователей" доступен начиная с Plesk 7.5.3.

Также убедитесь, что все IP-адреса и сети, входящие в белые списки, действительно надежны.

С помощью утилиты Qmail проверьте количество сообщений в очереди:

# /var/qmail/bin/qmail-qstat
messages in queue: 27645
messages in queue but not yet preprocessed: 82

Если сообщений слишком много, попробуйте определить источник спама.

Если сообщения отправляются авторизованным пользователем, но не через PHP-сценарий, вы можете определить пользователя, который отправил больше всего сообщений, с помощью приведенной ниже команды (доступно начиная с Plesk 8.x). Для просмотра этих записей на вашем сервере должна быть включена проверка подлинности SMTP:

# cat /usr/local/psa/var/log/maillog |grep -I smtp_auth |grep -I user |awk '{print $11}' |sort |uniq -c |sort -n

Путь к файлу 'maillog' может отличаться в зависимости от ОС.

Теперь воспользуйтесь утилитой qmail-qread, которая позволяет просматривать заголовки сообщений:

# /var/qmail/bin/qmail-qread
18 Jul 2005 15:03:07 GMT #2996948 9073 <user@domain.com> bouncing
done remote user1@domain1.com
done remote user2@domain2.com
done remote user3@domain3.com
....

Эта команда выдает список отправителей и получателей сообщений. Если то или иное сообщение имеет слишком много получателей, есть вероятность, что это спам. Теперь попробуйте найти это сообщение в очереди по его ID (в нашем примере это 2996948):

# find /var/qmail/queue/mess/ -name 2996948

Чтобы выяснить, откуда и как это сообщение было отправлено в первый раз, найдите в нем строку "Received". Например, если вы нашли такую запись:

Received: (qmail 19514 invoked by uid 10003); 13 Sep 2005 17:48:22 +0700

...значит, это сообщение было отправлено через сценарий CGI пользователем с UID 10003. С помощью этого UID можно определить домен:

# grep 10003 /etc/passwd

Если строка "Received" содержит UID пользователя "apache", значит, спам был отправлен через сценарий PHP. В этом случае попробуйте определить источник спама с помощью информации из самого сообщения (по адресу отправителя/получателя и прочим признакам).

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

# lsof +r 1 -p `ps axww | grep httpd | grep -v grep | awk ' { if(!str) { str=$1 } else { str=str","$1}}END{print str}'` | grep vhosts | grep php

Также вы можете узнать, как определить, какие домены отправляют почту через PHP-сценарии, с помощью этой статьи.

Если в разделе "Received" присутствуют похожие строки:

Received: (qmail 19622 invoked from network); 13 Sep 2005 17:52:36 +0700
Received: from external_domain.com (192.168.0.1)

...значит, сообщение было принято и доставлено через SMTP и отправитель является авторизованным пользователем почты.

ВАЖНО. Узнайте, как пересоздать очередь в Qmail

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838 aea4cd7bfd353ad7a1341a257ad4724a 0a53c5a9ca65a74d37ef5c5eaeb55d7f 01bc4c8cf5b7f01f815a7ada004154a2 caea8340e2d186a540518d08602aa065 e0aff7830fa22f92062ee4db78133079

Email subscription for changes to this article
Save as PDF