# Stop Forum Spam Plugin

**URL:** https://meta.discourse.org/t/stop-forum-spam-plugin/121037
**Category:** Plugin
**Created:** [6월 22, 2019, 1:01오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037 "2019-06-22T01:01:04Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![msinger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/msinger/32/144985_2.png) [@msinger](https://meta.discourse.org/u/msinger)
#### Post date: [6월 22, 2019, 1:01오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/1 "2019-06-22T01:01:04Z")

</div>

## Overview

The [**Stop Forum Spam plugin**](https://github.com/singerscreations/discourse-stopforumspam) (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](https://www.stopforumspam.com/) 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](https://meta.discourse.org/t/install-plugins-in-discourse/19157) to install this plugin in your Discourse installation.

> **Note:** This plugin’s git clone url is [GitHub - singerscreations/discourse-stopforumspam · GitHub](https://github.com/singerscreations/discourse-stopforumspam.git).

  

## Configuration

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.

  

## GitHub Repository

[https://github.com/singerscreations/discourse-stopforumspam](https://github.com/singerscreations/discourse-stopforumspam)

  

## Questions/Comments/Suggestions

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.

---

<div class="post-metadata">

### Author: ![msinger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/msinger/32/144985_2.png) [@msinger](https://meta.discourse.org/u/msinger)
#### Post date: [6월 24, 2019, 5:03오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/2 "2019-06-24T17:03:52Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![gigperformer](https://avatars.discourse-cdn.com/v4/letter/g/94ad74/32.png) [@gigperformer](https://meta.discourse.org/u/gigperformer)
#### Post date: [6월 26, 2019, 7:09오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/3 "2019-06-26T19:09:50Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![msinger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/msinger/32/144985_2.png) [@msinger](https://meta.discourse.org/u/msinger)
#### Post date: [6월 26, 2019, 7:22오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/4 "2019-06-26T19:22:47Z")

</div>

It’s very effective, but it’s certainly not foolproof.

---

<div class="post-metadata">

### Author: ![tmomas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tmomas/32/109144_2.png) [@tmomas](https://meta.discourse.org/u/tmomas)
#### Post date: [4월 22, 2020, 3:33오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/5 "2020-04-22T15:33:58Z")

</div>

개선 제안:

- 로그인 직후 의심 사용자를 침묵 처리 대신 검토 대기열에 직접 추가하는 옵션 추가
- 의심 사용자의 첫 게시글 작성 후 검토 대기열에 추가하는 옵션 추가
- 검토 대기열 작업에 “사용자 삭제 및 SFS에 신고” 옵션 추가

물론 이는 스팸 양이 적은 포럼에서만 작동합니다.

---

<div class="post-metadata">

### Author: ![rahim123](https://avatars.discourse-cdn.com/v4/letter/r/df705f/32.png) [@rahim123](https://meta.discourse.org/u/rahim123)
#### Post date: [1월 10, 2023, 1:03오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/6 "2023-01-10T13:03:04Z")

</div>

안녕하세요, 이 플러그인을 만들어 주셔서 @msinger 님께 진심으로 감사드립니다. 저는 수년 동안 비디스코urs 포럼에서 SFS를 사용해 왔는데, 정말 큰 도움이 됩니다.

신규 가입자를 X시간 후에 재확인하는 옵션은 정말 훌륭한 아이디어네요, 추가해 주셔서 감사합니다!

이 플러그인에 대해 몇 가지 개선 사항을 제안해 보고 싶습니다:

- 가입 페이지에서 처음부터 작동하도록 하여 스팸 사용자가 아예 가입조차 못 하게 할 수 있을까요?
- SFS 데이터베이스에서 사용자명, 이메일, IP 주소의 히트 횟수를 스팸으로 판단하는 기준으로 설정할 수 있는 관리자 설정 가능한 임계값을 구현할 수 있을까요?
- 사용자와 해당 사용자의 게시물을 SFS에 신고할 수 있는 관리자 버튼이 있으면 좋겠습니다.

다시 한번 감사합니다.

---

<div class="post-metadata">

### Author: ![digitaldominica](https://avatars.discourse-cdn.com/v4/letter/d/97f17d/32.png) [@digitaldominica](https://meta.discourse.org/u/digitaldominica)
#### Post date: [12월 19, 2023, 5:28오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/7 "2023-12-19T17:28:30Z")

</div>

이 플러그인이 최신 버전의 discourse와 호환되나요?

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [12월 20, 2023, 9:40오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/8 "2023-12-20T09:40:20Z")

</div>

현재 StopForumSpam이 “too many database connections” 오류와 함께 다운되어 있는 것을 확인했습니다. 이 플러그인이 문제의 일부일 가능성이 있을까요? 이 플러그인이 아직 적용하고 있지 않다면 속도 제한(rate limit)을 적용할 수 있을까요?

(그리고, 이 플러그인이 서비스에서 적절한 응답을 받지 못하면 어떻게 반응하나요?)

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [8월 9, 2024, 1:03오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/9 "2024-08-09T13:03:58Z")

</div>

질문이 12월에 올라온 거라는 건 알지만… 그건 예외적인 경우였던 것 같습니다. Stop Forum Spam은 대체로 정상적으로 작동하고 있습니다.

이 플러그인은 비동기 작업(async jobs)으로 작동하므로, Stop Forum Spam이 다운되어 있어도 사용자 경험에 차질이 생기지 않습니다.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [8월 10, 2024, 1:03오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/10 "2024-08-10T13:03:38Z")

</div>

@msinger 이 플러그인에 커밋을 한 지 5년이 지났네요.

이 플러그인을 변경하거나 개선할 계획이 있으신가요, 아니면 다른 곳으로 넘어가셔서 누군가가 포크하는 것이 합리적인 상황인가요?

감사합니다!

---

<div class="post-metadata">

### Author: ![msinger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/msinger/32/144985_2.png) [@msinger](https://meta.discourse.org/u/msinger)
#### Post date: [3월 2, 2025, 6:08오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/11 "2025-03-02T06:08:24Z")

</div>

> [@rahim123](#):
>
> 관리자가 설정할 수 있는 임계값을 구현하여, SFS 데이터베이스에서 사용자 이름, 이메일, IP 주소의 매칭 횟수가 몇 회 이상일 때 스팸으로 간주할지 지정할 수 있을까요?

버전 2.0에서 **Stopforumspam Minimum Entries Found** 라는 새 설정을 추가했습니다. 기본적으로 이 설정값은 **1** 로 설정되어 있습니다. 이메일, 사용자 이름 또는 IP 주소에 대한 매칭 임계값을 조정하려면 값을 높일 수 있습니다.

또한, 사용자가 무음 처리(silenced)될 경우, 이유에 발생 횟수가 포함되도록 변경되었습니다.

---

<div class="post-metadata">

### Author: ![msinger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/msinger/32/144985_2.png) [@msinger](https://meta.discourse.org/u/msinger)
#### Post date: [3월 2, 2025, 6:10오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/12 "2025-03-02T06:10:16Z")

</div>

> [@mcdanlj](#):
>
> 이 플러그인에 대한 변경 사항이나 개선 사항을 고려하고 계신가요, 아니면 이미 다른 프로젝트로 넘어가셔서 누군가가 포크하는 것이 합리적이라고 보시는 건가요?

네, 원래 프로젝트의 범위 안에서 이루어지는 한에서는 그렇게 할 것입니다. 만약 저의 초기 비전을 넘어 확장하려는 것이라면, 자유롭게 포크를 생성하셔도 됩니다.

---

<div class="post-metadata">

### Author: ![msinger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/msinger/32/144985_2.png) [@msinger](https://meta.discourse.org/u/msinger)
#### Post date: [3월 2, 2025, 6:13오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/13 "2025-03-02T06:13:23Z")

</div>

> [@digitaldominica](#):
>
> 이 플러그인이 최신 버전의 Discourse와 호환되나요?

Discourse의 공격적인 릴리스 일정 때문에 영원히 깨지지 않을 것이라고 보장할 수는 없지만, 최신 베타 버전에서는 완전히 정상적으로 작동합니다. 현재 **3.5.0.beta2-dev** 버전으로 모든 포럼에서 실행 중입니다.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [3월 8, 2025, 10:47오전 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/15 "2025-03-08T10:47:35Z")

</div>

최근 이 플러그인을 설치했는데, 아직 누군가를 잡아낸 것 같지 않습니다(새로운 사용자 IP가 stopforumspam에 꽤 자주 표시되므로 곧 잡힐 것이라 확신합니다).

게시물이 감지되면 검토 대기열로 이동하나요?

---

<div class="post-metadata">

### Author: ![rahim123](https://avatars.discourse-cdn.com/v4/letter/r/df705f/32.png) [@rahim123](https://meta.discourse.org/u/rahim123)
#### Post date: [3월 8, 2025, 1:25오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/16 "2025-03-08T13:25:26Z")

</div>

> [@Canapin](#):
>
> 게시물이 감지되면 검토 대기열로 이동하나요?

아니요, 제 생각에는 그렇게 되면 플러그인의 목적을 다소 퇴색시킬 것 같습니다. 이 플러그인은 기본적으로 확인된 스팸 사용자를 차단하는 완전 자동화 시스템으로, 조정(모더레이션) 시간이 전혀 필요 없어야 하니까요. 하지만 `/admin/users/list/silenced` 경로에서 확인해 볼 수 있으며, 플러그인에 의해 침묵 처리된 사용자의 사유에는 "StopForumSpam에서 사용자가 발견됨"이라고 표시됩니다.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [3월 8, 2025, 1:34오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/17 "2025-03-08T13:34:52Z")

</div>

> [@rahim123](#):
>
> 하지만 `/admin/users/list/silenced` 페이지를 확인해 보면, 플러그인에 의해 침묵 처리된 사용자의 사유가 "User was found in StopForumSpam"으로 표시됩니다.

훌륭하네요. 이 페이지가 있다는 사실을 몰랐습니다.

플러그인이 열심히 작동하고 있는 것 같습니다!

 ![The image shows a list of active, new, staff, suspended, and silenced users in a moderator interface within a forum or community, highlighting users who have been silenced and the reasons, alongside details about their last seen activity and creation times. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/5/1/a/51a4a78f109b0e34ea78529394d157377c206c10.png)

저는 수년간 포럼에서 스팸 사용자로 인해 고생해 왔으며, 관리자의 업무를 최소화하기 위해 다양한 방법을 시도해 보았습니다. 제가 본 바로 이 플러그인이 훌륭한 일을 해낼 것이라고 확신합니다!

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [3월 8, 2025, 2:24오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/18 "2025-03-08T14:24:24Z")

</div>

거짓 양성 반응은 없나요?

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [3월 8, 2025, 3:23오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/19 "2025-03-08T15:23:11Z")

</div>

이 플러그인을 사용하기 전부터도, stopforumspam에서 매칭된 모든 계정은 사용자를 BAN할 정도로 의심스러워 보였습니다.

그래서 저는 이 데이터베이스가 _신뢰할 만해_ 보이므로 그대로 신뢰하고 있습니다.

---

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [3월 8, 2025, 5:11오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/20 "2025-03-08T17:11:54Z")

</div>

거짓 양성(false positive)이 나온 적은 한 번도 없었습니다(즉, 무언가를 발견할 때마다 항상 SFS 데이터베이스에 실제로 존재하는 것이었습니다).

한 가지 주의할 점은 API에 한 가지 제한 사항이 있다는 것입니다. 이메일 주소가 정확히 일치하지 않는 경우에도 매칭될 수 있습니다. SFS는 해당 도메인을 "독성 도메인(toxic domain)"으로 식별하지만, API는 이를 알려주지 않습니다. 따라서 해당 도메인의 이메일 주소를 가진 사용자는 이메일 매칭으로 표시되지만, SFS 데이터베이스에서 검색을 해도 정확한 이메일 주소를 찾을 수 없습니다.

데이터베이스는 커뮤니티의 노력으로 구축되므로, 사용자가 실제로 스팸 발송자가 아니라도 누군가에 의해 특정 이유로 스팸 발송자로 식별되었을 가능성이 있습니다. 이는 드문 경우이지만 실제로 발생하기도 합니다(이것이 SFS에 ‘이의 제기(appeal)’ 절차가 있는 이유입니다).

---

<div class="post-metadata">

### Author: ![rahim123](https://avatars.discourse-cdn.com/v4/letter/r/df705f/32.png) [@rahim123](https://meta.discourse.org/u/rahim123)
#### Post date: [3월 8, 2025, 7:15오후 UTC](https://meta.discourse.org/t/stop-forum-spam-plugin/121037/21 "2025-03-08T19:15:45Z")

</div>

> [@Jagster](#):
>
> 거의 오인식이 없나요?

지금까지는 가장 고유한 식별자인 이메일 주소 일치만 확인하도록 설정해 두었습니다. IP 주소와 사용자 이름 일치는 오인식이 발생할 가능성이 훨씬 높기 때문에 해당 체크를 비활성화해 두었습니다. 하지만 이제 임계값을 설정할 수 있으므로 IP 주소의 경우 30회 일치와 같은 매우 높은 임계값을, 그리고 사용자 이름의 경우에도 유사한 수준으로 설정해 볼 것입니다.

> [@hendersj](#):
>
> 이메일 주소가 정확히 일치하지 않더라도 이메일 주소 일치로 판정될 수 있습니다. SFS는 해당 도메인을 "독성 도메인(toxic domain)"으로 식별하지만, API는 이를 알려주지 않습니다. 이러한 도메인 중 하나에서 발급된 이메일 주소를 가진 사용자는 이메일 일치로 표시되지만, SFS 데이터베이스에서 검색을 통해 해당 사용자의 정확한 이메일 주소를 찾을 수 없습니다.

기억해 두어야 할 좋은 지적입니다. 이 부분을 파악하는 데 꽤 오랜 시간이 걸렸습니다. 솔직히 말해 이러한 "독성 도메인"이라는 이름은 매우 적절합니다. 이러한 이메일로 가입하는 사용자는 스팸을 보내거나 반복적인 트롤링/괴롭힘에 대한 밴을 회피하려는 악의적인 의도를 가지고 있을 가능성이 거의 확실합니다. 다행히 이 플러그인은 단순히 해당 사용자를 침묵 상태로만 만듭니다. 만약 오인식이 발생했다면, 다른 필수 플러그인(개인적으로 필수라고 생각합니다)을 활성화해 두었기 때문에 스태프에게 연락할 수 있습니다:

> [@스태프에게 PM 허용](https://meta.discourse.org/t/allow-pm-to-staff/260946):
>
> information_sourceSummary Allow all users to PM Staffhammer_and_wrenchRepository Link [https://github.com/pfaffman/discourse-allow-pm-to-staff](https://github.com/pfaffman/discourse-allow-pm-to-staff)open_bookInstall Guide [How to install plugins in Discourse](https://meta.discourse.org/t/install-plugins-in-discourse/19157)Features Allow users to send a PM to staff even if they would not otherwise be able to send a PM. Configuration allow\_pm\_to\_staff\_enabled–Enables the plugin (default true) allow\_pm\_allowed\_pm\_groups–Set groups who can receive PMs from all users (default “staff”). S…

[Next page](https://meta.discourse.org/t/stop-forum-spam-plugin/121037.md?page=2)
