Commit | Line | Data |
---|---|---|
48a53b7f | 1 | $Cambridge: exim/src/README,v 1.3 2005/08/30 10:07:58 ph10 Exp $ |
0f4f2a88 PH |
2 | |
3 | THE EXIM MAIL TRANSFER AGENT VERSION 4 | |
4 | -------------------------------------- | |
5 | ||
c988f1f4 | 6 | Copyright (c) 1995 - 2005 University of Cambridge. |
0f4f2a88 PH |
7 | See the file NOTICE for conditions of use and distribution. |
8 | ||
9 | There is a book about Exim by Philip Hazel called "The Exim SMTP Mail Server", | |
10 | published by UIT Cambridge in May 2003. This is the official guide for Exim 4. | |
11 | The current edition covers release 4.10 and a few later extensions. | |
12 | ||
13 | The O'Reilly book about Exim ("Exim The Mail Transfer Agent" by Philip Hazel) | |
14 | covers Exim 3, which is now deprecated. Exim 4 has a large number of changes | |
15 | from Exim 3, though the basic structure and philosophy remains the same. The | |
16 | older book may be helpful for the background, but a lot of the detail has | |
17 | changed, so it is likely to be confusing to newcomers. | |
18 | ||
19 | There is a web site at http://www.exim.org; this contains details of the | |
20 | mailing list exim-users@exim.org. | |
21 | ||
22 | A copy of the Exim FAQ should be available from the same source that you used | |
23 | to obtain the Exim distribution. Additional formats for the documentation | |
24 | (PostScript, PDF, Texinfo, and HTML) should also be available there. | |
25 | ||
26 | ||
27 | EXIM DISTRIBUTION | |
28 | ----------------- | |
29 | ||
30 | Unpacking the tar file should produce a single directory called exim-<version>, | |
31 | containing the following files and directories: | |
32 | ||
33 | ACKNOWLEDGMENTS some acknowledgments | |
34 | CHANGES a conventional file name; it indirects to some files in doc/ | |
35 | LICENCE the GNU General Public Licence | |
36 | Local/ an empty directory for local configuration files | |
37 | Makefile top level Makefile | |
38 | NOTICE notice about conditions of use | |
39 | OS/ directory containing OS-specific files | |
40 | README this file | |
41 | README.UPDATING special notes about updating from previous versions | |
42 | doc/ directory of documentation files | |
43 | exim_monitor/ directory of source files for the Exim monitor | |
44 | scripts/ directory of scripts used in the build process | |
45 | src/ directory of source files | |
46 | util/ directory of independent utilities | |
47 | ||
48 | Please see the documentation files for full instructions on how to build, | |
49 | install, and run Exim. For straightforward installations on operating systems | |
50 | to which Exim has already been ported, the building process is as follows: | |
51 | ||
52 | . Ensure that the top-level Exim directory (e.g. exim-4.40) is the current | |
53 | directory (containing the files and directories listed above). | |
54 | ||
55 | . Edit the file called src/EDITME and put the result in a new file called | |
56 | Local/Makefile. There are comments in src/EDITME telling you what the various | |
57 | parameters are. You must at least provide values for BIN_DIRECTORY, | |
58 | CONFIGURE_FILE, EXIM_USER and EXIM_GROUP (if EXIM_USER is numeric), and it is | |
59 | recommended that SPOOL_DIRECTORY also be defined here if it is a fixed path. | |
60 | ||
61 | . There are a number of additional parameters whose defaults can also be | |
62 | overridden by additions to Local/Makefile. The basic defaults are in | |
63 | OS/Makefile-Default, but these settings are overridden for some operating | |
64 | systems by values on OS/Makefile-<osname>. The most commonly-required change | |
65 | is probably the setting of CC, which defines the command to run the C | |
66 | compiler, and which defaults to gcc. To change it to cc, add the following | |
67 | line to Local/Makefile: | |
68 | ||
69 | CC=cc | |
70 | ||
71 | If you are running the Berkeley DB package as your dbm library, then it is | |
72 | worth putting USE_DB=yes in Local/Makefile, to get Exim to use the native | |
73 | interface. This is the default for some operating systems. See | |
74 | doc/dbm.discuss.txt for discussion on dbm libraries. | |
75 | ||
76 | . If you want to compile the Exim monitor, edit the file called | |
77 | exim_monitor/EDITME and put the result in a file called Local/eximon.conf. | |
78 | If you are not going to compile the Exim monitor, you should have commented | |
79 | out the line starting EXIM_MONITOR= when creating Local/Makefile. There are | |
80 | comments in exim_monitor/EDITME about the values set therein, but in this | |
81 | case everything can be defaulted if you wish. | |
82 | ||
83 | . Type "make". This will determine what your machine's architecture and | |
84 | operating system are, and create a build directory from those names (e.g. | |
85 | "build-SunOS5-sparc"). Symbolic links are created from the build directory | |
86 | to the source directory. A configured make file called <build-dir>/makefile | |
87 | is then created, and "make" then goes on to use this to build various | |
88 | binaries and scripts inside the build directory. | |
89 | ||
90 | . Type "make install", while running as root, to install the binaries, | |
91 | scripts, and a default configuration file. To see what this command is | |
92 | going to do before risking it, run "../scripts/exim_install -n" (not as | |
93 | root) from within the build directory. | |
94 | ||
95 | . When you are ready to try running Exim, see the section entitled "Testing" | |
96 | in the chapter called "Building and Installing Exim" in doc/spec.txt, or in | |
97 | one of the other forms of the documentation. | |
98 | ||
99 | . Running the install script does NOT replace /usr/sbin/sendmail or | |
100 | /usr/lib/sendmail with a link to Exim. That step you must perform by hand | |
101 | when you are satisfied that Exim is running correctly. | |
102 | ||
103 | . Note that the default configuration refers to an alias file called | |
104 | /etc/aliases. It used to be the case that every Unix had that file, because | |
105 | it was the Sendmail default. These days, there are systems that don't have | |
106 | /etc/aliases, so you might need to set it up. Your aliases should at least | |
107 | include an alias for "postmaster". | |
108 | ||
109 | . Consider notifying users of the change of MTA. Exim has different | |
110 | capabilities, and there are various operational differences, such as stricter | |
111 | adherence to the RFCs than some MTAs, and differences in the text of | |
112 | messages produced by various command-line options. | |
113 | ||
114 | . The default configuration file will use your host's fully qualified name (as | |
115 | obtained from the uname() function) as the only local mail domain and as the | |
116 | domain which is used to qualify unqualified local mail addresses. See the | |
117 | comments in the default configuration file if you want to change these. | |
118 | ||
119 | The operating systems currently supported are: AIX, BSD/OS (aka BSDI), Darwin | |
120 | (Mac OS X), DGUX, FreeBSD, GNU/Hurd, GNU/Linux, HI-OSF (Hitachi), HP-UX, IRIX, | |
121 | MIPS RISCOS, NetBSD, OpenBSD, QNX, SCO, SCO SVR4.2 (aka UNIX-SV), Solaris (aka | |
122 | SunOS5), SunOS4, Tru64-Unix (formerly Digital Unix, formerly DEC-OSF1), Ultrix, | |
123 | and Unixware. However, code is not available for determining system load | |
124 | averages on Ultrix. There are also configuration files for compiling Exim in | |
125 | the Cygwin environment that can be installed on systems running Windows. | |
126 | However, the documentation supplied with the distribution does not contain any | |
127 | information about running Exim in the Cygwin environment. | |
128 | ||
129 | ||
130 | ******* Modifying the building process ****** | |
131 | ||
132 | Instructions for overriding the build-time options for Exim are given in the | |
133 | manual. You should never have to modify any of the supplied files; it should be | |
134 | possible to override everything that is necessary by creating suitable files in | |
135 | the Local directory. This means that you won't need to redo your modifications | |
136 | for the next release of Exim. If you find you can't avoid changing some other | |
137 | file, let me know and I'll see if I can find a way of making that unnecessary. | |
138 | ||
139 | Briefly, the building process concatenates a number of files in order to | |
140 | construct its working makefile. If <ostype> and <archtype> are the operating | |
141 | system and architecture types respectively, the files used are: | |
142 | ||
143 | OS/Makefile-Default | |
144 | OS/Makefile-<ostype> | |
145 | Local/Makefile | |
146 | Local/Makefile-<ostype> | |
147 | Local/Makefile-<archtype> | |
148 | Local/Makefile-<ostype>-<archtype> | |
149 | OS/Makefile-Base | |
150 | ||
151 | Of the Local/* files, only Local/Makefile is required to exist; the rest are | |
152 | optional. Because of the way "make" works, values set in later files override | |
153 | values set in earlier ones. Thus you can set up general options that are | |
154 | overridden for specify operating systems and/or architectures if you wish. | |
155 | ||
156 | ||
157 | ******* IMPORTANT FOR GNU/LINUX USERS ******* | |
158 | ||
159 | Exim 4 won't work with some versions of Linux if you put its spool directory on | |
160 | an NFS partition. You get an error about "directory sync failed". This is | |
161 | because of a bug in Linux NFS. A fix has been promised in due course. It is in | |
162 | any case much better to put Exim's spool directory on local disc. | |
163 | ||
164 | If you get an error complaining about the lack of functions such as dbm_open() | |
165 | when building Exim, the problem is that it hasn't been able to find a DBM | |
166 | library. See the file doc/dbm.discuss.txt for a discussion about the various | |
167 | DBM libraries. | |
168 | ||
169 | Different versions of Linux come with different DBM libraries, stored in | |
170 | different places. As well as setting USE_DB=yes in Local/Makefile if Berkeley | |
171 | DB is in use, it may also be necessary to set a value in DBMLIB to specify the | |
172 | inclusion of the DBM library, for example: DBMLIB=-ldb or DBMLIB=-lgdbm. | |
173 | ||
174 | If you are using RedHat 7.0, which has DB3 as its DBM library, you need to | |
175 | install the db-devel package before building Exim. This will have a name like | |
176 | db3-devel-3.1.14-16.i386.rpm (but check which release of DB3 you have). | |
177 | ||
178 | The building scripts now distinguish between versions of Linux with the older | |
179 | libc5 and the more recent ones that use libc6. In the latter case, USE_DB and | |
180 | -ldb are the default settings, because DB is standard with libc6. | |
181 | ||
182 | It appears that with glibc-2.1.x (a minor libc upgrade), they have standardised | |
183 | on Berkeley DB2 (instead of DB1 in glibc-2.0.x). If you want to get DB1 back, | |
184 | you need to set | |
185 | ||
186 | INCLUDE=-I/usr/include/db1 | |
187 | DBMLIB=-ldb1 | |
188 | ||
189 | in your Local/Makefile. If you omit DBMLIB=-ldb1 Exim will link successfully | |
190 | using the DB1 compatibility interface to DB2, but it will expect the file | |
191 | format to be that of DB2, and so will not be able to read existing DB1 files. | |
192 | ||
193 | ||
194 | ******* IMPORTANT FOR FREEBSD USERS ******* | |
195 | ||
196 | On FreeBSD there is a file called /etc/mail/mailer.conf which selects what to | |
197 | run for various MTA calls. Instead of changing /usr/sbin/sendmail, you should | |
198 | edit this file instead, to read something like this: | |
199 | ||
200 | sendmail /usr/exim/bin/exim | |
201 | send-mail /usr/exim/bin/exim | |
202 | mailq /usr/exim/bin/exim -bp | |
203 | newaliases /usr/bin/true | |
204 | ||
205 | You will most probably need to add the line: | |
206 | ||
207 | daily_status_include_submit_mailq="NO" # No separate 'submit' queue | |
208 | ||
209 | to /etc/periodic.conf. This stops FreeBSD running the command "mailq -Ac" | |
210 | (which Exim doesn't understand) to list a separate submit queue (which Exim | |
211 | doesn't have). | |
212 | ||
213 | If you are using FreeBSD prior to 3.0-RELEASE, and you are not using the ports | |
214 | mechanism to install Exim, then you should install the perl5 package | |
215 | (/usr/local/bin/perl) and use that instead of perl in the base system, which is | |
216 | perl4 up until 3.0-RELEASE. If you are using the ports mechanism, this is | |
217 | handled for you. | |
218 | ||
219 | If you are upgrading from version 2.11 of Exim or earlier, and you are using | |
220 | DBM files, and you did not previously have USE_DB=yes in your Local/Makefile, | |
221 | then you will either have to put USE_DB=no in your Local/Makefile or (better) | |
222 | rebuild your DBM data files. The default for FreeBSD has been changed to | |
223 | USE_DB=yes, since FreeBSD comes with Berkeley DB. However, using the native DB | |
224 | interface means that the data files no longer have the ".db" extension. | |
225 | ||
226 | ||
227 | ||
228 | ******* IMPORTANT FOR Tru64 (aka Digital Unix aka DEC-OSF1) USERS ******* | |
229 | ||
230 | The default compiler may not recognize ANSI C by default. You may have to set | |
231 | ||
232 | CC=cc | |
233 | CFLAGS=-std1 | |
234 | ||
235 | in Local/Makefile in order to compile Exim. A user reported another small | |
236 | problem with this operating system: In the file /usr/include/net/if.h a | |
237 | semicolon was missing at the end of line 143. | |
238 | ||
239 | ||
240 | ||
241 | ******* IMPORTANT FOR SCO USERS ******* | |
242 | ||
243 | The building scripts assume the existence of the "ar" command, which is part of | |
244 | the Development System. However, it is also possible to use the "gar" command | |
245 | that is part of the GNU utilities that are distributed with the 5.0.7 release. | |
246 | If you have "gar" and not "ar" you should include | |
247 | ||
248 | AR=gar | |
249 | ||
250 | in your Local/Makefile. | |
251 | ||
252 | ||
253 | ||
254 | ******* IMPORTANT FOR Unixware 2.x USERS ******* | |
255 | ||
256 | Unixware does not include db/dbm/ndbm with its standard compiler (it is | |
257 | available with /usr/ucb/cc, but that has bugs of its own). You should install | |
258 | gcc and Berkeley DB (or another dbm library if you really insist). If you use a | |
259 | different dbm library you will need to override the default setting of DBMLIB. | |
260 | ||
261 | DB 1.85 and 2.x can be found at http://www.sleepycat.com/. They have different | |
262 | characteristics. See the discussion of dbm libraries in doc/dbm.discuss.txt. DB | |
263 | needs to be compiled with gcc and you need a 'cc' in your path before the | |
264 | Unixware CC to compile it. | |
265 | ||
266 | Don't bother even starting to install exim on Unixware unless you have | |
267 | installed gcc and use it for everything. | |
268 | ||
269 | ||
270 | ******* IMPORTANT FOR SOLARIS 2.3 (SUNOS 5.3) USERS ******* | |
271 | ||
272 | The file /usr/include/sysexits.h does not exist on Solaris 2.3 (and presumably | |
273 | earlier versions), though it is present in 2.4 and later versions. To compile | |
274 | Exim on Solaris 2.3 it is necessary to include the line | |
275 | ||
276 | CFLAGS=-O -DNO_SYSEXITS -DEX_TEMPFAIL=75 | |
277 | ||
278 | in your Local/Makefile. | |
279 | ||
280 | ||
281 | ******* IMPORTANT FOR IRIX USERS ******* | |
282 | ||
283 | There are problems with some versions of gcc on IRIX, as a result of which all | |
284 | DNS lookups yield either 0.0.0.0 or 255.255.255.255. Releases of gcc after | |
285 | 2.7.2.3 (which works ok) are affected. Specifically, 2.8.* is affected, as are | |
286 | the 2.95 series. From release 3.21 of Exim, a workaround for this problem | |
287 | should automatically be enabled when Exim is compiled on IRIX using gcc. | |
288 | ||
289 | As from version 2.03 there is IRIX-specific code in Exim to obtain a list of | |
290 | all the IP addresses on local interfaces, including alias addresses, because | |
291 | the standard code gives only non-alias addresses in IRIX. The code came from | |
292 | SGI, with the comment: | |
293 | ||
294 | "On 6.2 you need the libc patch to get the sysctl() stub and the networking | |
295 | kernel patch to get the support." | |
296 | ||
297 | It seems that this code doesn't work on at least some earlier versions of IRIX | |
298 | (e.g. IRIX 5.3). If you can't compile under IRIX and the problem appears to | |
299 | relate to sysctl(), try commenting or #ifdef-ing out all the code in the | |
300 | file OS/os.c-IRIX. | |
301 | ||
302 | ||
303 | ******* IMPORTANT FOR HP-UX USERS ******* | |
304 | ||
305 | There are two different sets of configuration files for HP-UX. Those ending in | |
306 | HP-UX-9 are used for HP-UX version 9, and have been tested on HP-UX version | |
307 | 9.05. Those ending in HP-UX are for later releases, and have been tested on | |
308 | HP-UX version 11.00. If you are using a version of HP-UX between 9.05 and | |
309 | 11.00, you may need to edit the file OS/os.h-HP-UX if you encounter problems | |
310 | building Exim. | |
311 | ||
312 | If you want to use the Sieve facility in Exim, the alias iso-8859-1 should be | |
313 | added to the alias definition for iso81 in /usr/lib/nls/iconv/config.iconv. You | |
314 | also need to add a new alias definition: "alias utf8 utf-8". | |
315 | ||
316 | ||
317 | ******* IMPORTANT FOR QNX USERS ******* | |
318 | ||
319 | 1. Exim makes some assumptions about the shell in the makefiles. The "normal" | |
320 | QNX shell (ksh) will not work. You need to install "bash", which can be | |
321 | obtained from the QNX freeware on QUICS. Install it to /usr/local/bin/bash | |
322 | Then you need to change the SHELL definition at the top of the main Makefile | |
323 | to SHELL=/usr/local/bin/bash. The file OS/Makefile-QNX sets the variable | |
324 | MAKE_SHELL to /usr/local/bin/bash. If you install bash in a different place, | |
325 | you will need to set MAKE_SHELL in your Local/Makefile in order to override | |
326 | this. | |
327 | ||
328 | 2. For some strange reason make will fail at building "exim_dbmbuild" when | |
329 | called the first time. However simply calling make a second time will solve | |
330 | the problem. Alternatively, run "make makfile" and then "make". | |
331 | ||
332 | ||
333 | ******* IMPORTANT FOR ULTRIX USERS ******* | |
334 | ||
335 | You need to set SHELL explicitly in the make call when building on ULTRIX, | |
336 | that is, type "make SHELL=sh5". | |
337 | ||
338 | ||
339 | ******* IMPORTANT FOR GNU/HURD USERS ******* | |
340 | ||
341 | GNU/Hurd doesn't (at the time of writing, June 1999) have the ioctls for | |
342 | finding out the IP addresses of the local interfaces. You therefore have to set | |
343 | local_interfaces yourself. Otherwise it will treat only 127.0.0.1 as local. | |
344 | ||
48a53b7f | 345 | Philip Hazel |