Если ваш сайт WordPress отправляет слишком много спам-писем, проверьте почтовую очередь вашего сервера и удалите оттуда ожидающие письма.
Позвольте сначала объяснить сценарий проблемы. Допустим мы размещаем некоторые из моих сайтов WordPress на сервере UpCloud с помощью Server Pilot.
И использовали плагин WPForms для создания расширенных контактных форм. При создании этих форм мы не использовал опцию reCAPTCHA из-за своей лени. Со временем мы столкнемся с атаками спама.
Каждый раз, когда кто-то отправляет запись через контактную форму, наша установка WordPress отправляет уведомление по электронной почте с приложенным сообщением.
И мы не говорим об одном или двух электронных письмах. Мы даже не говорим о сотнях электронных писем, а о сотнях тысяч электронных писем в течение 30 минут.
Вообразите ужас получения очень много электронных писем за такой короткий промежуток времени.
Мы сделали несколько вещей для борьбы со спам-атаками через контактную форму в WordPress.
- Включили reCAPTCHA. Но продолжали получать спам по электронной почте.
- Удалил встроенную контактную форму со страницы. Но еще продолжали получать письма со спамом.
- Отключил плагин WPForms, который использовался ботами, но спам-сообщения не прекращались.
Причина, по которой продолжали получать эти письма даже после деактивации плагина «виновника», заключалась в том, что это не была непрерывная атака. Спам-письма были задержаны. Мы понял, когда просмотрели «оригинальное сообщение электронной почты», которое показывает все детали о происхождении электронной почты.
Поскольку бот использовал форму для отправки сотен тысяч сообщений формы контакта, эти сообщения застряли в очереди рассылки. И отсюда эти письма отправлялись постепенно.
Когда нашли основную причину проблемы, пришло время ее исправить. Проверили почтовую очередь на своем сервере и удалили все ожидающие письма в очереди.
Позвольте нам показать вам, как это сделать.
Проверка очереди исходящей почты и удаление ее
Сервер Pilot настроенный наWordPress установки с Postfix как Mail Transfer Agent. Поэтому мы собираемся использовать команды, используемые для управления Postfix.
Сначала используйте SSH для входа на ваш сервер. Затем перечислите все сообщения в очереди Postfix с помощью этой команды:
postqueue -p
Вывод должен быть таким:
885911CEEB1 11130 Fri Dec 17 18:31:22 hello@itsfoss.com (delivery temporarily suspended: host mx.yandex.ru[87.250.250.89] refused to talk to me: 554 5.7.1 Service unavailable; Client host [94.1177.71.114] blocked using spamsource.yandex.ru; Blocked by spam statistics - see http://feedback.yandex.ru/?from=mail-rejects&subject=94.237.81.224) mastergnoust@yandex.ru
Это был только один из примеров сообщений в моей очереди. Мы сделали не очень точное предположение о количестве писем, застрявших в очереди на сервере с командой wc.
postqueue -p | wc
Это показало, что в очереди было 267000 строк.
Мы решили удалить все электронные письма из этой очереди, чтобы наш почтовый ящик перестал получать эти сообщения в очереди.
Хотя вы можете удалять сообщения одно за другим с их идентификатором, в нашем случае это было бы кошмаром. Поэтому мы решили удалить их все сразу с помощью этой команды:
sudo postsuper -d ALL
Вывод этой команды был:
postsuper: Deleted: 37465 messages
Таким образом, очевидно, было 37465 электронных писем, все еще ожидающих отправки с моего сервера. Это было сверху 90 000 писем, которые я уже получил.
Представьте себе потерю производительности сервера и проблемы, которые это вызвало для нас. IP-адрес нашего сервера мог быть забанен Google (так как мы используюем G Suites) за спам.
К счастью, нам удалось вовремя отладить проблему и исправить ее таким образом. Мы усвоили урок, не игнорировать базовые методы обеспечения безопасности, такие как наложение каптч на формы, чтобы избежать таких атак ботов.
Надеемся, что вы тоже учитесь на нашем горьком опыте, и это поможет вам бороться с атаками ботов на ваших сайтах и серверах WordPress.
Если вы столкнулись с чем-то похожим и использовали какой-то другой способ урегулирования ситуации, пожалуйста, поделитесь с остальными здесь, чтобы мы все могли учиться на опыте друг друга.