ユーザースパム - アカウントの自動削除とドメインブラックリスト

私の Discourse フォーラムでは、毎日少量ながら一定数のスパムアカウントが作成されています。その多くは偽または無効なメールアドレスを使用しているようです。

以下のプロセスを自動化する方法を探しています。

  1. 新しいユーザーがアカウントを作成し、Discourse がアクティベーション/確認メールを送信します。
  2. アクティベーションメールがハードバウンス(恒久的な配信失敗)として確認された場合、未アクティベートのユーザーアカウントは自動的に削除されます。
  3. システムはバウンスしたメールアドレスのドメインを記録します。
  4. 定義された期間内に、同じドメインを使用した複数の新規アカウントがハードバウンスを引き起こした場合、そのドメインは自動的にブロックされたメールドメインリストに追加されます。
  5. Gmail、Outlook、Yahoo などの一般的な正当なメールプロバイダーは、自動ドメインブロックの対象から除外する必要があります。

例えば、suspicious-domain.example というドメインの異なるメールアドレスを使用して作成された複数のアカウントが数日以内にハードバウンスを引き起こした場合、そのドメインは最終的に追加アカウントの作成からブロックされます。

この目標は、バウンスデータを使用して自動スパム登録を識別する別のシグナルとし、存在しないメールアドレスで作成された未アクティベートのアカウントを自動的にクリーンアップすることです。

Discourse には現在、これを達成できるプラグインまたは既存の機能がありますか?もしない場合、この実装のためにプラグインを構築するために使用できる、Discourse のバウンス処理プロセスにおけるフックは利用可能ですか?

こんにちは @LotusJeff

これらの設定を確認されましたか? これらの設定で、ご希望の動作の一部が実現できると思います:

/admin/settings/ でこれらの設定を構成してください

設定項目 推奨値 効果
purge_unactivated_users_grace_period_days 1 未アクティベートのアカウントを14日ではなく1日で削除します。 #2 で求められていたような即時削除ではありませんが、遅延が短いだけで同じ効果があります。
blocked_email_domains 既知のスパム TLD/ドメインを手動で追加 既知の迷惑送信元からの登録をブロック

完全な自動化については、プラグインを作成する必要があると思います(または、私が知る限り存在しない)、あるいは 新しいワークフロー機能 をご一読ください。 ご希望の機能が現在可能かどうかは分かりませんが、ほぼ毎日更新されているので、もしかしたら可能かもしれません :slight_smile:

プラグインのルートについては、 DiscourseEvent.on(:email_bounce) にフックできるイベントがあります。

また、 Configure VERP to handle bouncing e-mails も参考になるかもしれません