メールブラックリスト:一括削除/無効化に関する質問

ドメインがブラックリストに登録された後、すでに通過済みのアカウントは影響を受けず、引き続き利用可能です。

登録時のメールアドレスのドメインに基づいて、ユーザーとそのすべてのコンテンツをまとめて削除(バッチ削除)、停止、またはミュートする方法をご存知の方がいらっしゃいましたら、教えてください。

私のケースでは、これによりキャッチオールドメイン技術を使用して登録した数十万のアカウントを削除または無効化できます。

これは移行されたデータですか?そんなに多くのアカウントを削除するのは、ほとんどコンテンツがない場合を除き、非常に、非常に痛い思いをすることになります。

Rails コンソールから実行することもできますが、かなり messy になりそうですね。

@codinghorror - 移行されたデータではありません。アカウントをそのまま残すという選択肢の方がおそらくひどい結果になるため、痛みを伴い遅くても構いません。コンテンツの量については、バラバラで、何も持っていないもの(通常はスパマーが後でこれらのアカウントを使うつもり)、最小限のもの、そして大量のものが混在しています。

@pfaffman 素晴らしい!やり方をご存知ですか?笑 :pray:

ユーザーの匿名化について検討されましたか?

@fzngagan それはおそらく確実な解決策ですね。これを一括で行う方法をご存知ですか?

はい、Rails コンソールから可能です。ただし、どの基準で匿名化するかという点が問題です。

@fzngagan 素晴らしい!基準は、登録メールに特定のドメインを使用するすべてのメールです。例:example@blacklisted.com、example2@blacklisted.com

rails コンソールで以下のコマンドを入力し、期待する結果が得られるか確認してください(メールのドメイン部分を ‘@gmail.com’ に置き換えてください)。

idlist = UserEmail.where("email like '%@gmail.com'").pluck(:user_id)
users = User.find(idlist)

その後(注意して進めてください)。

system_user = Discourse.system_user
users.each do |user|
  UserAnonymizer.new(user, system_user).make_anonymous
end

パフォーマンスに関する専門知識はないため、ユーザー数が多くなった場合にどのような影響が出るかは正確にはわかりません。

@fzngagan 素晴らしいですね、ありがとうございます! :slight_smile: 本当に感謝しています。

これを実行する前に、すべてのデータを最新の状態にバックアップしておくことを確実にします。

簡単な質問ですが、この手法を使ってユーザーを一括で(永久に)ミュートできるかどうかご存知でしょうか?

はい。Rails コンソールでは、コードから実行できることのほとんどを操作できます。