Очередь qmail на моем сервере (работающем под управлением Plesk на CentOS 5.2) раздувает до 120 000+ сообщений в очереди за ночь. Сообщения в очереди явно являются спамом.
Я удалил их за последний день с помощью qmHandle, но я не могу определить, как они все еще отправляются. Адрес электронной почты, с которого они отправляются, даже был добавлен в файл qmail badmailfrom (и я тестировал через Telnet, что он действительно блокирует электронную почту с этого адреса), но электронные письма продолжают поступать.
Я почти уверен, что атака использует веб-форму одного из доменов, размещенных на сервере. Я почти уверен, что смогу найти способ защитить форму, если смогу определить, какой именно. Вопрос в том, как определить, из какой формы приходят электронные письма?
Вот решение! В заголовках каждого спама будет указан идентификатор пользователя, показывающий, какая учетная запись на сервере используется для отправки писем. Я смог увидеть заголовки писем в очереди qmail, заглянув в Plesk (8.6.0) в Сервер> Почта> Очередь почты. Когда я щелкнул по теме, я увидел в первой строке что-то вроде:
qmail 11850 invoked by uid 10059
Uid 10059 идентифицирует пользователя на сервере, который вызвал qmail. Чтобы узнать, какой это пользователь, войдите на свой сервер как root и выполните следующую команду из терминала:
grep 10059 /etc/passwd
Это будет искать в файле passwd на вашем сервере строку 10059 и возвращать полученный текст.
После того, как я узнал, какой это был пользователь, я смог отключить доступ к оболочке, добавить CAPTCHA ко всем веб-формам на сайте и изменить FTP и другие связанные пароли. Это помогло мне остановить спамера, получившего контроль.