提案:ワイルドカードのメールアドレスをブロックする

Would be good if there was a way to add wildcard blocked email addresses. E.g. When a spammer uses the gmail dot trick.

E.g.

example@gmail.com
example+random12345@gmail.com
ex.a.mple+random12345@gmail.com
e.xamp.le@gmail.com

Are all the same email address, spammers can use one gmail address to make unlimited accounts easily.

Blocking an address with wildcards like below I believe would be a good solution:
e*x*a*m*p*l*e*@gmail.com

I don’t necessarily think that all registrations using these gmail address variations should be blocked, just that it would be useful that if a gmail address is blocked, all variations are blocked too or that we can manually add a wildcard gmail to the email blacklist.

「いいね!」 1

Are you seeing an actual specific problem or is this just a theory? If it is a specific problem can you share the specific spammer emails?

「いいね!」 4

Yes it’s an actual problem I’m experiencing, I have spammers regularly making tens of thousands of accounts per single gmail account with the dot method and a sufficient pool of IPs.

I’m only seeing the dot trick being used, not 100% sure about if the + method works also. Last I checked it was possible to register using email addresses with + characters, so that trick should work too.

For example, this email (not a real email):
constantinehamilton1337x@gmail.com

Can make 16,777,216 unique email addresses using the dot method only and essentially unlimited using the + method. Makes it super efficient for spammers. Domain blacklist isn’t viable seeing it’s gmail.

You can see a generator here (gets laggy over 8k combinations): Gmail Dot Trick Generator

If this was actually implemented with a wildcard-like approach (instead of being handled automatically by Discourse), you’d probably want to be much more specific than e*x*a*m*p*l*e*@gmail.com. Doing it that way could result in blocking innocent people, especially if the spammer’s email address is relatively short. Looking specifically for . and + would probably be much safer.

「いいね!」 2

What is your levenshtein_distance_spammer_emails setting at, the default 2 or the max 3 ?

「いいね!」 2

Thanks for the heads up about this setting levenshtein_distance_spammer_emails. I’ve never seen or modified it before - it’s at the default of 2.

「いいね!」 3

I don’t understand your math. You can add only a single dot between characters, so each N-character address is good for only 2*n addresses. You could probably have a plugin that saved or compared against the dot-removed address and disallowed +addresses.

「いいね!」 2

@pfaffman - I was just going off the figures given from Gmail Dot Trick Generator which is for every additional character above 2 the amount of addresses is doubled (it freezes at about 8k though).

I think 2*n, if I understand what you mean by this (as in a 26 character address would have 52 combinations?) would be too low. As they can add multiple dots throughout the address.
E.g:
constantinehamilton1337x@gmail.com
con.stantinehamilton1337.x@gmail.com
co.nst.antineh.amilton1.3.37x@gmail.com
constantineh.a.m.ilto.n13.37x@gmail.com
c.o.nsta.ntinehamil.ton1337x@gmail.com

Anyhow, whatever the exact figure is, it’s a lot. Yeah, your suggested solution would make sense!

「いいね!」 1

Yeah. I wasn’t doing the math right. I was allowing just one dot. I once almost knew that math, but didn’t this morning. :wink:

But a plugin that saved a shot and plus free version of the address as an additional address would do what you want and wouldn’t be that hard.

「いいね!」 3

メモ… sam.sam@gmail.com をブロックすると、sam.sam+1@gmail.com なども自動的にブロックされるようになりました。

「いいね!」 10

この機能は非常にうまく機能しています @sam :slight_smile:

あなたが以前実装した この方法 は、追加のスパム対策機能として非常に有用だと思います。それは、有効化されていた短い期間(デフォルトではオフ)に驚くほどよく機能しました。

そうでなければ、スパマーはモデレーターや管理者が気づく前に、1 つの Gmail アドレスを使って大量のアカウントを作成できてしまいます。例えば、アカウントを作成してもすぐに投稿しないような場合です。

管理者やモデレーターは、個別に各アカウントを見つけ、開いて禁止または削除する必要があります。これは非常に手間がかかります。特に、1 人のスパマーが 1 つの Gmail アドレスから何百、あるいは何千ものアカウントを作成して禁止される前に、大量のアカウントを保有している場合です。また、j.ohan.2.1@gmail や jo.ha.n21@gmail のように、メールアドレスを検索することも困難です。

これらのアカウントが手動で特定されなければ、スパマーは 1 つの Gmail アドレスを取得するだけで、大量のアカウントプールを持って「どこだどこだ」ゲームを続けることができます。

@sam さらなるフィールドテストの後、フォローアップです。以前の実装(元に戻されたもの)は、意欲的なスパマーに対しては明らかにはるかに効果的だと考えています。現在も、これらの Gmail の変形テクニックを使った登録が相当数寄せられています。

現在の保護策が実装されたことには非常に感謝しています。これは非常に効果的です。しかし、同じメールアドレスを使って特定のアカウントが特定され、手動で禁止されるまで無制限にアカウントを作成できるようにしている点は、少し穴があると感じています。これはモデレーターにとって負担が大きいです(デフォルトではアカウントのメールアドレスは表示されず、有効化しないと見られないと思います)。特に、複数のアカウントを一括で削除するツールがない場合(例:アカウント検索リストから複数のアカウントにチェックボックスをつけて、まとめて禁止・削除する機能など)、なおさらです。つまり、モデレーターは各アカウントに個別に移動して、削除や禁止を行わなければなりません。これは、変形されたメールアドレスを持つアカウントを検索する際に特に困難です。

