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

Reply via email to