5.1.4 Как обнаружить источник спама на VPS/Dedicated сервере. Как заблокировать почту для отдельного сайта
Спам (нежелательная почта) — это обычно массовая рассылка электронных сообщений, которые часто содержат рекламные предложения, нежелательные приглашения или мошеннические материалы. Спам может создаваться различными способами, включая автоматизированные скрипты на веб-сайтах, компрометированные учетные записи ssh/ftp, электронной почты или специализированные программные инструменты, направленные на массовую рассылку. Одним из важных аспектов управления сервером электронной почты является обнаружение источника спама для предотвращения негативных последствий, таких как блокировка IP-адресов или доменов, попадание в черные списки и ухудшение репутации сервера. Обнаружить источник спама можно проверив почтовую очередь сервера.
Почтовая очередь на сервере - это механизм управления отправкой и доставкой электронной почты. Когда сервер получает письмо для отправки, оно сохраняется в очереди, а затем отправляется адресатам через соответствующие протоколы, такие как SMTP. Если отправка не удалась из-за временных проблем или перегрузки, письмо остается в очереди для повторной отправки.
У каждого письма есть уникальный идентификатор, например, 1TrXS1-0003SL-3h, который используется для управления и логгирования в Exim.
Дополнительно: при борьбе с нежелательной почтой или спамом важно для каждой контактной формы на Вашем сайте устанавливать защиту от ботов в виде капчи. Часто возникают проблемы, когда спам рассылается через уязвимости или незащищенную контактную форму.
Пример капчи для защиты Ваших сайтов от нежелательных рассылок.
Команды для управления почтовой очередью Exim
Важно: команды для управления почтовой очередью следует выполнять от имени суперпользователя root. Они доступны только для виртуальных и выделенных серверов.
Для работы с почтовой очередью, Вам нужно подключиться к серверу с помощью протокола SSH. Дальше в статьи будут перечислены команды.
1. Просмотр почтовой очереди:
- exim -bpc: Просмотр количества писем, находящихся в почтовой очереди.
- exim -bpc
root@hostname:~# exim -bpc
90
- exim -bp: Команда покажет список всех писем, находящихся в очереди, включая их статус (например, “для отправки” или “отложено”).
- mailq: Полный аналог предыдущей команды
exim -bp
, которая отобразит содержание почтовой очереди. Важно отметить, что данная команда будет корректной не только для Exim4, но и для других почтовых SMTP сервисов: SendMail, Postfix.
- 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
писем, которые находятся в почтовой очереди.
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
.
- exim -Mvl id
- exim -Mvh id: Просмотр заголовков письма в почтовой очереди. Полезно при выявлении источников почтовой рассылки.
- exim -Mvh id
- exim -Mvb id: Просмотр тела/содержания письма в почтовой очереди. Полезно при выявлении источников почтовой рассылки.
- exim -Mvb id
Подробнее: при анализе списка почтовых сообщений легко определить отправителя почты, основываясь на общем объеме отправленных писем с конкретного почтового ящика или домена. Это отличительное свойство помогает быстро выявить потенциальные источники спама. Дополнительно, для определения источника спама можно проанализировать содержание, заголовки и логи нескольких подозрительных писем, используя соответствующие команды. Если спам поступает с взломанного почтового ящика, рекомендуется его отключить или изменить пароль в настройках ящика.
3. Очистка почтовой очереди:
- exim -Mrm id: Данная команда удалит из почтовой очереди письмо с указанным вами идентификтором id.
- exim -Mrm id
- exiqgrep -i -r “почтовый ящик или почтовый домен получателя” | xargs exim -Mrm: Данная команда удалит из почтовой очереди все письма, у которых получателем установлен указанный вами почтовый ящик или домен.
- exiqgrep -i -r admin@domain.com | xargs exim -Mrm
- exiqgrep -i -f “почтовый ящик или почтовый домен отправителя” | xargs exim -Mrm: Данная команда удалит из почтовой очереди все письма, у которых отправителем установлен указанный вами почтовый ящик или домен
- exiqgrep -i -f admin@domain.com | xargs exim -Mrm**
- exipick -i | xargs exim -Mrm: Данная команда удалит без разбора все письма из почтовой очереди**.
- exipick -i | xargs exim -Mrm
Упрощеный метод проверки почтовой очереди
Существует более простой способ просмотра почтовой очереди с помощью веб-интерфейса панели управления ISPManager4. Чтобы воспользоваться этим методом, сначала необходимо установить плагин Почтовая очередь. Выполните следующие действия:
-
Перейдите в панель управления виртуального или выделенного сервера, в раздел Настройки сервера -> Плагины и нажмите кнопку Установить в верхнем правом углу.
-
В списке, выберите плагин с названием ispmqueue, затем нажмите Установить. Подтвердите выбор, нажав на соответствующую галочку и затем Далее.
- Через несколько минут, обновите страницу браузера и у вас появится раздел для управления почтовой очередью, в категории Инструменты -> Почтовая очередь.
Важно: для установки плагина на сервере должна быть версия Python >=2.5. По умолчанию на наших шаблонах установлена совместимая версия. Однако, если Вы вручную выполнили обновление или планируете его выполнить, функционал Почтовой очереди не будет работать.
Блокировка работы почты
Важно: для эффективной блокировки рассылки спама важно понимать, каким именно методом отправляются письма. При анализе почтовых сообщений, через команду exim -Mvh id
, можно обнаружить различные ключевые моменты, которые могут указать на метод отправки. В частности, стоит обратить внимание на адрес отправителя и домен, а также на информацию в заголовках сообщений, которая может содержать данные о используемом протоколе (например, SMTP, PHPMail) и сервере отправителя. Дополнительно, поиск ключевых фраз или характеристик в тексте писем может помочь выявить типичные способы рассылки. Однако, для более точного определения метода отправки могут потребоваться дополнительные шаги анализа, такие как проверка логов веб-сервера или журналов приложений.
-
Если идет рассылка через CRON-задания, необходимо удалить соответствующее задание в разделе Инструменты -> Планировщик (Cron).
-
Когда спам отправляется с использованием почтового ящика, рекомендуется отключить его и изменить пароль.
-
Если письма рассылается через скрипты сайтов, можно временно отключить WWW-домен или полностью заблокировать отправку почты скриптами. Для того чтобы это сделать – нужно определить в каком режиме интерпретатора PHP работает Ваш сайт:
- Для режима PHP как модуль Apache в общем конфиге apache2 (/etc/apache2/apache2.conf) сервера под root нужно найти блок VirtualHost нужного домена и в строке
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f"
Удалите все содержимое, которое размещается в кавычках ("...")
. Сами кавычки при этом не удаляйте, нужно только удалить содержимое, которое размещается в них. Так же, сделать то же самое можно в разделе WWW-домены, в свойствах конфига apache2. После этого нужно перезагрузить сервис apache2, чтобы изменения вступили в силу.
- Для режима PHP как CGI, нужно перейти на уровень доступа пользователя, в Менеджере файлов найдите файл
php-bin/php.ini
, в строке
sendmail_path = "/usr/sbin/sendmail -t -i -f"
Удалить все содержимое, которое размещается в кавычках ("...")
. Сами кавычки при этом не удаляйте, нужно только удалить содержимое, которое размещается в них. При этом перезагружать ничего не нужно, и указанная блокировка будет распространяться на все WWW-домены данного пользователя, которые работают в режиме PHP CGI.
Важно отметить: указанная выше блокировка применяется только к скриптам и заданиям Cron, используемым для отправки почты. При этом почтовые ящики, созданные на том же домене, будут продолжать функционировать.
Продвинутые методы определения отправителей спам-рассылки
- Эта команда выводит список POST-запросов всех сайтов из лога доступа Nginx за последние 1000 строк. Она позволяет определить вредоносные файлы или скрипты, которые могут быть использованы для нежелательной рассылки или других вредоносных действий.
- tail -n 1000 /var/log/nginx/access.log | grep POST
Информируем: команда будет полезная, если Вы при проверке очереди mailq
нашли нежелательные письма, дальше проанализировав содержимое командой exim -Mvl id
, обнаружили что отправка идет скриптами. С помощью проверки лога /var/log/nginx/access.log
легко сопоставить по времени отправку письма и выполнение POST-запроса скриптом.
- Рассылка иногда могут производиться взломаными пользователями, которые выполнили подключение с помощью протокола SSH. Для определения такого пользователя воспользуйтесь командой:
- ps axu | grep ssh
Она выведет все SSH-подключения к серверу. Затем наберите команду:
- w
Которая отобразит все активные соединения. Обычно пользователь, которого нет в выводе этой команды, но есть в выводе предыдущей, взломан – в таком случае просто смените пароль пользователя либо его FTP-аккаунта.
- Команда
killall -u user
закроет все открытые SSH-соединения пользователя user.
- killall -u user
Если вместо логина пользователя указаны цифры либо FTP-аккаунт, которого в Пользователях не видно, его можно найти в файле /etc/shadow
либо /etc/passwd
.