Movable Type のコメント投稿で「コメントを投稿できませんでした。エラー: 短い期間にコメントを大量に送りすぎです。しばらくたってからやり直してください。」というエラー処理について

Movable Type のコメント投稿で「コメントを投稿できませんでした。エラー: 短い期間にコメントを大量に送りすぎです。しばらくたってからやり直してください。」というエラー処理について

Posted at May 28,2009 12:55 AM
Tag:[Comment, MovableType, ShowIPInformation, ThrottleSeconds]

Movable Type 4.x では、スパムコメントを回避策として、短い期間にコメントを連続投稿すると、「コメントを投稿できませんでした。エラー: 短い期間にコメントを大量に送りすぎです。しばらくたってからやり直してください。」というエラーを表示する仕様になっています(下)。

コメント投稿エラー

ただ、連続して投稿している訳ではないのに、稀にこのエラーがいつまでも解消しないケースがあるようです。

不具合が解消するかどうかは分かりませんが、このエラーを出力している処理をトレースしてみました。

この処理を行なっているのは、lib/MT/App/Comments.pm にある _builtin_throttle という関数です。この関数はコア機能にビルトインされたコールバックです(下)。

sub init {
...中略...
    MT->add_callback( 'CommentThrottleFilter', 1, undef,
        \&MT::App::Comments::_builtin_throttle );
    $app;
}

処理は下記に書かれている順番に実行します。文中の「0を返却」は、コメントスパム処理を行なうことを指し、「1を返却」は、コメントスパム処理を行なわないことを指します。

  • 環境変数 ThrottleSeconds 0 が設定されていれば1を返却して処理終了
  • ThrottleSeconds 0 が設定されていない場合、ThrottleSeconds(デフォルト20秒)で指定した時間内に、同一ブログIDに同一IPからの再投稿がある場合は0を返却して処理終了。それ以外の場合は次の処理を続行。
  • 環境変数 ShowIPInformation が設定されていないか、0(デフォルト値)が設定されていれば1を返却して処理終了(特定のIPアドレスからのコメントを制限したい場合、ShowIPInformationに1を設定すれば、この後に処理を行なうため)
  • ThrottleSeconds の10倍の時間の間に8回以上のコメント投稿があった場合、IP禁止リストに登録し、0を返却して処理終了。それ以外の場合は1を返却して処理終了

上記のことから、mt-config.cgi に環境変数 ThrottleSeconds 0 を設定しておけば、常に重複コメントが可能です(が、ネットで調べると、なぜかこれで解消しないケースもあるみたいで、再インストールで解消させているようです)。

また、あるブログ記事に、現在より未来の時間のコメントが投稿されていると、必ずこのエラーとなります(他のブログ記事のコメント投稿には影響なし)。例えば、自宅サーバの時間を(故意に)未来に変更してコメント投稿し、そのあと時間を元に戻してコメント投稿すると、この事象に遭遇します。

ShowIPInformation はより厳しいスパムチェックを行いたい場合に、mt-config.cgi に設定しておくと良いでしょう。ThrottleSeconds の値が20秒である場合、その10倍である200秒の間に8回投稿されると、IP禁止リストに登録されます。

IP禁止リストについては、「Movable Type の管理画面に「IP禁止リスト」を表示する」も参考にしてください。

まとまりのないエントリーですが、情報まで。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)