2009年5月28日

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

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禁止リスト」を表示する」も参考にしてください。

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

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3