(044) 222-9-888
Поддержка абонентов: support@thehost.ua
Ваши отзывы и предложения: #feedback

Как определить кто шлет спам на VPS/Dedicated. Блокировка почты для отдельного сайта

Практически па всех наших серверах мы используем для отправки почты сервис под названием Exim.
Exim — это так называемый MTA ( Mail Transfer Agent ), агент передачи сообщений, в просторечии - почтовик или почтовый сервер, использующийся во многих операционных системах семейства Unix.

У каждого письма, которое проходит через почтовый сервис есть свой идентификатор или по-другому уникальный номер письма. Идентификаторы сообщений в очередях Exim, представляют из себя буквенно-цифровые последовательности в верхнем и нижнем регистра, например "1TrXS1-0003SL-3h", и используются большинством команд администрирования очереди и логгирования в Exim.

Теперь рассмотрим краткий список команд ssh https://thehost.ua/wiki/ssh-connect по управлению почтой и почтовой очередью. Важно! Все команды нужно выполнять от root и они доступны только для VPS/Dedicated

Вывести количество сообщений в почтовой очереди (то, что мы видим в мониторинге): exim -bpc

Печать списка сообщений в очереди. Выводятся, время постановки в очередь, размер, ID сообщения, отправитель, получатель: exim -bp
Пример такого списка:
4h 791 1TrXgs-0004t8-0W noelle_foreman@artemida2012.kiev.ua
bbyy@aol.com

4h 1.8K 1TrXgu-0004tZ-5w
noelle_foreman@artemida2012.kiev.ua

Соответственно идентификаторы этих двух сообщений: 1TrXgs-0004t8-0W и 1TrXgu-0004tZ-5w

Удалить сообщение из очереди: exim -Mrm [id]
(Пример: exim -Mrm 1TrXgs-0004t8-0W, удалит из очереди сообщение с переданным идентификатором)

Просмотреть заголовки сообщений: exim -Mvh [id]

Просмотреть тело сообщений: exim -Mvb [id]

Просмотр логов сообщения: exim -Mvl [id]

Удалить все заблокированные сообщения в почтовой очереди: exipick -z -i | xargs exim -Mrm

Удалить все сообщения из почтовой очереди, где домен отправителя domain: exipick -f @domain -i | xargs exim -Mrm

Удалить все сообщения из почтовой очереди, где домен получателя domain: exipick -r @domain -i | xargs exim -Mrm

Удалить все сообщения из почтовой очереди: exipick -i | xargs exim -Mrm

Если в очереди несколько сотен тысяч сообщений, быстрее будет выполнить удаление очереди командами

rm -rfv /var/spool/exim4/input/
rm -rfv /var/spool/exim4/msglog/

Теперь рассмотрим как найти кто и каким образом рассылает спам на сервере и как это заблокировать?
Для этого мы делаем следующее:
Вывести список сообщений в почтовой очереди с помощью команды exim -bp
Визуально определить в списке с какого домена либо ящика идет почта. Обычно это легко видно за счет большого количества почты, отправленной с одного и того-же почтового ящика. Также определить с чего именно идет спам можно анализируя логи, тело и заголовок несколько однообразных писем с помощью команд, описанных выше.
Если спам идет со взломанного почтового ящика - отключить его, либо сменить пароль ящика в его свойствах в разделе Почтовые ящики
Если спам идет с крон-задания - удалить такое задание в разделе Планировщик Cron
Если с сайта - Найденный WWW домен нужно либо заблокировать либо заблокировать почту для этого www домена, сайт при этом будет работать - не работать будет только почта, отправленная скриптом php mail - для режимов работы php cgi и apache это делается по разному:
- для режима php apache в общем конфиге apache2 сервера под root /etс/apache2/apache2.conf найти блок Virtualhost нужного домена и в строчке
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f
сменить в пути /usr/sbin/sendmail слово sendmail на sendmoil.
Либо сделать та же в разделе www домены в свойствах конфига apache2. После этого нужно перезагрузить сервис apache2 чтобы изменения вступили в силу. После этого php mail только для этого сайта и только в режиме php apache работать не будет и скрипты не смогут рассылать письма.
- для режима php cgi под пользователем - владельцем сайта в файле php-bin/php.ini в строчке sendmail_path = "/usr/sbin/sendmail -t -i -f меняем в пути /usr/sbin/sendmail слово sendmail на sendmoil. При этом перезагружать ничего не нужно и указанная блокировка будет распространятся на ВСЕ www домены данного пользователя, которые работают в режиме php cgi, а не на какой-то конкретный.
Еще раз хотелось бы отметить, что такая блокировка распространяется только на скрипты и крон с помощью которых распространяется почта - ящики, созданные на этом же домене будут работать.

Если определить кто шлет спам с помощью очереди не удалось, можно воспользоватся еще несколькими командами:

tail -n 1000 /var/log/nginx/access.log | grep POST

выведет список POST запросов всех сайтов, в которых можно определить вредоносный файл, который генерирует рассылку.

Также рассылку могут делать подключившись по ssh. Для определения взломанного пользователя воспользуйтесь командой

ps axu | grep ssh

которая выведет все ssh подключения к серверу. Затем наберите команду

w

которая выведет все активные соединения. Обычно пользователь, которого нет в выводе этой команде, но есть в выводе предыдущей взломан - в таком случае просто смените пароль пользователя либо его ftp аккаунта

команда killall -u user закроет все открытые ssh соединения пользователя user

Если вместо логина пользователя указаны цифры либо ftp-аккаунт пользователя, которого в Пользователях не видно, найти можно в файле /etc/group либо /etc/passwd

Также скрипт рассылки может быть в папках tmp и var/tmp - эти папки также стоит проверить и почистить

Еще рассылать спам можно запуская скрипты через cron. Быстро просмотреть все cron всех пользователей можно в папке /var/spool/cron/crontabs

Если на сервере установлен не Exim a postfix, можно воспользоваться следующими командами
mailq вывод почтовой очереди

postsuper -d ALL чистка почтовой очереди

Также в панели управления ISP Manager 4 для работы с почтовой очередью есть возможность установить и использовать плагин, который называется Почтовая очередь.
Установить плагин можно только из под root в разделе Плагины - нажмите Установить справа вверху, из списка выберите ispmque и установите его. После этого обновите панель управления и в разделе Инструменты появится новый раздел Почтовая очередь. В этом разделе можно полностью просматривать всю очередь и все записи каждого письма в очереди, а также чистить очередь и повторять отправку отдельных писем, то есть по сути все то же что и описанным выше методом по ssh.