Spam de usuarios: eliminación automática de cuentas y lista negra de dominios

Observo un número pequeño pero constante de cuentas de spam que se crean en mi foro de Discourse cada día. Muchas parecen utilizar direcciones de email falsas o inválidas.

Estoy buscando una manera de automatizar el siguiente proceso:

  1. Un nuevo usuario crea una cuenta y Discourse envía el email de activación/verificación.
  2. Si el email de activación genera un rebote duro confirmado, la cuenta de usuario no activada se elimina automáticamente.
  3. El sistema registra el dominio de la dirección de email rebotada.
  4. Si varias cuentas nuevas que utilizan el mismo dominio generan rebotes duros dentro de un período de tiempo definido, el dominio se añade automáticamente a la lista de dominios de email bloqueados.
  5. Los proveedores de email legítimos comunes, como Gmail, Outlook, Yahoo, etc., deberían estar excluidos del bloqueo automático de dominios.

Por ejemplo, si se crean varias cuentas con diferentes direcciones de email de suspicious-domain.example en unos pocos días y todos sus emails de activación generan rebotes duros, el dominio eventualmente se bloquearía para evitar la creación de cuentas adicionales.

El objetivo es utilizar los datos de rebote como otra señal para identificar registros de spam automatizados, mientras se limpian automáticamente las cuentas no activadas creadas con direcciones de email inexistentes.

¿Dispone Discourse actualmente de un plugin o funcionalidad existente que pueda lograr esto? Si no, ¿hay hooks disponibles en el proceso de manejo de rebotes de Discourse que pudieran utilizarse para construir un plugin que implemente esto?

Hola @LotusJeff

¿Has echado un vistazo a estas configuraciones? Creo que te llevarán parte del camino:

Configura estas opciones en /admin/settings/

Ajuste Valor sugerido Efecto
purge_unactivated_users_grace_period_days 1 Elimina las cuentas no activadas en 1 día en lugar de 14. No es instantáneo como se pedía en #2, pero tiene el mismo efecto con un retraso menor.
blocked_email_domains Añadir manualmente los TLDs/dominios de spam conocidos Bloquea el registro de infractores conocidos

Para algo realmente automatizado, creo que habría que desarrollar un plugin (o que no exista, que yo sepa), o puedes echar un vistazo a la nueva función de flujos de trabajo. No sé si lo que quieres es posible todavía, pero se actualiza casi a diario, así que quién sabe :slight_smile:

Por la vía del plugin, hay un evento al que podrías engancharte en DiscourseEvent.on(:email_bounce)

También vale la pena echar un vistazo a Configure VERP to handle bouncing e-mails quizás