Installing Exim - build time


 

 

 

 

 

Introduction

Exim is an e-mail MTA that runs on Unix or Linux, and so can be used instead of Sendmail.

It was developed at the University of Cambridge by Philip Hazel, and is available at zero cost, but there are licence conditions.

 

Aquiring Exim

Some distributions of Linux have Exim included in the package, but Caldera Linux 1.3 is not one of them.

It was therefore neccessary to download it.

On the Exim website at www.exim.org there are various versions available. As the book on Exim by Philip Hazel ( published by O`Reilly ) was written around version 3.2x, I downloaded version 3.34, the earliest one available. The download version was "exim-3.34.tar.gz"

 

Build time configuration

Exim was uncompressed into /usr/source/exim and expands into /usr/source/exim/exim-3.34/

The first part of the installation is to create a build time configuration file called Makefile, and then do a compilation.

A sample Makefile is supplied in the form /usr/source/exim/exim-3.34/src/EDITME.

In my case, I produced a file /usr/source/exim/exim-3.34/Local/Makefile, which contained the following -

 

    BIN_DIRECTORY=/usr/exim/bin

    CONFIGURE_FILE=/usr/exim/configure

    DIRECTOR_ALIASFILE=yes

    DIRECTOR_FORWARDFILE=yes

    DIRECTOR_LOCALUSER=yes

    DIRECTOR_SMARTUSER=yes

    EXICYCLOG_MAX=10

    EXIM_UID=42

    EXIM_GID=42

    HEADER_MAXSIZE="(1024*1024)"

    LOG_FILE_PATH=/var/log/exim_%slog

    LOOKUP_DBM=yes

    LOOKUP_LSEARCH=yes

    ROUTER_DOMAINLIST=yes

    ROUTER_LOOKUPHOST=yes

    SPOOL_DIRECTORY=/usr/exim/spool

    SPOOL_MODE=0640

    TRANSPORT_APPENDFILE=yes

    TRANSPORT_AUTOREPLY=yes

    TRANSPORT_PIPE=yes

    TRANSPORT_SMTP=yes

    

 

Compilation

The compilation is done with the "make" command.

And in my case, the compilation failed.

The problem appears to be related to the system internal database as used by Caldera Linux 1.3, which is based on gdbm.

According to documentation included within "exim-3.34.tar.gz", Exim is not set up to directly interface with gdbm. Exim tries to do it through an ndbm compatibility interface.

Looking at the error messages indicates that part of the process uses a header file /usr/include/ndbm.h - in my installation of Caldera Linux 1.3, this file did not exist.

A trawl through the internet found several references to ndbm.h, most of them about the fact the file was missing from various distributions of Linux.

Most of the references were about Perl or Kerberos not working, so far I have not found any references to Exim.

But it does seem to be a known problem.

Creating an empty ndbm.h file enables the compilation to proceed slightly further than before, but it then fails.

Eventually I found a copy of the file ndbm.h at http://www.pdc.se, and tried to use this, but to no avail. This version of ndbm.h calls up another file, db.h, which also did not exist on my installation of Caldera Linux 1.3.

So an alternative solution was required.

 

The effects of different types of installation

All the above was based on Linux being installed by selecting the "Small Standard System" option.

Doing a new install using the "Standard system" option produces the same result - the ndbm.h file did not exist.

Doing an install using the "Individual Series Selection" option, and selecting all the available library options, results in the file ndbm.h being put in to /usr/include/ as it should be. However Exim still does not compile, it now decides it can`t find "-lndbm".

Doing an install using the "Install all packages" option gives the same result, ie, ndbm.h is there, but -lndbm is not available.

 

And finally ...

Another search through the internet produced a reference to -lndbm on a site about TinyMUSH, and the possiblity of changing an entry in a configuration file from -lndbm to -lgdbm.

Eventually I found a reference to -lndbm in a file created by the Exim expansion process in /usr/source/exim/exim-3.34/OS/Makefile-Linux-libc5.

I changed the entry in line 5 from

DMBLIB= -lndbm 

to

DMBLIB= -lgdbm 

The compilation process does not use files in ....../OS/, the required file or files have to be transferred into ..../exim-3.34/Local/.

After all this, Exim then compiled.

 


© 2002 Ron Turner


Return to the Exim index page