diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 350 |
1 files changed, 350 insertions, 0 deletions
@@ -0,0 +1,350 @@ +THE EXIM MAIL TRANSFER AGENT VERSION 4 +-------------------------------------- + +Copyright (c) 1995 - 2018 University of Cambridge. +See the file NOTICE for conditions of use and distribution. + +There is a book about Exim by Philip Hazel called "The Exim SMTP Mail Server", +published by UIT Cambridge in May 2003. This is the official guide for Exim 4. +The current edition covers release 4.10 and a few later extensions. + +The O'Reilly book about Exim ("Exim The Mail Transfer Agent" by Philip Hazel) +covers Exim 3, which is now deprecated. Exim 4 has a large number of changes +from Exim 3, though the basic structure and philosophy remains the same. The +older book may be helpful for the background, but a lot of the detail has +changed, so it is likely to be confusing to newcomers. + +There is a website at https://www.exim.org; this contains details of the +mailing list exim-users@exim.org. + +A copy of the Exim FAQ should be available from the same source that you used +to obtain the Exim distribution. Additional formats for the documentation +(PostScript, PDF, Texinfo, and HTML) should also be available there. + + +EXIM DISTRIBUTION +----------------- + +Unpacking the tar file should produce a single directory called exim-<version>, +containing the following files and directories: + +ACKNOWLEDGMENTS some acknowledgments +CHANGES a conventional file name; it indirects to some files in doc/ +LICENCE the GNU General Public Licence +Local/ an empty directory for local configuration files +Makefile top level Makefile +NOTICE notice about conditions of use +OS/ directory containing OS-specific files +README this file +README.UPDATING special notes about updating from previous versions +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: + +. Ensure that the top-level Exim directory (e.g. exim-4.80) is the current + directory (containing the files and directories listed above). + +. Edit the file called src/EDITME and put the result in a new file called + Local/Makefile. There are comments in src/EDITME telling you what the various + parameters are. You must at least provide values for BIN_DIRECTORY, + CONFIGURE_FILE, EXIM_USER and EXIM_GROUP (if EXIM_USER is numeric), and it is + recommended that SPOOL_DIRECTORY also be defined here if it is a fixed path. + +. 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. This is the default for some operating systems. See + doc/dbm.discuss.txt for discussion on dbm libraries. + +. If you want 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. + +. If your system is not POSIX compliant by default, then you might experience + fewer problems if you help point the build tools to the POSIX variants. For + instance, on Solaris: + + PATH=/usr/xpg4/bin:$PATH make SHELL=/usr/xpg4/bin/sh + +. 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. + +. When you are ready to try running Exim, see the section entitled "Testing" + in the chapter called "Building and Installing Exim" in doc/spec.txt, or in + one of the other forms of the documentation. + +. Running the install script does NOT replace /usr/sbin/sendmail or + /usr/lib/sendmail with a link to Exim. That step you must perform by hand + when you are satisfied that Exim is running correctly. + +. Note that the default configuration refers to an alias file called + /etc/aliases. It used to be the case that every Unix had that file, because + it was the Sendmail default. These days, there are systems that don't have + /etc/aliases, so you might need to set it up. Your aliases should at least + include an alias for "postmaster". + +. Consider notifying users of the change of MTA. Exim has different + capabilities, and there are various operational differences, such as stricter + adherence to the RFCs than some MTAs, and differences in the text of + messages produced by various command-line options. + +. 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, BSD/OS (aka BSDI), Darwin +(Mac OS X), DGUX, FreeBSD, GNU/Hurd, GNU/Linux, HI-OSF (Hitachi), HP-UX, IRIX, +MIPS RISCOS, NetBSD, OpenBSD, QNX, SCO, SCO SVR4.2 (aka UNIX-SV), Solaris (aka +SunOS5), SunOS4, Tru64-Unix (formerly Digital Unix, formerly DEC-OSF1), Ultrix, +and Unixware. However, code is not available for determining system load +averages on Ultrix. There are also configuration files for compiling Exim in +the Cygwin environment that can be installed on systems running Windows. +However, the documentation supplied with the distribution does not contain any +information about running Exim in the Cygwin environment. + + +******* 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> + Local/Makefile-<buildname> + 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 GNU/LINUX USERS ******* + +Exim 4 won't work with some versions of Linux if you put its spool directory on +an NFS partition. You get an error about "directory sync failed". This is +because of a bug in Linux NFS. A fix has been promised in due course. It is in +any case much better to put Exim's spool directory on local disc. + +If you get an error complaining about the lack of functions such as dbm_open() +when building Exim, the problem is that it hasn't been able to find a DBM +library. See the file doc/dbm.discuss.txt for a discussion about the various +DBM libraries. + +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 or DBMLIB=-lgdbm. + +If you are using RedHat 7.0, which has DB3 as its DBM library, you need to +install the db-devel package before building Exim. This will have a name like +db3-devel-3.1.14-16.i386.rpm (but check which release of DB3 you have). + +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. + +It appears that with glibc-2.1.x (a minor libc upgrade), they have standardised +on Berkeley DB2 (instead of DB1 in glibc-2.0.x). If you want to get DB1 back, +you need to set + + INCLUDE=-I/usr/include/db1 + DBMLIB=-ldb1 + +in your Local/Makefile. If you omit DBMLIB=-ldb1 Exim will link successfully +using the DB1 compatibility interface to DB2, but it will expect the file +format to be that of DB2, and so will not be able to read existing DB1 files. + + +******* IMPORTANT FOR FREEBSD USERS ******* + +On FreeBSD there is a file called /etc/mail/mailer.conf which selects what to +run for various MTA calls. Instead of changing /usr/sbin/sendmail, you should +edit this file instead, to read something like this: + +sendmail /usr/exim/bin/exim +send-mail /usr/exim/bin/exim +mailq /usr/exim/bin/exim -bp +newaliases /usr/bin/true + +You will most probably need to add the line: + +daily_status_include_submit_mailq="NO" # No separate 'submit' queue + +to /etc/periodic.conf. This stops FreeBSD running the command "mailq -Ac" +(which Exim doesn't understand) to list a separate submit queue (which Exim +doesn't have). + +If you are using FreeBSD prior to 3.0-RELEASE, and you are not using the ports +mechanism to install Exim, then you should install the perl5 package +(/usr/local/bin/perl) and use that instead of perl in the base system, which is +perl4 up until 3.0-RELEASE. If you are using the ports mechanism, this is +handled for you. + +If you are upgrading from version 2.11 of Exim or earlier, and you are using +DBM files, and you did not previously have USE_DB=yes in your Local/Makefile, +then you will either have to put USE_DB=no in your Local/Makefile or (better) +rebuild your DBM data files. The default for FreeBSD has been changed to +USE_DB=yes, since FreeBSD comes with Berkeley DB. However, using the native DB +interface means that the data files no longer have the ".db" extension. + + + +******* IMPORTANT FOR Tru64 (aka Digital Unix aka DEC-OSF1) USERS ******* + +The default compiler may not recognize ANSI C by default. You may have to set + +CC=cc +CFLAGS=-std1 + +in Local/Makefile in order to compile Exim. A user reported another small +problem with this operating system: In the file /usr/include/net/if.h a +semicolon was missing at the end of line 143. + + + +******* IMPORTANT FOR SCO USERS ******* + +The building scripts assume the existence of the "ar" command, which is part of +the Development System. However, it is also possible to use the "gar" command +that is part of the GNU utilities that are distributed with the 5.0.7 release. +If you have "gar" and not "ar" you should include + +AR=gar + +in your Local/Makefile. + + + +******* 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 ******* + +There are problems with some versions of gcc on IRIX, as a result of which all +DNS lookups yield either 0.0.0.0 or 255.255.255.255. Releases of gcc after +2.7.2.3 (which works ok) are affected. Specifically, 2.8.* is affected, as are +the 2.95 series. From release 3.21 of Exim, a workaround for this problem +should automatically be enabled when Exim is compiled on IRIX using gcc. + +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." + +It seems that this code doesn't work on at least some earlier versions of IRIX +(e.g. IRIX 5.3). If you can't compile under IRIX and the problem appears to +relate to sysctl(), try commenting or #ifdef-ing out all the code in the +file OS/os.c-IRIX. + + +******* IMPORTANT FOR HP-UX USERS ******* + +There are two different sets of configuration files for HP-UX. Those ending in +HP-UX-9 are used for HP-UX version 9, and have been tested on HP-UX version +9.05. Those ending in HP-UX are for later releases, and have been tested on +HP-UX version 11.00. If you are using a version of HP-UX between 9.05 and +11.00, you may need to edit the file OS/os.h-HP-UX if you encounter problems +building Exim. + +If you want to use the Sieve facility in Exim, the alias iso-8859-1 should be +added to the alias definition for iso81 in /usr/lib/nls/iconv/config.iconv. You +also need to add a new alias definition: "alias utf8 utf-8". + + +******* 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 makefile" 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". + + +******* IMPORTANT FOR GNU/HURD USERS ******* + +GNU/Hurd doesn't (at the time of writing, June 1999) have the ioctls for +finding out the IP addresses of the local interfaces. You therefore have to set +local_interfaces yourself. Otherwise it will treat only 127.0.0.1 as local. + +Philip Hazel |