Postfix(6)
■ このスレッドは過去ログ倉庫に格納されています
0016名無しさん@お腹いっぱい。
2006/09/23(土) 22:03:37alias_mapsのテーブルにPostgreSQLを使っているのですが、2.2.9から2.3.3へ移行したところ上手く動かなくなりました。
smtpd内のエイリアス処理がPostgreSQLのテーブルを引くところで失敗してしまい、Temporary lookup failureを吐いてメールが一切流れない状態になります。
ログにはwarning: dict_pgsql: cannot set the encoding to LATIN1, skipping localhost"と出ています。
調べてみるとサーバー側のデータベースのエンコーディングがLATIN1へ変更できないもの(この場合EUC_JP)だと動かないようです。
ソースとかpostfix-users MLとかを見ると、どうも問題を起こしている場所のコードはPostgreSQL側のSQLインジェクション対策を勘違いして入れた感じがしています。
(http://archives.neohapsis.com/archives/postfix/2006-07/1530.html 参照)
ソースの該当箇所を削るとか、PostgreSQLのデータベースのエンコーディングをSQL_ASCIIに変えるとかの対策は思いつくのですが、どれも面倒な感じで途方に暮れています。
何か良い対策はないでしょうか?
設定ファイル
main.cf:
...
alias_maps = hash:/etc/mail/aliases pgsql:/usr/local/etc/postfix/pgsql-aliases.cf
...
pgsql-aliases.cf:
hosts = localhost
user = dbuser
password = passwd
dbname = database
query = SELECT mailaddress FROM userdb WHERE username = '%s' AND username IS NOT NULL AND mailaddress <> ''
PostgreSQLのテーブル(エンコーディングはEUC_JPを指定)
CREATE TABLE userdb (
username TEXT,
mailaddress TEXT
);
■ このスレッドは過去ログ倉庫に格納されています