Спам пользователей — автоматическое удаление аккаунтов и черный список доменов

Я наблюдаю небольшое, но стабильное количество спамерских аккаунтов, создаваемых ежедневно на моем форуме Discourse. Многие из них, по-видимому, используют поддельные или недействительные адреса электронной почты.

Я ищу способ автоматизировать следующий процесс:

  1. Новый пользователь создает аккаунт, и Discourse отправляет ему письмо с активацией/подтверждением.
  2. Если письмо с активацией приводит к подтвержденному жесткому отбою (hard bounce), неактивированный пользовательский аккаунт автоматически удаляется.
  3. Система записывает домен адреса электронной почты, вернувшегося с отбоем.
  4. Если несколько новых аккаунтов, использующих один и тот же домен, приводят к жестким отбоям в течение определенного периода времени, этот домен автоматически добавляется в список заблокированных доменов электронной почты.
  5. Распространенные легитимные почтовые провайдеры, такие как Gmail, Outlook, Yahoo и т. д., должны быть исключены из автоматической блокировки доменов.

Например, если в течение нескольких дней будет создано несколько аккаунтов с разными адресами электронной почты из домена suspicious-domain.example, и все письма с активацией для них вернутся с жестким отбоем, этот домен в конечном итоге будет заблокирован для создания новых аккаунтов.

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

Существует ли в настоящее время в Discourse плагин или встроенная функциональность, которая может это обеспечить? Если нет, доступны ли хуки в процессе обработки отбоев Discourse, которые можно было бы использовать для создания плагина, реализующего эту функциональность?

Привет @LotusJeff

Вы посмотрели эти настройки? Думаю, они помогут вам частично решить проблему:

Настройте их в /admin/settings/

Настройка Рекомендуемое значение Эффект
purge_unactivated_users_grace_period_days 1 Удаляет неактивированные аккаунты через 1 день вместо 14. Это не мгновенно, как просили в #2, но эффект тот же, только с меньшей задержкой.
blocked_email_domains Вручную добавьте известные спам-домены/TLD Блокирует регистрацию от известных спамеров

Для полной автоматизации, думаю, потребуется создать плагин (или, насколько мне известно, такого нет), либо вы можете посмотреть на новую функцию рабочих процессов. Не знаю, возможно ли реализовать то, что вам нужно, прямо сейчас, но она обновляется почти ежедневно, так что кто знает :slight_smile:

Если выбирать путь с плагином, есть событие, к которому можно подключиться: DiscourseEvent.on(:email_bounce)

Также стоит посмотреть Configure VERP to handle bouncing e-mails