5.1.4 Как обнаружить источник спама на VPS/Dedicated сервере. Как заблокировать почту для отдельного сайта

Банер

Спам (нежелательная почта) — это обычно массовая рассылка электронных сообщений, которые часто содержат рекламные предложения, нежелательные приглашения или мошеннические материалы. Спам может создаваться различными способами, включая автоматизированные скрипты на веб-сайтах, компрометированные учетные записи ssh/ftp, электронной почты или специализированные программные инструменты, направленные на массовую рассылку. Одним из важных аспектов управления сервером электронной почты является обнаружение источника спама для предотвращения негативных последствий, таких как блокировка IP-адресов или доменов, попадание в черные списки и ухудшение репутации сервера. Обнаружить источник спама можно проверив почтовую очередь сервера.

Почтовая очередь на сервере - это механизм управления отправкой и доставкой электронной почты. Когда сервер получает письмо для отправки, оно сохраняется в очереди, а затем отправляется адресатам через соответствующие протоколы, такие как SMTP. Если отправка не удалась из-за временных проблем или перегрузки, письмо остается в очереди для повторной отправки.

У каждого письма есть уникальный идентификатор, например, 1TrXS1-0003SL-3h, который используется для управления и логгирования в Exim.

Дополнительно: при борьбе с нежелательной почтой или спамом важно для каждой контактной формы на Вашем сайте устанавливать защиту от ботов в виде капчи. Часто возникают проблемы, когда спам рассылается через уязвимости или незащищенную контактную форму.

Пример капчи для защиты Ваших сайтов от нежелательных рассылок.

Команды для управления почтовой очередью Exim

Важно: команды для управления почтовой очередью следует выполнять от имени суперпользователя root. Они доступны только для виртуальных и выделенных серверов.

Для работы с почтовой очередью, Вам нужно подключиться к серверу с помощью протокола SSH. Дальше в статьи будут перечислены команды.

1. Просмотр почтовой очереди:

  • exim -bpc: Просмотр количества писем, находящихся в почтовой очереди.
  1. exim -bpc
Пример выполнения команды exim -bpc:
root@hostname:~# exim -bpc
90
  • exim -bp: Команда покажет список всех писем, находящихся в очереди, включая их статус (например, “для отправки” или “отложено”).
  • mailq: Полный аналог предыдущей команды exim -bp, которая отобразит содержание почтовой очереди. Важно отметить, что данная команда будет корректной не только для Exim4, но и для других почтовых SMTP сервисов: SendMail, Postfix.
  1. mailq
Пример выполнения команды mailq:
root@hostname:~# mailq
1h 8.0K 1rojOt-00049d-Mj mailbox1@domain.com
2h 3.8K 1rojlX-0002mO-Gq mailbox2@domain2.com
3h 1.8K 1roiSp-0002Ua-Qb mailbox2@domain3.com
4h 2.4K 1rog3c-0001cJ-5f mailbox2@domain2.com
  • exipick -i: Просмотр списка идентификаторов id писем, которые находятся в почтовой очереди.
Пример выполнения команды exipick -i:
root@hostname~# exipick -i
1rnfUl-0001g4-6o
1ro6q2-0008Ag-0c
1ro8XY-0001OE-MG
1rog3c-0001cJ-5f
  • exiqgrep -i -r “почтовый ящик или почтовый домен получателя”: Просмотр списка идентификаторов писем, которые находятся в почтовой очереди и адресованы искомому почтовому ящику или домену.

Дополнительно: для получения дополнительной информации сохраните идентификатор письма, например, 1roiSp-0002Ua-Qb, который будет обозначаться как id. Этот идентификатор будет использоваться при формировании команды для получения подробной информации.

2. Просмотр информации об единичных письмах, используя идентификатор письма id:

  • exim -Mvl id: Просмотр лога отправки письма с указанным идентификатором id, где id - это идентификатор письма из списка очереди (может быть найден при использовании команды exim -bp). Пример идентификатора: 1rog3c-0001cJ-5f.
  1. exim -Mvl id
  • exim -Mvh id: Просмотр заголовков письма в почтовой очереди. Полезно при выявлении источников почтовой рассылки.
  1. exim -Mvh id
  • exim -Mvb id: Просмотр тела/содержания письма в почтовой очереди. Полезно при выявлении источников почтовой рассылки.
  1. exim -Mvb id

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

3. Очистка почтовой очереди:

  • exim -Mrm id: Данная команда удалит из почтовой очереди письмо с указанным вами идентификтором id.
  1. exim -Mrm id
  • exiqgrep -i -r “почтовый ящик или почтовый домен получателя” | xargs exim -Mrm: Данная команда удалит из почтовой очереди все письма, у которых получателем установлен указанный вами почтовый ящик или домен.
  1. exiqgrep -i -r admin@domain.com | xargs exim -Mrm
  • exiqgrep -i -f “почтовый ящик или почтовый домен отправителя” | xargs exim -Mrm: Данная команда удалит из почтовой очереди все письма, у которых отправителем установлен указанный вами почтовый ящик или домен
  1. exiqgrep -i -f admin@domain.com | xargs exim -Mrm**
  • exipick -i | xargs exim -Mrm: Данная команда удалит без разбора все письма из почтовой очереди**.
  1. exipick -i | xargs exim -Mrm

