1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
|
THE EXIM MAIL TRANSFER AGENT
----------------------------
Copyright (c) 1998 University of Cambridge.
See the file NOTICE for conditions of use and distribution.
There is a mailing list for Exim whose address is exim-users@exim.org;
requests to be added should be sent to exim-users-request@exim.org.
There is also a web site at http://www.exim.org.
The author of Exim believes that it is Y2K-compliant, as long as the
underlying operating system and C library are. Exim does not parse dates or
times at all. Internally, it makes some use of binary timestamps in Unix format
(number of seconds since 1-Jan-1970) and uses C library services to convert
these to printing forms (e.g. for logging). The printing forms all use 4-digit
years.
EXIM DISTRIBUTION
-----------------
Unpacking the tar file should produce a single directory called exim-<version>,
containing the following files and directories:
LICENCE the GNU General Public Licence
Makefile top level Makefile
OS/ directory containing OS-specific files
NOTICE notice about conditions of use
README this file
README.IPV6 current status of experimental IPv6 support
README* other specific information files, with distinctive names
doc/ directory of documentation files
exim_monitor/ directory of source files for the Exim monitor
scripts/ directory of scripts used in the build process
src/ directory of source files
util/ directory of independent utilities
Please see the documentation files for full instructions on how to build,
install, and run Exim. For straightforward installations on operating systems
to which Exim has already been ported, the building process is as follows:
. Edit the file called src/EDITME and put the result in a file called
Local/Makefile. There are comments in src/EDITME telling you what the
various parameters are. You must at least provide values for CONFIGURE_FILE
and BIN_DIRECTORY, and is is recommended also that SPOOL_DIRECTORY be defined
here if it is a fixed path. Other parameters can be defaulted, though it is
recommended you set up a uid and gid for Exim and declare their values
in EXIM_USER and EXIM_GROUP.
. There are a number of additional parameters whose defaults can also be
overridden by additions to Local/Makefile. The basic defaults are in
OS/Makefile-Default, but these settings are overridden for some operating
systems by values on OS/Makefile-<osname>. The most commonly-required change
is probably the setting of CC, which defines the command to run the C
compiler, and which defaults to gcc. To change it to cc, add the following
line to Local/Makefile:
CC=cc
If you are running the Berkeley DB package as your dbm library, then it is
worth putting USE_DB=yes in Local/Makefile, to get Exim to use the native
interface. See doc/dbm.discuss.txt for discussion on dbm libraries.
. If you are going to compile the Exim monitor, edit the file called
exim_monitor/EDITME and put the result in a file called Local/eximon.conf.
If you are not going to compile the Exim monitor, you should have commented
out the line starting EXIM_MONITOR= when creating Local/Makefile. There are
comments in exim_monitor/EDITME about the values set therein, but in this
case everything can be defaulted if you wish.
. Type "make". This will determine what your machine's architecture and
operating system are, and create a build directory from those names (e.g.
"build-SunOS5-sparc"). Symbolic links are created from the build directory
to the source directory. A configured make file called <build-dir>/makefile
is then created, and "make" then goes on to use this to build various
binaries and scripts inside the build directory.
. Type "make install", while running as root, to install the binaries,
scripts, and a default configuration file. To see what this command is
going to do before risking it, run "../scripts/exim_install -n" (not as
root) from within the build directory. Running the install script does NOT
replace /usr/lib/sendmail with a link to Exim. That step you must perform by
hand when you are satisfied that Exim is running correctly.
. The default configuration file will use your host's fully qualified name (as
obtained from the uname() function) as the only local mail domain and as the
domain which is used to qualify unqualified local mail addresses. See the
comments in the default configuration file if you want to change these.
The operating systems currently supported are: AIX, BSDI, DGUX, Digital Unix,
FreeBSD, HI-OSF (Hitachi), HP-UX, IRIX, Linux, MIPS RISCOS, NetBSD, OpenBSD,
QNX, SCO, SCO SVR4.2 (aka UNIX-SV), SunOS4, SunOS5, Ultrix and
Unixware. However, code is not available for determining system load averages
on Ultrix.
******* Modifying the building process ******
Instructions for overriding the build-time options for Exim are given in the
manual. You should never have to modify any of the supplied files; it should be
possible to override everything that is necessary by creating suitable files in
the Local directory. This means that you won't need to redo your modifications
for the next release of Exim. If you find you can't avoid changing some other
file, let me know and I'll see if I can find a way of making that unnecessary.
Briefly, the building process concatenates a number of files in order to
construct its working makefile. If <ostype> and <archtype> are the operating
system and architecture types respectively, the files used are:
OS/Makefile-Default
OS/Makefile-<ostype>
Local/Makefile
Local/Makefile-<ostype>
Local/Makefile-<archtype>
Local/Makefile-<ostype>-<archtype>
OS/Makefile-Base
Of the Local/* files, only Local/Makefile is required to exist; the rest are
optional. Because of the way "make" works, values set in later files override
values set in earlier ones. Thus you can set up general options that are
overridden for specify operating systems and/or architectures if you wish.
******* IMPORTANT FOR LINUX USERS *******
Different versions of Linux come with different DBM libraries, stored in
different places. As well as setting USE_DB=yes in Local/Makefile if Berkeley
DB is in use, it may also be necessary to set a value in DBMLIB to specify the
inclusion of the DBM library, for example: DBMLIB=-ldb.
The building scripts now distinguish between versions of Linux with the older
libc5 and the more recent ones that use libc6. In the latter case, USE_DB and
-ldb are the default settings, because DB is standard with libc6.
******* IMPORTANT FOR LINUX NFS USERS *******
There are problems with locking in Linux 2.0.27 when delivering to a file
that is NFS mounted. This is the official word from the author of the NFS code
in Linux:
There is nothing in the NFS spec that requires the client to update its
cached link count.
Nevertheless, I guess I'll have to support this in the upcoming NFS
code... For the time being, I suggest exim users apply the following
patch to fs/nfs/dir.c, function nfs_link:
-------- fake patch -----
nfs_lookup_cache_remove(dir, oldinode, NULL);
+ NFS_CACHEINV(oldinode);
iput(oldinode);
-------------------------
This is only relevant if you are going to deliver mail to files that are
NFS-mounted. In fact, the code in Exim 1.60 has been improved so that most of
the time it won't be affected by this problem.
******* IMPORTANT FOR Unixware 2.x USERS *******
Unixware does not include db/dbm/ndbm with its standard compiler (it is
available with /usr/ucb/cc, but that has bugs of its own). You should install
gcc and Berkeley DB (or another dbm library if you really insist). If you use a
different dbm library you will need to override the default setting of DBMLIB.
DB 1.85 and 2.x can be found at http://www.sleepycat.com/. They have different
characteristics. See the discussion of dbm libraries in doc/dbm.discuss.txt. DB
needs to be compiled with gcc and you need a 'cc' in your path before the
Unixware CC to compile it.
Don't bother even starting to install exim on Unixware unless you have
installed gcc and use it for everything.
******* IMPORTANT FOR SOLARIS 2.3 (SUNOS 5.3) USERS *******
The file /usr/include/sysexits.h does not exist on Solaris 2.3 (and presumably
earlier versions), though it is present in 2.4 and later versions. To compile
Exim on Solaris 2.3 it is necessary to include the line
CFLAGS=-O -DNO_SYSEXITS -DEX_TEMPFAIL=75
in your Local/Makefile.
******* IMPORTANT FOR IRIX USERS *******
As from version 2.03 there is IRIX-specific code in Exim to obtain a list of
all the IP addresses on local interfaces, including alias addresses, because
the standard code gives only non-alias addresses in IRIX. The code came from
SGI, with the comment:
"On 6.2 you need the libc patch to get the sysctl() stub and the networking
kernel patch to get the support."
If you can't compile under IRIX and the problem is in the host.c module, and
appears to relate to sysctl(), try undefining SYSCTL_IP_INTERFACES in the
OS.h-IRIX... file.
******* IMPORTANT FOR QNX USERS *******
1. Exim makes some assumptions about the shell in the makefiles. The "normal"
QNX shell (ksh) will not work. You need to install "bash", which can be
obtained from the QNX freeware on QUICS. Install it to /usr/local/bin/bash
Then you need to change the SHELL definition at the top of the main Makefile
to SHELL=/usr/local/bin/bash. The file OS/Makefile-QNX sets the variable
MAKE_SHELL to /usr/local/bin/bash. If you install bash in a different place,
you will need to set MAKE_SHELL in your Local/Makefile in order to override
this.
2. For some strange reason make will fail at building "exim_dbmbuild" when
called the first time. However simply calling make a second time will solve
the problem. Alternatively, run "make makfile" and then "make".
******* IMPORTANT FOR ULTRIX USERS *******
You need to set SHELL explicitly in the make call when building on ULTRIX,
that is, type "make SHELL=sh5".
Philip Hazel <ph10@cus.cam.ac.uk>
|