WordPress Security How To

Устранение неполадок с уведомлениями по электронной почте в WP Cerber


English version: Troubleshooting WP Cerber Email Notifications


Если уведомление от WP Cerber не приходит, диагностика электронной почты поможет вам выяснить, что произошло, когда плагин пытался его отправить. Это особенно полезно, когда тестовые письма приходят, а оповещения о безопасности или запланированные отчеты — нет.

Диагностика электронной почты записывает попытки отправки писем плагином WP Cerber. Она не отслеживает сообщения от других плагинов WordPress и не подтверждает, что сообщение дошло до почтового ящика получателя. Включение диагностики также не изменяет настройки доставки электронной почты и не снимает ограничения на уведомления.

Прежде чем начать

Проверьте соответствующее уведомление.

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

Проверьте, не изменяет ли какой-либо плагин папку с загруженными файлами.

В первую очередь проверьте, не управляет ли ваш локальный каталог загрузок плагином, темой или пользовательской настройкой. Наличие параметра, позволяющего выбирать этот каталог, — повод проверить совместимость. Некоторые конфигурации могут привести к тому, что WP Cerber потеряет доступ к своему диагностическому журналу и карантину, в результате чего файлы останутся на диске, но будут недоступны через панель управления. Если вы используете подобную конфигурацию или не уверены в её правильности, отключите диагностику электронной почты.

Фиксированное местоположение, уже заданное через UPLOADS в wp-config.php или параметр upload_path WordPress, само по себе не вызывает этой проблемы. Другой плагин всё ещё может его переопределить.

1. Включите диагностику электронной почты.

После проверки папки uploads, описанной выше, сохраните копию файла wp-config.php вашего сайта. Добавьте следующую строку в существующий раздел PHP, перед строкой, которая загружает wp-settings.php :

 define ( 'CERBER_MAIL_DEBUG' , true );

Если в файле уже определена CERBER_MAIL_DEBUG , измените ее значение на true вместо добавления нового определения.

2. Отправить тестовое уведомление

Откройте настройки уведомлений WP Cerber и используйте кнопку «Отправить тестовое уведомление» рядом с уведомлением о блокировке . Запишите время и получили ли вы тестовое письмо. Если оно не пришло, проверьте нужный почтовый ящик, включая папку «Спам», и отметьте любые ошибки, отображаемые WP Cerber.

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

Для оповещений с периодическим срабатыванием оставляйте диагностику включенной только до тех пор, пока не потребуется наблюдение за следующим соответствующим событием. Запишите время и свой часовой пояс, чтобы вы могли найти соответствующие записи. Избегайте изменения настроек электронной почты между тестированием и соответствующим уведомлением, поскольку это затруднит сравнение результатов.

Для создания записи вам не нужно атаковать свой сайт или намеренно блокировать себе доступ. Если нет безопасного способа воспроизвести событие, дождитесь, пока оно произойдет естественным образом.

3. Просмотрите журнал диагностических исследований.

Перейдите в WP Cerber → Инструменты → Журнал диагностики и найдите записи, помеченные [MAIL] примерно в то время, когда вы проводили тестирование и появилось соответствующее уведомление. Используйте функцию «Скачать журнал», если вам нужен файл, или скопируйте соответствующие записи в текстовом формате. Текстовый формат сохраняет все записи и его проще просмотреть, чем скриншот длинной строки.

Каждая запись начинается с explain — краткого описания попытки отправки в одном предложении, изложенного простым языком. Технические поля, следующие за этим, используются службой поддержки для проведения расследования.

Приведенные ниже примеры носят иллюстративный характер. На них показана часть [MAIL] каждой записи без префикса даты и времени, добавленного диагностическим журналом.

Пример: тестирование панели мониторинга

 [MAIL] explain="WordPress reported success for recipient 1 of 1 with WP Cerber SMTP disabled." ts=2026-11-06T15:20:00Z rid=EXAMPLETEST01 type=lockout dispatch=direct cwd=inside_abspath pwd=none cwd_send=inside_abspath pwd_send=none recipient=1 recipients=1 attempt=initial smtp=disabled result=ok

