Re: [Exim] failed to open DB file

Αρχική Σελίδα
Delete this message
Reply to this message
Συντάκτης: Martin Kaiser
Ημερομηνία:  
Προς: exim-users
Αντικείμενο: Re: [Exim] failed to open DB file
Hi Sheldon,

Thus wrote Sheldon Hearn (sheldonh@???):

> On Tue, 14 Jan 2003 11:04:37 +0100, Martin Kaiser wrote:


> > I'm using exim 4.12 on FreeBSD 4.1, compiling Exim from the sources
> > (using the port is not an option on this machine).


> That's unfortunate, because the port is intended to protect you from
> exactly this sort of problem.


I know - and I'm very happy with the port on a lot of other FreeBSD
boxes.

> In that case, it looks like you have a Berkeley DB version conflict.


DB code is included in the libc on FreeBSD, right? Is there a way to
figure out what version is included (other than cvsupping the complete 4.1
sources)?

> > Exim can't keep track of the retry times, undeliverable mails will never
> > be expunged from the queue.


> > I tried both the DBM that comes with FreeBSD and the latest Berkeley
> > DB4. However, I still get the same message.


> You got the same message, but possibly for two different reasons.


> You didn't supply your EDITME / Makefile, and you didn't supply the
> output from ldd /usr/local/sbin/exim, so I can only guess.


Shame on me ;-)

The changes I made in Local/Makefile look like this:

BIN_DIRECTORY=/usr/local/exim/bin
CONFIGURE_FILE=/usr/local/exim/etc/configure
EXIM_USER=mailnull
EXIM_GROUP=mail
SPOOL_DIRECTORY=/var/spool/exim
ROUTER_ACCEPT=yes
ROUTER_DNSLOOKUP=yes
ROUTER_IPLITERAL=yes
ROUTER_MANUALROUTE=yes
ROUTER_QUERYPROGRAM=yes
ROUTER_REDIRECT=yes
TRANSPORT_APPENDFILE=yes
TRANSPORT_AUTOREPLY=yes
TRANSPORT_PIPE=yes
TRANSPORT_SMTP=yes
LOOKUP_DBM=yes
LOOKUP_LSEARCH=yes
AUTH_CRAM_MD5=yes
AUTH_PLAINTEXT=yes
LOG_FILE_PATH=/var/log/exim/%slog
EXICYCLOG_MAX=14
COMPRESS_COMMAND=/usr/bin/gzip
COMPRESS_SUFFIX=gz
ZCAT_COMMAND=/usr/bin/zcat
SYSTEM_ALIASES_FILE=/etc/mail/aliases

For compiling with Berkeley DB4, I changed OS/Makefile-FreeBSD (there
might be better ways to do this):

# FreeBSD always ships with Berkeley DB
USE_DB=yes
DBMLIB= -L/usr/local/BerkeleyDB.4.0/lib/ -ldb-4

For the standard DB, there's just the USE_DB=yes line.


The ldd output for the standard DB settings:

root@???# ldd /usr/local/exim/bin/exim
/usr/local/exim/bin/exim:
        libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x280d5000)
        libc.so.4 => /usr/lib/libc.so.4 (0x280d8000)



And for the Berkeley DB4 version:

root@???# ldd /usr/local/src/exim-4.12/build-FreeBSD-i386/exim
/usr/local/src/exim-4.11/build-FreeBSD-i386/exim:
        libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x280d5000)
        libdb-4.0.so => /usr/local/BerkeleyDB.4.0/lib/libdb-4.0.so (0x280d8000)
        libc.so.4 => /usr/lib/libc.so.4 (0x2815d000)



> I hope that your reason for not using the FreeBSD port for Exim isn't "I
> can't use CVSup to update my ports tree". If that's the reason, you're
> in _REAL_ trouble, running an unpatched FreeBSD 4.1 host connected to
> the Internet. :-)


You're very right about that point ;-)

Martin