眠い。


だんだんと眠くなってきましたよ in 会社。

どうでもいいけど、postfixのここ。

/postfix-2.5.2/src/global/dict_pgsql.c
if (PQsetClientEncoding(host->db, "LATIN1") != 0) { msg_warn("dict_pgsql: cannot set the encoding to LATIN1, skipping %s", host->hostname); plpgsql_down_host(host); return; }

ここはmsg_warnじゃなくてmsg_fatalとかじゃないの?master.cfのsmtpdに-vオプションつけるまでここで引っかかってうまく動いてないのに気づかなかった…これに気づくまでしばらく大ハマりでしたよ。

ちなみに解決方法はpostgresqlのDBをEUC_JPで作らないこと。UTF-8とかにすれば大丈夫。
それかこの行をごっそり亡き者にして作り直すといいかも。。。けど、大丈夫かは不明。

[2008/9/4追記]
すいません、msg_warnでも/var/log/maillogに残ってました。というわけで別にmsg_fatalとかじゃなくてもよかった…。やっぱ徹夜でサーバの設定をするものじゃないということでしょうねorz
作成日:2008/08/30 03:33:23
トラックバック  ※トラックバックは承認後に表示されます。
TrackbackURL:このページのトラックバックの受付は終了しています。

トラックバックはありません。
コメント
1
かっし~ 30Aug2008 03:50PM
うちはPostgreSQLは全部UTFにしてるから今のところ大丈夫ですな。
MySQLはどうだろう。UTF8文字化けしてつかなかったんだよなー
でも上のコードどこの部分だろ、無理矢理エラーにしてる感じがするけど
2
そうし 31Aug2008 02:52AM
> かっし~
昔からのシステムとの連携だったんでEUCだったんだよなぁ。でもどうせpostfixと連携するところはマルチバイト文字入らないし、UTFにしてしまった。
MySQLはやってないので不明だけど、postgreslみたいな文字コードのしばりがないので多分今回みたいな現象は起きないんじゃないかな。。。きっと。
コードはpostfixからpostgresqlに接続してるところ付近だと思う。postfix内部でマルチバイト使う必要がないのでここでLATIN1にして、LATIN1に変更ができなかったら切断ということをやってるっぽい。
マルチバイトだとescapeミスとかがでる可能性があるので(特にSJISとか)ここで強制的に切ってるんじゃないかな。
つーかPostgresqlでEUC_JPがLATIN1を包括できないってのも変な話のような。UTFはできるのに。
あとなんでPostgresqlだけEUC-JPじゃなくてEUC_JPなんだというのも気になる。

名前:

タイトル:

コメント: