- PR -

courier-imap & authlib でのコンパイル

投稿者投稿内容
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-01-26 09:42
いつもお世話になっています。

・環境
Redhat 8.0
qmail 1.03
vpopmail 5.2.1
tcpserver
daemontools
courier-authlib 0.58
courier-imap 4.0.6

・状況
configure で Makefile が生成されない。
明示的にエラー終了している訳ではなさそう?

・経緯

ls -al /var/qmail/vpopmail/lib/libvpopmail.a
-rwxr-xr-x 1 vpopmail vchkpw 217810 Jan 25 02:18 /var/qmail/vpopmail/lib/libvpopmail.a
vpopmail 側の実行権は変更済み。

courier-authlib を

./configure \
--without-authldap \
--without-authpwd \
--without-authshadow \
--without-authpgsql \
--without-authmysql \
--without-authcustom \
--with-db=gdbm \
--with-db=db \
--with-mailuser=vchkpw \
--with-mailgroup=vchkpw \
--with-redhat

でコンパイル後に
make
make install
し、設定ファイルを修正して、
/usr/local/libexec/courier-authlib/authdaemond
の起動確認をしました。

その後、
courier-imap 4.0.6
のコンパイル作業時に

Cannot obtain information for user vchkpw: Success

と表示された後に Makefile が生成されずに先に進めない状況になってしまいました。
自分の作業を見返した際に courier-authlib のコンパイルオプションで
×--with-mailuser=vchkpw
○--with-mailuser=vpopmail
でしたので、再度コンパイルを試みましたが、

checking for crypt in -lcrypt... yes
checking for crypt... yes
checking for crypt() prototype... 0
Cannot obtain information for user vchkpw: Success

上記の様に courier-imap 同様に courier-authlib も Makefile が生成されない状況となってしまいました。

config.log では、

#define USERDB "/usr/local/etc/authlib/userdb"
#endif
#ifdef __cplusplus
extern "C" void std::exit (int) throw (); using std::exit;

configure: exit 1

の様になっており、これらの断片的なキーワードを頼りに類似例の検索を行ってみましたが、該当情報を見つけられない状況です。

gcc 関連に問題がある?的な記事を見つけましたので、RPM で入れ替えしてみましたが、状況が変わらずです。

--with-mailuser で vpopmail を明示的に指定しているのが効いていない様にも見えますが、どのように回避できるのかが検討もつきません。

ご助言いただけると助かりますので、よろしくお願いします。
流しのエンジニア
常連さん
会議室デビュー日: 2003/10/17
投稿数: 48
投稿日時: 2006-01-26 12:35
引用:

あるかなさんの書き込み (2006-01-26 09:42) より:
いつもお世話になっています。

./configure
--without-authldap
--without-authpwd
--without-authshadow
--without-authpgsql
--without-authmysql
--without-authcustom
--with-db=gdbm
--with-db=db
--with-mailuser=vchkpw
--with-mailgroup=vchkpw
--with-redhat



--with-mailuser=vchkpw
の下の
--with-mailgroup=vchkpw
を他のグループ(vpopmailの所属するメールシステム用のグループ)に変更してみるのはいかがでしょうか?
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-01-26 14:42
>流しのエンジニアさん

ご助言、ありがとうございます。


なるほど!
と思い、コンパイルオプションを変更してみました。
※ちなみに vpopmail のアカウントは vpopmail/vchkpw (117/117) です。

--with-mailuser=117
--with-mailgroup=117
--with-redhat

--with-mailuser=root
--with-mailgroup=root
--with-redhat

--with-mailuser=vpopmail
--with-mailgroup=qmail
--with-redhat

--with-mailuser=vpopmail
--with-mailgroup=vchkpw
--with-redhat

--with-mailuser=117
--with-mailgroup=117


上記5パターンを試してみましたが、変化無しな状態です。
最後の --with-redhat を抜いた場合ですと、コンパイル時に
警告と共に異常終了しましたので、コンパイル時の引数自体を受け付けていない訳ではないと思われます。

間違ったとはいえ、一度はコンパイルで通っているのが謎なのですが。。。
再度(一度は通った)同じオプションで試しても通らなくなってしまったので、コンパイルオプションが引数を無視してどこかで固定されてしまったのかなんなのか。。。

もう推測も立てられないお手上げ状態です。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-01-26 15:03
ふと思いついて発想の転換?(最近こんなのばかりですが)で、
vchkpw ユーザーがいないと怒られるなら作ってしまえ!
ということで、vpopmail と同じ uid の vchkpw アカウントを
作成したらコンフィグが通りました。

ただ、この回避方法は適切では無いので、これで進もうとは思っていませんが。。。

ソースディレクトリを一度削除して、新たに展開したソースでも
やはり、状況が変わらなかったことから、authlib のバグの可能性がありますでしょうか?

一度確定させた mailuser の変更が出来ないような。。。
コンパイルオプションを無視されるのは始めての経験なのですが、
こんなことはありえるのでしょうか?
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-01-26 15:35
解決しました。

存在しない(誤った)--with-mailuser でコンパイルした場合の再コンパイルが通らなくなった場合。

1.初回で通した mailuser 名を正しい mailuser 名と同じ uid でアカウント作成。
2.適切なオプションでコンパイル
3.make; make install
4.一度サービス起動後に停止
5.1で作成した仮アカウントの削除
6.2−3を繰り返す
7.サービスの起動

2まで行った際に Makefile を確認したら mailuser はコンパイル時に指定した vpopmail になっていたので、この点だけをクリアするだけで良いのかもしれません。

やはり、これはバグに類するのでしょうか?
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-01-26 21:40
こんばんわ.

せっかく RedHat で使うなら,
RPM packages を build して使ったほうがよろしいのでは?
rpmbuild -ta するよりも,付属の SPEC に configure option を追加して,
rpmbuild --rebuild したら良いのではないかと.
※RedHat8 だと rpm --rebuild でしたっけ?
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-01-27 18:17
>kazさん

ご助言、ありがとうございます。
RHL ユーザー歴数年となっている自分なのですが、
RPM はほとんど使ったことがなく…

確かにその方法の方が便利ですよね。
RPM のことも勉強しながら導入検討していきたいと思います。
流しのエンジニア
常連さん
会議室デビュー日: 2003/10/17
投稿数: 48
投稿日時: 2006-01-27 21:34
Courier IMAPのRPM作成は、Postfix環境のRHEL3やRedhat 9でおこなったことがありますが、tarボールに、SPECファイルが入っており、かなりスムースに作成できました。
Redhat 8では、作ったことはありませんが、多分あまりかわらないと思いますよ。

スキルアップ/キャリアアップ(JOB@IT)