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