Пример: уведомление о блокировке, отправленное после завершения запроса.

 [MAIL] explain="WordPress reported success for recipient 1 of 1 with WP Cerber SMTP disabled." ts=2026-11-06T15:25:00Z rid=EXAMPLEALERT02 type=lockout event=708 dispatch=shutdown cwd=abspath pwd=none cwd_send=root pwd_send=none recipient=1 recipients=1 attempt=initial smtp=disabled result=ok

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

При сравнении времени используйте поле ts . Оно всегда указывается в формате UTC, что обозначается конечной буквой Z Отдельный префикс даты и времени в журнале диагностики может использовать другой часовой пояс.

4. Понять результат

result=ok не подтверждает доставку получателю. Он означает, что функция отправки электронной почты WordPress вернула сообщение об успешном выполнении для этого вызова. WordPress объясняет это различие в своей документации по функциям отправки электронной почты . То же самое относится к фразе «WordPress сообщил об успешном выполнении» в тексте explain , а неудачная попытка в explain не указывает причину сбоя.

То, что вы видите Что это вам говорит Что делать дальше?
result=error В результате этого вызова возникла ошибка. Сохраните запись и все связанные с ней ошибки электронной почты, отображаемые WP Cerber.
result=ok , но сообщение отсутствует. Функция отправки сообщила об успешной отправке. Получение в почтовом ящике по-прежнему не подтверждено. Попросите провайдера, отправляющего электронные письма с вашего сайта (вашего хостинг-провайдера или SMTP-сервиса), проверить журналы отправки в районе ts (UTC). Сообщите им адрес получателя в частном порядке и спросите, получили ли они попытку отправки и что произошло дальше.
Тест получен, но соответствующее уведомление не пришло. Результаты в этих двух сценариях будут разными. Соберите оба набора записей и определите, какое уведомление отсутствует.
Нет подходящей записи [MAIL] В журнале не зафиксировано результатов для ожидаемой попытки. Подтвердите версию, время активации, условия уведомлений и ограничения. Проверьте, выдает ли ваш тест панели управления запись.
Несколько записей с одинаковой rid Несколько записанных звонков относятся к одному и тому же запросу. Записи следует хранить вместе. Они не обязательно означают дублирование доставок.

Настройки или ограничения скорости могут препятствовать попытке отправки. Запись также может отсутствовать, если запись в журнал не удалась или выполнение было остановлено до того, как функция отправки электронной почты вернула результат. Отсутствие записи не означает, что хостинг-провайдер заблокировал сообщение. Сообщите в службу поддержки, если известный тест не дает записи.

5. После сбора данных отключите диагностику.

После того, как вы зафиксируете соответствующие попытки, измените существующее определение следующим образом:

 define ( 'CERBER_MAIL_DEBUG' , false );

Вы также можете удалить добавленную вами строку. Не добавляйте второе определение. Если служба поддержки помогла установить фиксированный путь хранения для вашего сайта, оставьте эту отдельную настройку в силе.

Это предотвратит появление новых диагностических записей в электронных письмах. Существующие записи останутся в журнале диагностики. Сохраните необходимые данные перед использованием функции «Очистить журнал» , которая очистит общий журнал, включая записи из других функций WP Cerber.

6. Предоставьте необходимую информацию службе поддержки.

Выберите канал для вашей версии:

Укажите следующие сведения:

  • Ваша версия WP Cerber и отсутствующее уведомление.
  • В ожидаемые сроки, включая ваш часовой пояс.
  • Прибыл ли тестовый образец приборной панели.
  • Соответствующие записи [MAIL] .
  • Независимо от того, используете ли вы настройки SMTP от WP Cerber или другой плагин для работы с почтой в WordPress.

Если WP Cerber выдает ошибку при отправке электронного письма, укажите это в личном сообщении. В публичной теме упомяните о возникшей ошибке и избегайте публикации сведений, позволяющих идентифицировать пользователей или учетные записи.

