The Stop Forum Spam plugin (unofficial) can help weed out human spammers who are able to bypass Discourse’s built-in spam tools (thanks to their awesome human powers). Right after a new user signs up on your forum (before they have time to post), this plugin will check the user’s email address, forum username, and/or IP address (depending on your plugin settings) against the Stop Forum Spam database. If the user is found in this database of known spammers, their user account will be immediately auto silenced in Discourse.
Note: If needed, you can unsilence the user in the Users → Silenced section of the Discourse Admin.
Installation
Follow these instructions to install this plugin in your Discourse installation.
After installing this plugin in Discourse, you’ll be able to configure the following settings in the Settings → Plugins section of the Discourse Admin:
stopforumspam enabled: Enable the Stop Forum Spam plugin. This will auto silence new users who are in the Stop Forum Spam database of known spammers.
stopforumspam check email: Silence new user if email is found in Stop Forum Spam database.
stopforumspam check username: Silence new user if username is found in Stop Forum Spam database.
stopforumspam check ip: Silence new user if IP is found in Stop Forum Spam database.
stopforumspam minimum entries found: User must appear in the Stop Forum Spam database at least this number of times.
stopforumspam recheck users after hours: Number of hours to wait before rechecking new users a second time to make sure they are still not in the Stop Forum Spam database. Set to 0 to disable recheck.
Note: If you have more than one of these check settings enabled, the user will be deemed a spammer as soon as one of them is found in the Stop Forum Spam database.
While I don’t mind if you reach out to me directly for help, it would be benefit everyone here if you’d post your questions, comments, and/or suggestions below.
I added a new stopforumspam recheck users after hours plugin setting to allow users to be rechecked again after X hours. This will allow more spammers to be cleaned up later when they are not found in the Stop Forum Spam database on the first check.
This is a great idea — however, I would have expected that spammers change their email address each new time they spam so I’m surprised that checking such a database is effective.
Hi there, thanks a lot @msinger for this plugin, I’ve been using SFS for years on a non-Discourse forum and it definitely helps.
The option to recheck new accounts after X hours is a fantastic idea, thanks for adding it!
A few possible improvements for this plugin:
Is it possible to make it work from the very beginning at the registration page so spammers can’t even sign up?
Could admin configurable thresholds be implemented to specify how many hits in the SFS database for username, email, and IP in order to consider it a spammer?
An admin button to report a user and its posts to SFS would be nice.
I notice StopForumSpam is down at present, showing “too many database connections” - is it possible this plugin is part of the problem? Could this plugin apply a rate limit, if it doesn’t already?
(And, how does this plugin react if it can’t get a good response from the service?)
아니요, 제 생각에는 그렇게 되면 플러그인의 목적을 다소 퇴색시킬 것 같습니다. 이 플러그인은 기본적으로 확인된 스팸 사용자를 차단하는 완전 자동화 시스템으로, 조정(모더레이션) 시간이 전혀 필요 없어야 하니까요. 하지만 /admin/users/list/silenced 경로에서 확인해 볼 수 있으며, 플러그인에 의해 침묵 처리된 사용자의 사유에는 "StopForumSpam에서 사용자가 발견됨"이라고 표시됩니다.
거짓 양성(false positive)이 나온 적은 한 번도 없었습니다(즉, 무언가를 발견할 때마다 항상 SFS 데이터베이스에 실제로 존재하는 것이었습니다).
한 가지 주의할 점은 API에 한 가지 제한 사항이 있다는 것입니다. 이메일 주소가 정확히 일치하지 않는 경우에도 매칭될 수 있습니다. SFS는 해당 도메인을 "독성 도메인(toxic domain)"으로 식별하지만, API는 이를 알려주지 않습니다. 따라서 해당 도메인의 이메일 주소를 가진 사용자는 이메일 매칭으로 표시되지만, SFS 데이터베이스에서 검색을 해도 정확한 이메일 주소를 찾을 수 없습니다.
데이터베이스는 커뮤니티의 노력으로 구축되므로, 사용자가 실제로 스팸 발송자가 아니라도 누군가에 의해 특정 이유로 스팸 발송자로 식별되었을 가능성이 있습니다. 이는 드문 경우이지만 실제로 발생하기도 합니다(이것이 SFS에 ‘이의 제기(appeal)’ 절차가 있는 이유입니다).
지금까지는 가장 고유한 식별자인 이메일 주소 일치만 확인하도록 설정해 두었습니다. IP 주소와 사용자 이름 일치는 오인식이 발생할 가능성이 훨씬 높기 때문에 해당 체크를 비활성화해 두었습니다. 하지만 이제 임계값을 설정할 수 있으므로 IP 주소의 경우 30회 일치와 같은 매우 높은 임계값을, 그리고 사용자 이름의 경우에도 유사한 수준으로 설정해 볼 것입니다.
기억해 두어야 할 좋은 지적입니다. 이 부분을 파악하는 데 꽤 오랜 시간이 걸렸습니다. 솔직히 말해 이러한 "독성 도메인"이라는 이름은 매우 적절합니다. 이러한 이메일로 가입하는 사용자는 스팸을 보내거나 반복적인 트롤링/괴롭힘에 대한 밴을 회피하려는 악의적인 의도를 가지고 있을 가능성이 거의 확실합니다. 다행히 이 플러그인은 단순히 해당 사용자를 침묵 상태로만 만듭니다. 만약 오인식이 발생했다면, 다른 필수 플러그인(개인적으로 필수라고 생각합니다)을 활성화해 두었기 때문에 스태프에게 연락할 수 있습니다: