以前からトラックバックの不調に悩まされていたのだが、なんとなくその原因が分かってきました。
症状としては、トラックバックを受信した際に、受信通知のメールが届くにもかかわらず実際に見てみると、正しく受信できておらずトラックバックの一覧に追加されていないというもの。特に MovableType のログに何か記録されているということもありません。
が、よくみたら syslog にメッセージが残っていました。/var/log/messages に以下のエラーが吐かれていました。
postgres[27571]: [1] ERROR: Invalid EUC_JP character sequence found (0xa42e)
データの保管に PostgreSQL を利用していて、かつこのエラーが吐かれた時間とトラックバックを受信した時間がほぼ一致するので、これが原因なのは間違いなさそうです。
受信したメールを見てみると、トラックバックの概要 (Excecrpt) の文章の末尾の文字が欠けているというか、ゴミが残っているものがあります。これは、MovableType がトラックバックで送信する際に、ある程度の文字数で文章を切り詰めるためだと思います。切り詰め処理のときに文字数をバイト数で数えていて、日本語のような2バイト文字(UTF-8だと3バイト)が途中でぶった切られてしまってゴミが残っているのではないかと。
このゴミを PostgreSQL に格納する際に「EUC-JP じゃんな文字定義されてねーよ」 とエラーを出しているみたいです。
さて、原因はつかめたところでどう直そうか。
BerkeleyDB や MySQL な環境ではこの問題は出ないのでしょうかね。(よく考えたら、BerkeleyDB はファイルベースで文字コード関係なさそうだし、出なそうですな。)