Для получения уведомления о безопасности может помочь соответствующая запись в журнале активности. Делитесь записями журнала активности конфиденциально , так как они могут содержать IP-адреса и имена пользователей. Чтобы найти запись, скопируйте rid почтовой записи, откройте журнал активности, нажмите «Подробнее» , введите его в поле «ID запроса» и нажмите «Фильтр» . См. раздел «Что такое RID и как его использовать» .

В описанных в этом руководстве новых строках [MAIL] отсутствуют адреса электронной почты, IP-адреса, темы, тексты сообщений, учетные данные и пути к файлам в исходном виде. Вы можете поделиться этими отдельными строками в теме на общедоступном форуме. Скопируйте только соответствующие строки [MAIL] , без окружающих записей журнала или скриншотов, содержащих другие данные.

Полный экспорт диагностического журнала может содержать записи из других функций WP Cerber и должен предоставляться конфиденциально. Если вы используете бесплатную версию и сотрудник запрашивает запись из журнала активности или полный экспорт, уточните у него, как отправить его конфиденциально, прежде чем делиться им. Не включайте пароли или полный файл wp-config.php . Адреса получателей передавайте только через личный канал, когда это необходимо.

Справочная информация по полю

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

Поле Значение
explain Краткое описание попытки отправки, составленное из одного предложения на основе полей recipient , recipients , attempt , smtp и result . Оно описывает, что сообщила функция отправки электронной почты и какое решение приняла служба SMTP WP Cerber, а не то, было ли сообщение доставлено.
ts Время UTC фиксируется непосредственно перед вызовом функции отправки электронной почты.
rid Идентификатор запроса WP Cerber, используемый для связи записей из одного и того же запроса. Это не идентификатор сообщения электронной почты.
type Тип уведомления. Распространенные значения: lockout , send_alert , report , scan , generic и 2fa . Нераспознанные типы отображаются как other .
event Причина блокировки или код действия, если таковой имеется. Это не код ошибки, отправленный по электронной почте.
dispatch Как уведомление попадает на электронную почту. См. таблицу ниже.
cwd / cwd_send Категории для рабочего каталога PHP на момент подготовки уведомления и непосредственно перед отправкой электронного письма.
pwd / pwd_send Категории для переменной среды PWD сервера находятся в тех же двух точках. Эта переменная может быть не задана или отличаться от фактического рабочего каталога PHP.
recipient / recipients Должность получателя в данном уведомлении и количество получателей уведомления. Адреса электронной почты не записываются.
attempt initial попытка вызова для получателя может быть предпринята, а retry в случае повторного неудачного вызова для того же получателя, если WP Cerber перезвонит. WP Cerber повторяет попытку только при включенной настройке SMTP.
smtp Решение WP Cerber по протоколу SMTP для данного вызова. См. таблицу ниже.
result Результат ok или error , в зависимости от возвращаемого значения запроса на отправку электронного письма.

Поле event опускается, если не был предоставлен соответствующий код. Тесты на панели мониторинга могут его опускать, но отсутствие event само по себе не идентифицирует тестовое сообщение.

Пути отправки

dispatch Значение
direct WP Cerber отправил уведомление, не откладывая его ни на один из следующих этапов.
plugins_loaded Уведомление было подготовлено заранее и отправлено, когда WordPress достиг стадии plugins_loaded .
shutdown Уведомление было подготовлено заранее и отправлено посредством обратного вызова по завершении PHP-запроса. Это не означает, что сервер отключился или что запрос не удался.

Эти значения описывают путь отправки WP Cerber. Они не идентифицируют SMTP-сервер и не описывают очередь доставки почтового провайдера. В частности, direct не указывает, использовался ли SMTP.

решения SMTP

smtp Значение
enabled WP Cerber применяет свои настройки SMTP к вызову.
disabled WP Cerber не применяет свои настройки SMTP, поскольку они отключены или требуют наличия WP Cerber Professional.
bypassed Настройки SMTP включены, но WP Cerber пропускает их для этого вызова после предыдущего неудачного вызова в том же запросе.

