Spam de usuários - exclusões automáticas de contas e lista negra de domínios

Estou observando um número pequeno, porém consistente, de contas de spam sendo criadas diariamente em meu fórum Discourse. Muitas parecem estar usando endereços de e-mail falsos ou inválidos.

Estou procurando uma maneira de automatizar o seguinte processo:

  1. Um novo usuário cria uma conta e o Discourse envia o e-mail de ativação/verificação.
  2. Se o e-mail de ativação resultar em um retorno definitivo (hard bounce) confirmado, a conta de usuário não ativada é automaticamente excluída.
  3. O sistema registra o domínio do endereço de e-mail que retornou erro.
  4. Se várias novas contas usando o mesmo domínio resultarem em retornos definitivos dentro de um período de tempo definido, o domínio é automaticamente adicionado à lista de domínios de e-mail bloqueados.
  5. Provedores de e-mail legítimos comuns, como Gmail, Outlook, Yahoo, etc., precisariam ser excluídos do bloqueio automático de domínios.

Por exemplo, se várias contas usando diferentes endereços de e-mail de suspicious-domain.example forem criadas em alguns dias e todos os seus e-mails de ativação resultarem em retorno definitivo, o domínio eventualmente será bloqueado para criar contas adicionais.

O objetivo é usar os dados de retorno como outro sinal para identificar registros de spam automatizados, enquanto limpa automaticamente as contas não ativadas criadas com endereços de e-mail inexistentes.

O Discourse possui atualmente um plugin ou funcionalidade existente que possa realizar isso? Caso contrário, há ganchos (hooks) disponíveis no processo de tratamento de retornos do Discourse que poderiam ser usados para criar um plugin que implemente isso?

Olá @LotusJeff

Você deu uma olhada nessas configurações, pois acho que elas vão te ajudar um pouco no caminho:

Configure essas configurações em /admin/settings/

Configuração Valor Sugerido Efeito
purge_unactivated_users_grace_period_days 1 Exclui contas não ativadas em 1 dia em vez de 14. Não é instantâneo como pedido em #2, mas tem o mesmo efeito com um atraso menor.
blocked_email_domains Adicione manualmente TLDs/domínios de spam conhecidos Bloqueia o registro de infratores conhecidos

Para qualquer coisa realmente automatizada, acho que um plugin precisaria ser construído (ou nenhum existe afaik), ou você pode dar uma olhada no novo recurso de fluxo de trabalho. Não sei se o que você quer é possível ainda, mas está sendo atualizado quase diariamente, então quem sabe :slight_smile:

Para a rota do plugin, há um evento que você pode se conectar em DiscourseEvent.on(:email_bounce)

Vale a pena também dar uma olhada em Configure VERP to handle bouncing e-mails talvez