Benutzerspam - automatische Kontolöschungen und Domain-Blacklist

Ich beobachte täglich eine kleine, aber konstante Anzahl von Spam-Konten, die auf meinem Discourse-Forum erstellt werden. Viele scheinen gefälschte oder ungültige E-Mail-Adressen zu verwenden.

Ich suche nach einer Möglichkeit, den folgenden Prozess zu automatisieren:

  1. Ein neuer Benutzer erstellt ein Konto, und Discourse sendet die Aktivierungs-/Bestätigungs-E-Mail.
  2. Wenn die Aktivierungs-E-Mail zu einem bestätigten Hard Bounce führt, wird das nicht aktivierte Benutzerkonto automatisch gelöscht.
  3. Das System protokolliert die Domain der E-Mail-Adresse, die zum Bounce geführt hat.
  4. Wenn mehrere neue Konten, die dieselbe Domain verwenden, innerhalb eines definierten Zeitraums zu Hard Bounces führen, wird die Domain automatisch zur Liste der blockierten E-Mail-Domains hinzugefügt.
  5. Häufige, legitime E-Mail-Anbieter wie Gmail, Outlook, Yahoo usw. müssten von der automatischen Domain-Blockierung ausgeschlossen werden.

Zum Beispiel: Wenn innerhalb weniger Tage mehrere Konten mit unterschiedlichen E-Mail-Adressen von suspicious-domain.example erstellt werden und alle ihre Aktivierungs-E-Mails zu Hard Bounces führen, würde die Domain schließlich blockiert, sodass keine weiteren Konten erstellt werden können.

Das Ziel ist es, Bounce-Daten als weiteres Signal zur Identifizierung automatisierter Spam-Registrierungen zu nutzen und gleichzeitig nicht aktivierte Konten, die mit nicht existierenden E-Mail-Adressen erstellt wurden, automatisch zu bereinigen.

Bietet Discourse derzeit ein Plugin oder eine vorhandene Funktionalität, die dies ermöglicht? Falls nicht, gibt es Hooks im Bounce-Verarbeitungsprozess von Discourse, die zur Entwicklung eines Plugins zur Implementierung dieser Funktion genutzt werden könnten?

Hallo @LotusJeff

Hast du dir diese Einstellungen angesehen? Ich glaube, sie werden dich einen Schritt in die richtige Richtung bringen:

Richte diese Einstellungen in /admin/settings/ ein

Einstellung Empfohlener Wert Wirkung
purge_unactivated_users_grace_period_days 1 Löscht nicht aktivierte Konten nach 1 Tag statt nach 14. Es ist nicht sofortig, wie in #2 gewünscht, aber es hat denselben Effekt mit einer kürzeren Verzögerung.
blocked_email_domains Bekannte Spam-TLDs/Domains manuell hinzufügen Blockiert die Registrierung von bekannten Störern

Für eine wirklich automatisierte Lösung müsste meines Erachtens ein Plugin entwickelt werden (oder es gibt keines, soweit ich weiß). Alternativ kannst du dir die neue Workflow-Funktion ansehen. Ich weiß nicht, ob das, was du möchtest, bereits möglich ist, aber sie wird fast täglich aktualisiert, also wer weiß :slight_smile:

Für den Plugin-Weg gibt es ein Ereignis, an das du dich hängen kannst: DiscourseEvent.on(:email_bounce)

Auch einen Blick wert ist Configure VERP to handle bouncing e-mails vielleicht