qpopper+dracd+postfixでPOP before SMTPのインストールで嵌る
久しぶりに嵌ったのでメモ。
FreeBSD9.1のレンタルサーバでの設定。
portsをアップグレードして、qpopper+dracd+postfixでPOP before SMTPの構築を試みたのだが、あれこれがんばってみても、動かない。
maillogのエラーの1つは
postfix/smtpd[1527]: error: open database /usr/local/etc/dracd.db: Invalid argument
というもので、これ以外にもdracd単独で動くように見えてもpopperでアクセスするとdracd.dbが更新されなかったり、そもそもdracd単独テストでdracd.dbのファイルサイズが0のままになったりといろいろ。これでまる2日ほど嵌った。
まず、portを最新版にしたのがまずかった。dracdは、bdbを使って動くのだけど、bdb5だとまともに動かず、
/usr/local/sbin/rpc.dracd -i
を実行しても、/usr/local/etc/dracd.dbは0バイトのままで何も書き込まれない。また、最新版のportsからdracdを入れると、依存関係を調べてbdb5を入れてくれるので、それでいいのかと思って信用してるとダメだというorz。
まず、portsを丸ごと古いヤツに入れ替える。/usr/portsをそっくり入れ替え。すると/ports/databasesの中にbdb41があるので、間違って入れたこれより上のバージョンの関連ファイルを/usr/local/libなどを探してまるっと削除。その後、portsからbdb41を入れる。普通にmake installすればよい。何かエラーが出るならmake cleanとかmake deinstallで一旦消してからmake install、それでも何か言われたらmake reinstallで入れる。
次に
cd /usr/ports/mail/drac
make instal
を実行。オプションはDB使う、postfixを指定。すると、依存関係のチェックで既にあるbdb4.1を見て続けてくれる。/usr/local/etc/dracd.allowの設定とか自動起動とかをやっておく。ソースから入れるならlibdrac.aとかを/usr/local/libに後から置く必要があるかも。
portsから以前入れたqpopperがdracを見てくれてないぽい。メーラーでつないでもdracd.dbが更新されてない。portsをいろいろ弄ったりしたため、portsから入れようとするとpkgの方で引っかかってエラーになるので、ソースから入れる。ftp.qualcomm.comから最新のソースを引っ張ってきて展開、
./configure -enable-standalone –enable-apop –with-drac=/usr/local/lib –with-popuid=pop –mandir=/usr/share/man
make install
起動は、
/usr/local/sbin/popper -s -S
一回リブートして、rpc.dracdもpopperも自動起動することを確認し、メーラーでつないだら、dracd.dbが更新された。れんけいかくにん、よかった!
で、portから入れてもソースから入れてもdracd.dbを読んでくれなかったpostfixだが、バージョンを2.10系統にしたらあっさり動いた。特にコンパイルオプションを指定せずにmake installで問題なし。maillogに出ている、postrixがdracd.dbを開けないエラーは、dracとpostfixで異なるバージョンのbdbを使うと起きるエラーらしい。しかし、2.11以降はdracとpostfixの組み合わせでは、インストール時にどちらも入れてあるbdb4.1を使うしかないというかそれしか使えない状態でも、postfixがdracd.dbを見ようとすると失敗するみたい。
なお、/etc/aliasesから/etc/aliases.dbを作る時は、postfixと一緒に入るpostaliasを使って作らないと、aliases.dbが開けないというエラーも出る。2.10と2.11では互換性がないっぽい。もしかしたらマイナーバージョンの違いでもこのエラーは出るかもしれない。