以前の実装はオプション(デフォルトではオフ)であり、すでに開発され、意図通りに機能していたにもかかわらず、削除されました。意欲的なスパマーに対する追加のスパム対策として利用したいコミュニティのために、それがもう利用できないのは残念に思えます。

そのため、特定の文字を(オプションで)メールから完全に禁止する必要があると述べたのです。具体的には、Email address - Wikipedia サブアドレッシングを可能にする文字、例えばプラス記号、ピリオド、ハイフンなどです。正規表現を使えば、サービスごとにこれをブロックすることも可能です。例えば、「@gmail.com で終わるプラス記号を含むメールは許可しない」といった具合です。cc @sam

「いいね!」 1

以前の実装では、アカウントあたり1つの正規形式に制限しつつも +addressing を許可していました(これはおそらくより安全だと考えられます)。

つまり、sam+discourse-meta@gmail.com として登録することができ、これは内部的な Gmail ルールを設定する際に便利です。ただし、その場合、sam@gmail.comsam+1@gmail.com からの新規アカウント登録は禁止されます。

ホワイトリストの追加には反対しませんが、Gmail のケースにおいて正規形式の強制は非常に便利であり、デフォルトとしても問題ないと思います。

「いいね!」 1

ここでの主目的はセキュリティではありません。問題の規模が甚大なため、対象のサイトにはより過激な対策が必要です。「独自のメール保護用正規表現を追加する」というオプション機能である限り、必要なサイトにとっては「完全ロックダウンモード」をオプトインすることで、私には完全に安全に思えます。

「いいね!」 1

現在、ブロックされたドメイン をサポートしています。

ブロックされたパターン を追加することも可能でしょう。

ただし、エスケープが必要になるため、正規表現を正しく設定するのはやや面倒です。このようなオプションを提供することへの懸念は、ユーザーが意図した通りに正規表現を正しく設定できる可能性が低い点にあります。ドットやプラス記号のエスケープを忘れないようにする必要があります。

.*\\+.*@gmail\\.com

あるいは、正規表現を使わずに *? を単純に展開する簡易パターンを採用することも考えられます。

*+*@gmail.com

「いいね!」 5

:wave: 遅れての返信、申し訳ありません!

もし以前の実装がオプションとして再追加されれば、Gmail に関する問題は完全に解決されると考えます。少なくとも私の場合はそうです。私の意見ではこれは完璧であり、スパマーに対してリソースコストを十分に課すことで、対策を管理可能にします。これは、24 時間体制で高強度のモデレーションを必要とするかどうかの違いそのものです。

私は、類似のドメインを許可し、許可されたメールドメインリストを利用するいくつかのドメインをブロックしました。問題は、アカウントが禁止・ブロックされる(これにより、その Gmail アドレスの置換形からの新規アカウント作成がブロックされますが、既存のアカウントはそのまま残ります)前に、人々が多くのアカウントを作成できてしまうことです。これはモデレーションにとって大きな負担となり、その後、個々のアカウントを片付けるのは退屈な作業です。

例えば、同じ Gmail アドレスを使って作成された、1 アカウント 1 投稿の約 200 件の返信があるスレッドがありました。このようなケースは多くあります。これらはアカウントを発見しやすい例ですが、元の Gmail の置換形を通じて検索するのは代替手段として非常に困難です。一部のスパマーは、わずかな数の Gmail アドレスを使って大量のアカウントを farming し、数ヶ月間投稿しないこともあります。

正規表現によるブロックを解決策とした場合、+ 記号のブロックは比較的無害ですが、ドット(.)のブロックは john.smith@gmail.com のような正当なメールの多くをブロックしてしまう可能性があります。ドットが 2 つ以上含まれるアドレスをブロックすれば、付随する被害は最小限に抑えられるでしょう。ただし、それでも Gmail アドレスのいくつかの置換形は許可されてしまいますが、ドットが 2 つ以上ある場合よりははるかに少なくなります。

私の考えでは、以前の実装が理想的であり、オプションの保護機能として実装することも不合理ではありません。主要なソーシャルサイトは、スパマーによる悪用が激しいため、複数の Gmail 置換形でのサインアップを許可していません。

ありがとうございます :slight_smile:

「いいね!」 1

@sam 私は、サイトが必要な場合にこのオプションのレベルのメール正規表現ロックダウンを実装できるようにすべきだと強く感じています。そうしなければ、Discourse の核となる原則の一つである「デフォルトで安全である」という点に反することになります。

「いいね!」 1

次のリリースまでにこれを完了できますが、私は依然として元の実装を支持しています。正規化はサイト運営者にとって最も親切な解決策です。チェックボックスをオンにするだけで、問題は解決します。一方、正規表現を使うには正規表現を学ぶ必要があり(そこで5時間は消えます)、結果としてスパムアカウントが抜け漏れるような修正になったり、ユーザーに不親切な仕様(ドットやプラス記号が使えないなど)になったり、あるいは妥協案に終わったりします。

とはいえ、確かに次のリリースに正規表現サポートを追加することは可能です。

「いいね!」 1

まあ、実は簡単で、「プラス記号やピリオドを含むメールアドレスは禁止」というルールにするだけなんです。確かにかなり制限が厳しく、デフォルトで有効にするのは当然望ましくありません。でも、これは「bamwar」問題と同じで、必ず悪意あるユーザーが存在する以上、核兵器の発射ボタンを用意せざるを得ないのです。たとえ使いたくないとしてもね。

核戦争と同じです。一度核兵器が議題に上がると、「ユーザーフレンドリー」な選択肢はもはや現実的ではなくなり、ほとんどの場合、その局面に追い込まれないことを願うしかありません。