at_yasu's blog

ロード的なことを

portsのPostfix

portsの存在を知らない頃にインストールした、つまりソースコンパイルでインストールしたPostfixと、portsでインストールしたpostfixが同居しちゃう話。

ソースコンパイルしたPostfixの場合、/usr以下にインストールします。一方でPortsだと、/usr/local以下にインストールします。

これだと見事に棲み分けてしまい、同居状態になります。


さてこれの問題はBDBをpostmapコマンドで作成した時に、環境変数PATHによりますけど、postmapコマンドがソースコンパイルの方に行っちゃう事です。

するとPortsでインストールして起動している方は下記のようなエラーを出します。

Aug 23 11:53:15 top postfix/trivial-rewrite[4337]: fatal: open database /etc/postfix/virtual-hash.cf.db: Invalid argument
Aug 23 11:53:15 top postfix/cleanup[4338]: fatal: open database /etc/postfix/virtual-hash.cf.db: Invalid argument
Aug 23 11:53:16 top postfix/master[36674]: warning: process /usr/local/libexec/postfix/trivial-rewrite pid 4337 exit status 1
Aug 23 11:53:16 top postfix/master[36674]: warning: /usr/local/libexec/postfix/trivial-rewrite: bad command startup -- throttling
Aug 23 11:53:16 top postfix/master[36674]: warning: process /usr/local/libexec/postfix/cleanup pid 4338 exit status 1
Aug 23 11:53:16 top postfix/master[36674]: warning: /usr/local/libexec/postfix/cleanup: bad command startup -- throttling
...

こんな感じで。

対策は簡単で、/usr/sbin/post* を消したら良いだけです。後、/usr/libexec/postfix も消した方がよろしいかも。

消した後で気味悪いと思うなら、portsで、reinstallをおすすめ。


追記

エラーの原因書かずに私は一体何を書いてるんだ。
上の、Postfixのエラーの原因は、BDBのバージョンが合わずにPostfixが異常終了しているのです。
つまり、Portsで入れたPostfixと、ソースコンパイルしたPostfixのBDBのバージョンが違う場合、上記のような阿呆な事にハマりますよと言いたいのです。