Это поле отражает только конфигурацию WP Cerber. Другой плагин может изменить способ отправки сообщений WordPress, поэтому enabled не доказывает, что использовался настроенный SMTP-сервер.

Категории каталога

В журнале используются категории вместо записи фактических путей.

Ценить Значение
root Корневой каталог файловой системы / .
abspath Каталог установки WordPress.
inside_abspath Каталог внутри установки WordPress.
outside_abspath Каталог, расположенный вне установки WordPress.
none Значение недоступно или пусто.

pwd=none и dispatch=shutdown сами по себе не являются ошибками. Изменение, например, cwd=abspath с последующим cwd_send=root является полезным свидетельством об среде отправки, но не доказывает сбой доставки. Соответствующие категории также не гарантируют соответствие путей, а снимок состояния до вызова не показывает изменения, внесенные внутри функции отправки электронной почты или ее обработчиков.

На серверах с ограничением PWD open_basedir путь к директории WordPress, ведущий через символическую ссылку, может быть классифицирован как outside_abspath . Служба поддержки может учесть это ограничение при проверке записей.

Почему одно уведомление может привести к появлению нескольких записей

Каждый записанный звонок имеет свой собственный результат. Несколько получателей или существующий резервный SMTP-сервер могут генерировать более одной записи для уведомления. Один запрос также может генерировать разные уведомления.

Например, уведомление с двумя получателями и недоступным SMTP-сервером может привести к созданию следующих трех записей, показанных здесь без указания технических полей:

 [MAIL] explain="The email attempt for recipient 1 of 2 failed with WP Cerber SMTP enabled." ... recipient=1 recipients=2 attempt=initial smtp=enabled result=error
[MAIL] explain="WordPress reported success for the retry to recipient 1 of 2 without WP Cerber SMTP settings." ... recipient=1 recipients=2 attempt=retry smtp=bypassed result=ok
[MAIL] explain="WordPress reported success for recipient 2 of 2 without WP Cerber SMTP settings." ... recipient=2 recipients=2 attempt=initial smtp=bypassed result=ok

Попытка подключения по SMTP не удалась, и оба последующих вызова были выполнены без настроек SMTP в WP Cerber. Ничто здесь не указывает на то, что SMTP-сервер восстановился или что какое-либо из сообщений было доставлено.

Нумерация получателей начинается заново с каждым уведомлением, а адреса электронной почты намеренно опускаются, поэтому позиция не указывает, какой адрес был использован. Сохраняйте все связанные записи при сообщении о проблеме, даже если за error следует подтверждение " ok .

Известная проблема: изменения в локальной папке загрузок.

Эта проблема затрагивает сайты, где плагин, тема или пользовательские настройки приводят к тому, что WP Cerber видит разные папки с локальными загрузками как на начальных этапах, так и при обычных запросах к панели управления. Например, плагин может изменять эту папку только после загрузки.

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

Фиксированное местоположение, заданное через UPLOADS в wp-config.php или опцией upload_path , само по себе не вызывает этой несогласованности при запуске. Плагин или пользовательская настройка могут переопределить его позже. Аналогично, настройка локальной папки в плагине — это повод проверить, как она работает, а не доказательство того, что сайт затронут. Это примеры существующих конфигураций, а не инструкции по изменению настроек загрузки.

Если это может повлиять на вашу конфигурацию, отключите диагностику электронной почты и обратитесь за помощью . Укажите название плагина, темы или пользовательского параметра, который управляет местом загрузки файлов.

Сохраните все существующие папки wp-cerber-* и их содержимое на месте. Не перемещайте, не переименовывайте и не удаляйте их, не изменяйте настройки плагина загрузки и не пытайтесь использовать предполагаемый путь к хранилищу. Правильная настройка должна сохранять папку, которую уже использует WP Cerber.

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


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.