Упрощеный метод проверки почтовой очереди

Существует более простой способ просмотра почтовой очереди с помощью веб-интерфейса панели управления ISPManager4. Чтобы воспользоваться этим методом, сначала необходимо установить плагин Почтовая очередь. Выполните следующие действия:

  1. Перейдите в панель управления виртуального или выделенного сервера, в раздел Настройки сервера -> Плагины и нажмите кнопку Установить в верхнем правом углу.

  2. В списке, выберите плагин с названием ispmqueue, затем нажмите Установить. Подтвердите выбор, нажав на соответствующую галочку и затем Далее.

Установка функционала почтовой очереди

  1. Через несколько минут, обновите страницу браузера и у вас появится раздел для управления почтовой очередью, в категории Инструменты -> Почтовая очередь. Управление почтовой очередью

Важно: для установки плагина на сервере должна быть версия Python >=2.5. По умолчанию на наших шаблонах установлена совместимая версия. Однако, если Вы вручную выполнили обновление или планируете его выполнить, функционал Почтовой очереди не будет работать.

Блокировка работы почты

Важно: для эффективной блокировки рассылки спама важно понимать, каким именно методом отправляются письма. При анализе почтовых сообщений, через команду exim -Mvh id, можно обнаружить различные ключевые моменты, которые могут указать на метод отправки. В частности, стоит обратить внимание на адрес отправителя и домен, а также на информацию в заголовках сообщений, которая может содержать данные о используемом протоколе (например, SMTP, PHPMail) и сервере отправителя. Дополнительно, поиск ключевых фраз или характеристик в тексте писем может помочь выявить типичные способы рассылки. Однако, для более точного определения метода отправки могут потребоваться дополнительные шаги анализа, такие как проверка логов веб-сервера или журналов приложений.

  • Если идет рассылка через CRON-задания, необходимо удалить соответствующее задание в разделе Инструменты -> Планировщик (Cron).

  • Когда спам отправляется с использованием почтового ящика, рекомендуется отключить его и изменить пароль.

  • Если письма рассылается через скрипты сайтов, можно временно отключить WWW-домен или полностью заблокировать отправку почты скриптами. Для того чтобы это сделать – нужно определить в каком режиме интерпретатора PHP работает Ваш сайт:

  1. Для режима PHP как модуль Apache в общем конфиге apache2 (/etc/apache2/apache2.conf) сервера под root нужно найти блок VirtualHost нужного домена и в строке
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f"

Удалите все содержимое, которое размещается в кавычках ("...") . Сами кавычки при этом не удаляйте, нужно только удалить содержимое, которое размещается в них. Так же, сделать то же самое можно в разделе WWW-домены, в свойствах конфига apache2. После этого нужно перезагрузить сервис apache2, чтобы изменения вступили в силу.

  1. Для режима PHP как CGI, нужно перейти на уровень доступа пользователя, в Менеджере файлов найдите файл php-bin/php.ini, в строке
sendmail_path = "/usr/sbin/sendmail -t -i -f"

Удалить все содержимое, которое размещается в кавычках ("...") . Сами кавычки при этом не удаляйте, нужно только удалить содержимое, которое размещается в них. При этом перезагружать ничего не нужно, и указанная блокировка будет распространяться на все WWW-домены данного пользователя, которые работают в режиме PHP CGI.

Важно отметить: указанная выше блокировка применяется только к скриптам и заданиям Cron, используемым для отправки почты. При этом почтовые ящики, созданные на том же домене, будут продолжать функционировать.

Продвинутые методы определения отправителей спам-рассылки

  • Эта команда выводит список POST-запросов всех сайтов из лога доступа Nginx за последние 1000 строк. Она позволяет определить вредоносные файлы или скрипты, которые могут быть использованы для нежелательной рассылки или других вредоносных действий.
  1. tail -n 1000 /var/log/nginx/access.log | grep POST

Информируем: команда будет полезная, если Вы при проверке очереди mailq нашли нежелательные письма, дальше проанализировав содержимое командой exim -Mvl id, обнаружили что отправка идет скриптами. С помощью проверки лога /var/log/nginx/access.log легко сопоставить по времени отправку письма и выполнение POST-запроса скриптом.

  • Рассылка иногда могут производиться взломаными пользователями, которые выполнили подключение с помощью протокола SSH. Для определения такого пользователя воспользуйтесь командой:
  1. ps axu | grep ssh

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

  1. w

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

  • Команда killall -u user закроет все открытые SSH-соединения пользователя user.
  1. killall -u user

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