vpgsql.c のバグ。

2009/09/17 16:23:29

カテゴリ

qmail / vpopmail

vpopmail-5.4.28 で、

・DBにPostgreSQLを利用
・valias をDBで利用

するように configure オプションをつけるとコンパイルに失敗する。

configure の例)
./configure \
--disable-roaming-users \
--enable-clear-passwd \
--disable-many-domains \
--enable-auth-module=pgsql \
--enable-auth-logging \
--enable-sql-logging \
--enable-qmail-ext=y \
--enable-valias

vpgsql.c のバグ。

http://www.opensubscriber.com/message/vchkpw@inter7.com/8020918.html

下記が該当するパッチかも。
ftp://ftp.ncnu.edu.tw/FreeBSD/branches/-current/ports/mail/vpopmail/files/patch-vpgsql.c

別件。
vlog テーブルが作成されるはずだが、vpgsql.h に指定されているCREATE TABLE構文が間違っている。

#ifdef ENABLE_SQL_LOGGING
#define VLOG_TABLE_LAYOUT "id serial, \
userid char(32), passwd CHAR(32), \
domain CHAR(96), logon VARCHAR(200), \
remoteip char(18), message VARCHAR(255), \
timestamp bigint default 0 NOT NULL, error INT, \
INDEX user_idx (user), \
INDEX domain_idx (domain), INDEX remoteip_idx (remoteip), \
INDEX error_idx (error), INDEX message_idx (message)"
#endif

INDEX 以降は使えないので下記に変更。

#ifdef ENABLE_SQL_LOGGING
#define VLOG_TABLE_LAYOUT "id serial, \
userid char(32), passwd CHAR(32), \
domain CHAR(96), logon VARCHAR(200), \
remoteip char(18), message VARCHAR(255), \
timestamp bigint default 0 NOT NULL, error INT"
#endif

ただし、これでもvlogテーブルが作成されないようなので、結局下記のSQLを手動で実行するのがいいかも。

create table vlog(
id serial,
userid char(32), passwd CHAR(32),
domain CHAR(96), logon VARCHAR(200),
remoteip char(18), message VARCHAR(255),
timestamp bigint default 0 NOT NULL, error INT
)

コメント