ttt

getttyent

(FreeBSD) portsのmail/imap-uwでUnable to load certif

2014-02-19 23:59:00 | デジタル・インターネット

最近、pkgngに移行して、ついでにバイナリパッケージをビルドしなおしています。
ふと気がつけば、imap-uwなPOP3/IMAPが動かなくなっていました。

ログメッセージでは、Unable to load certificate from /SOMEWHERE/cclient/work/stage/usr/local/certs/ipop3d.pem, host=HOSTNAME [IP ADDRESS]というエラーが記録されていました。

どうやら、portsのmail/cclientをビルドしたときに、OSCFLAGSというファイルのSSL_CERT_DIRECTORYで、

-I/usr/include -I/usr/include/openssl -DSSL_CERT_DIRECTORY="/SOMEWHERE/cclient/work/stage/usr/local/certs" -DSSL_KEY_DIRECTORY="/SOMEWHERE/cclient/work/stage/usr/local/certs"

という感じで、SSL_CERT_DIRECTORYとSSL_KEY_DIRECTORYにて、ビルド中の作業ディレクトリのパスが指定されてビルドされているのが原因のようです。本来は、/usr/local/certsにならないといけないと思うのですが・・・

なぜそうなるのかは、portsの、mail/cclient/Makefileのpost-patchの部分で、書き換えを行っているからみたいです。

どういう意図なのかよくわからなかったのですが、とりあえずimap-uwのサービス復旧を急ぐために、make clean、make patchしたあと、どこかの(忘れた)Makefileの以下のような部分を見つけて、SSLCERTSとSSLKEYSの指定を/usr/local/certsへ手で書き換えて、makeしなおしました。

bsf:    an
        $(TOUCH) ip6
        $(BUILD) BUILDTYPE=$@ IP=$(IP6) \                                       
        PASSWDTYPE=pam \                                                       
        SPECIALS="SSLINCLUDE=/usr/include SSLLIB=/usr/lib SSLCERTS=/SOMEWHERE/cclient/work/stage/usr/local/certs SSLKEYS=/SOMEWHERE/cclient/work/stage/usr/local/certs GSSINCLUDE=/usr/include GSSLIB=/usr/lib PAMLDFLAGS=-lpam"

とりあえず復旧。

なぜこうなったんでしょうかね。
いつからこうなったんでしょうかね。

20140219