あるときからこのMTで、TypeKeyの認証をして戻ってきたら「The validation failed」というエラーが出て認証に失敗してコメントができなくなっていたので、それについてずっと調べていたがやっと原因がわかった。
ネットでこの問題を検索してみると、いろいろな場合があって、主に下記のようなことが原因なのが多い。
1 MTのバージョンに依存した問題
lib/MT/Utils.pmのdsa_varifyの1275行目付近のif文で
if ($has_crypt_dsa && 0) {
となっている「&& 0」を取ると直る
2 個別アーカイブのテンプレートで、typekeyへ飛ばすURLで、v=1.1というのがある/ないの問題
3 lib/MT/Utils.pmのperl_sha1_digestが上手くいかない問題
4 lib/MT/App/Comments.pmの$SIG_WINDOWの値が短かすぎる(デフォルト10分)問題
などがあるらしく、どれか一つにあてはまるとコケたりするらしい。
んで、このブログがなににあてはまったかというと、上記でいう4に近い感じでした。いろいろと変数をえんやこらとダンプしてデバッグしたところ、このTypeKeyの認証は時間を測ってある一定時間内(これが10分)に認証処理が完了しないとエラーを出す仕様になっているらしく、それを判定する基準となるサーバの時計がズレているために問題が起っていた様です…。なので、ntpdをちゃんと設定したらあっさりTypeKeyで認証できました。
意外なところに落とし穴があった…。
ちなみにMTはwarnを使ってデバッグをすると画面にその文字列がでるのだが、それがいやな場合にはMT::log()という関数があるので、それを使えば管理画面のトップページからリンクされているログを参照するページでその出力を参照することができます。って言わずもがな、かな…。