Victor Duchovni: > On Mon, Jul 25, 2011 at 05:20:07PM +0100, Jonathan Gazeley wrote: > > > I've been running a postfix server on CentOS 5 for a while with no problem. > > I set up a new CentOS 6 box with postfix, and basically transplanted my > > configs across to the new one. The service starts, but doesn't work > > properly: it doesn't accept email on 25 or 587 (TLS), but instead this > > appears in the maillog: > > > > Jul 25 17:12:43 helios postfix/smtpd[14436]: fatal: open database > > /etc/postfix/virtual.db: No such file or directory > > Jul 25 17:12:44 helios postfix/master[14239]: warning: process > > /usr/libexec/postfix/smtpd pid 14436 exit status 1 > > Jul 25 17:12:44 helios postfix/master[14239]: warning: > > /usr/libexec/postfix/smtpd: bad command startup -- throttling > > > > > > I do have a virtual.db, though. I deleted all my *.db and recreated them > > with postmap to ensure they were OK. The ownership and perms seem OK: > > My guess (you neither provide postconf -n output, nor specify what > postmap incantation was used to create the virtual.db file) is that > the .db files in question may not of the expected dictionary type. > Perhaps they're "hash" instead of "btree", or "btree" instead of "hash". > > Another possibility is that the postmap(1) binary in question is linked > with a different Berkeley DB library than smtpd(8) (mixed Postfix install > with admin utilities in sbin from a different Postfix version than the > libexec daemons).
As of Postfix 2.4, all binaries are stamped with version information: % strings /usr/libexec/postfix/* /usr/sbin/post* /usr/sbin/sendmail | grep mail_version= | sort | uniq -c 41 mail_version=2.9-20110706 All 41 program files have the same version. Maybe we should also bury the compile-time options (the "EXPORT" string in $config_directory/makedefs.out) information into the executables and examine them with a similar query as above: % strings [files] | egrep '(mail_version|build_info)=' | sort | uniq -c The output should then be the same for all program files. Another idea is to add a -F (fingerprint) command-line option to every executable that dumps mail_version and build_info information. Some people may not be comfortable with egrep and such. Wietse