xref: /original-bsd/usr.sbin/sendmail/src/READ_ME (revision 95ecee29)
1# Copyright (c) 1983 Eric P. Allman
2# Copyright (c) 1988 The Regents of the University of California.
3# All rights reserved.
4#
5# %sccs.include.redist.sh%
6#
7#	@(#)READ_ME	8.34 (Berkeley) 12/11/93
8#
9
10This directory contains the source files for sendmail.
11
12For detailed instructions, please read the document ../doc/op.me:
13
14	eqn ../doc/op.me | pic | ditroff -me
15
16The Makefile is for the new (4.4BSD) Berkeley make, available from
17ftp.uu.net in the directory /systems/unix/bsd-sources/usr.bin/make.
18(Paul Southworth <pauls@umich.edu> published a description of porting
19this make in comp.unix.bsd.)  This Makefile has assumptions about the
204.4 file system layout built in.
21
22There is also a Makefile.dist which is much less clever, but works on
23the old traditional make.  You can use this using:
24
25	make -f Makefile.dist
26
27There are a bunch of other Makefiles for other systems -- these are
28the ones that I use, they have "Berkeley quirks" in them, and I don't
29guarantee that they will work unmodified in your environment.  However,
30they are all designed for the old make and can be used to help you get
31started.  They have names like "Makefile.HPUX".  Many of them include
32-I/usr/sww/include/db and -L/usr/sww/lib -- this is Berkeley's
33location for the new database libraries, described below.  You don't
34have to remove these definitions if you don't have these directories.
35
36There is also a shell script (makesendmail) that tries to be clever
37about using object subdirectories.  It's pretty straightforward, and
38may help if you share a source tree among different architectures.
39
40**************************************************************************
41**  IMPORTANT:  DO NOT USE OPTIMIZATION (``-O'') IF YOU ARE RUNNING	**
42**  GCC 2.4.x or 2.5.x.  THERE IS A BUG IN THE GCC OPTIMIZER THAT	**
43**  CAUSES SENDMAIL COMPILES TO FAIL MISERABLY.				**
44**************************************************************************
45
46Jim Wilson of Cygnus believes he has found the problem -- it will
47probably be fixed in GCC 2.5.6 -- but until this is verified, be
48very suspicious of gcc -O.
49
50**************************************************************************
51**  IMPORTANT:  Read the appropriate paragraphs in the section on	**
52**  ``Operating System and Compile Quirks''.				**
53**************************************************************************
54
55
56+----------------------+
57| DATABASE DEFINITIONS |
58+----------------------+
59
60There are several database formats that can be used for the alias files
61and for general maps.  When used for alias files they interact in an
62attempt to be back compatible.
63
64The three options are NEWDB (the new Berkeley DB package), NDBM (the
65older DBM implementation -- the very old V7 implementation is no
66longer supported), and NIS (Network Information Services).  Used alone
67these just include the support they indicate.  [If you are using NEWDB,
68get the latest version from FTP.CS.Berkeley.EDU in /ucb/4bsd.  DO NOT
69use the version from the Net2 distribution!  However, if you are on
70BSD/386 or 386BSD-based systems, use the one that already exists
71on your system.  You may need to define OLD_NEWDB to do this.]
72
73If NEWDB and NDBM are defined (but not NIS), then sendmail will read
74NDBM format alias files, but the next time a newaliases is run the
75format will be converted to NEWDB; that format will be used forever
76more.  This is intended as a transition feature.  [Note however that
77the NEWDB library also catches and maps NDBM calls; you will have to
78back out this feature to get this to work.  See ``Quirks'' section
79below for details.]
80
81If all three are defined, sendmail operates as described above, and also
82looks for the file /var/yp/Makefile.  If it exists, newaliases will
83build BOTH the NEWDB and NDBM format alias files.  However, it will
84only use the NEWDB file; the NDBM format file is used only by the
85NIS subsystem.
86
87If NDBM and NIS are defined (regardless of the definition of NEWDB
88or the existance of /var/yp/Makefile), sendmail adds the special
89tokens "YP_LAST_MODIFIED" and "YP_MASTER_NAME", both of which are
90required if the NDBM file is to be used as an NIS map.
91
92All of -DNEWDB, -DNDBM, and -DNIS are normally defined in the DBMDEF
93line in the Makefile.
94
95
96+---------------+
97| COMPILE FLAGS |
98+---------------+
99
100Whereever possible, I try to make sendmail pull in the correct
101compilation options needed to compile on various environments based on
102automatically defined symbols.  Some machines don't seem to have useful
103symbols availble, requiring the following compilation flags in the
104Makefile:
105
106SOLARIS		Define this if you are running Solaris 2.0 or higher.
107SOLARIS_2_3	Define this if you are running Solaris 2.3 or higher.
108NeXT		Define this if you are on a NeXT box.  (This one may
109		be pre-defined for you.)  There are other hacks you
110		have to make -- see below.
111_AIX3		Define this if you are IBM AIX 3.x.
112RISCOS		Define this if you are running RISC/os from MIPS.
113_SCO_unix_	Define this if you are on SCO UNIX.
114_SCO_unix_4_2	Define this if you are on SCO Open Server 3.2v4.
115
116If you are a system that sendmail has already been ported to, you
117probably won't have to touch these.  But if you are porting, you may
118have to tweak the following compilation flags in conf.h in order to
119get it to compile and link properly:
120
121SYSTEM5		Adjust for System V.
122SYS5SIGNALS	Use System V signal semantics -- the signal handler
123		is automatically dropped when the signal is caught.
124		If this is not set, use POSIX/BSD semantics, where the
125		signal handler stays in force until an exec or an
126		explicit delete.  Implied by SYSTEM5.
127SYS5SETPGRP	Use System V setpgrp() semantics.  Implied by SYSTEM5.
128HASFLOCK	Set this if you prefer to use the flock(2) system call
129		rather than using fcntl-based locking.  Fcntl locking
130		has some semantic gotchas, but many vendor systems
131		also interface it to lockd(8) to do NFS-style locking.
132		For this reason, this should not be set unless you
133		don't have an alternative.
134HASUNAME	Set if you have the "uname" system call.  Implied by
135		SYSTEM5.
136HASUNSETENV	Define this if your system library has the "unsetenv"
137		subroutine.
138HASSTATFS	Define this if you have the statfs(2) system call.  It's
139		not a disaster to get this wrong -- but you do lose the
140		queue free space code.
141HASUSTAT	Define this if you have the ustat(2) system call.  It's
142		not a disaster to get this wrong -- but you do lose the
143		queue free space code.
144HASSETSID	Define this if you have the setsid(2) system call.  This
145		is implied if your system appears to be POSIX compliant.
146HASINITGROUPS	Define this if you have the initgroups(3) routine.
147HASSETVBUF	Define this if you have the setvbuf(3) library call.
148		If you don't, setlinebuf will be used instead.  This
149		defaults on if your compiler defines __STDC__.
150HASSETREUID	Define this if you have setreuid(2) ***AND*** root can
151		use setreuid to change to an arbitrary user.  This second
152		condition is not satisfied on AIX 3.x.  You may find that
153		your system has setresuid(2), (for example, on HP-UX) in
154		which case you will also have to #define setreuid(r, e)
155		to be the appropriate call.  Some systems (such as Solaris)
156		have a compatibility routine that doesn't work properly,
157		but may have "saved user ids" properly implemented so you
158		can ``#define setreuid(r, e) seteuid(e)'' and have it work.
159		The important thing is that you have a call that will set
160		the effective uid independently of the real or saved uid
161		and be able to set the effective uid back again when done.
162		There's a test program in ../test/t_setreuid.c that will
163		try things on your system.  Setting this improves the
164		security, since sendmail doesn't have to read .forward
165		and :include: files as root.  There are certain attacks
166		that may be unpreventable without this call.
167HASLSTAT	Define this if you have symbolic links (and thus the
168		lstat(2) system call).  This improves security.  Unlike
169		most other options, this one is on by default, so you
170		need to #undef it in conf.h if you don't have symbolic
171		links (these days everyone does).
172GIDSET_T	The type of entries in a gidset passed as the second
173		argument to getgroups(2).  Historically this has been an
174		int, so this is the default, but some systems (such as
175		IRIX) pass it as a gid_t, which is an unsigned short.
176		This will make a difference, so it is important to get
177		this right!  However, it is only an issue if you have
178		group sets.
179SLEEP_T		The type returned by the system sleep() function.
180		Defaults to "unsigned int".  Don't worry about this
181		if you don't have compilation problems.
182ARBPTR_T	The type of an arbitrary pointer -- defaults to "void *".
183		If you are an very old compiler you may need to define
184		this to be "char *".
185LA_TYPE		The type of load average your kernel supports.  These
186		can be LA_SUBR (4) if you have the getloadavg(3) routine,
187		LA_MACH (5) to use MACH-style load averages (calls
188		processor_set_info()), LA_FLOAT (3) if you read kmem and
189		interpret the value as a floating point number, LA_INT (2)
190		to interpret as a long integer, or LA_SHORT (6) to
191		interpret as a short integer.  These last three have
192		several other parameters that they try to divine: the
193		name of your kernel, the name of the variable in the
194		kernel to examine, the number of bits of precision in
195		a fixed point load average, and so forth.  In desparation,
196		use LA_ZERO (1) -- it always returns the load average as
197		"zero" (and does so on all architectures).  The actual
198		code is in conf.c -- it can be tweaked if you are brave.
199ERRLIST_PREDEFINED
200		If set, assumes that some header file defines sys_errlist.
201		This may be needed if you get type conflicts on this
202		variable -- otherwise don't worry about it.
203WAITUNION	The wait(2) routine takes a "union wait" argument instead
204		of an integer argument.  This is for compatibility with
205		old versions of BSD.
206SCANF		You can set this to extend the F command to accept a
207		scanf string -- this gives you a primitive parser for
208		class definitions -- BUT it can make you vulnerable to
209		core dumps if the target file is poorly formed.
210SYSLOG_BUFSIZE	You can define this to be the size of the buffer that
211		syslog accepts.  If it is not defined, it assumes a
212		1024-byte buffer.  If the buffer is very small (under
213		256 bytes) the log message format changes -- each
214		e-mail message will log many more messages, since it
215		will log each piece of information as a separate line
216		in syslog.
217
218
219+-----------------------+
220| COMPILE-TIME FEATURES |
221+-----------------------+
222
223There are a bunch of features that you can decide to compile in, such
224as selecting various database packages and special protocol support.
225Several are assumed based on other compilation flags -- if you want to
226"un-assume" something, you probably need to edit conf.h.  Compilation
227flags that add support for special features include:
228
229NDBM		Include support for "new" DBM library for aliases and maps.
230		Normally defined in the Makefile.
231NEWDB		Include support for Berkeley "db" package (hash & btree)
232		for aliases and maps.  Normally defined in the Makefile.
233NIS		Define this to get NIS (YP) support for aliases and maps.
234		Normally defined in the Makefile.
235USERDB		Include support for the User Information Database.  Implied
236		by NEWDB in conf.h.
237IDENTPROTO	Define this as 1 to get IDENT (RFC 1413) protocol support.
238		This is assumed unless you are running on Ultrix or
239		HP-UX, both of which have a problem in the UDP
240		implementation.  You can define it to be 0 to explicitly
241		turn off IDENT protocol support.
242MIME		Include support for MIME-encapsulated error messages.
243LOG		Set this to get syslog(3) support.  Defined by default
244		in conf.h.  You want this if at all possible.
245NETINET		Set this to get TCP/IP support.  Defined by default
246		in conf.h.  You probably want this.
247NETISO		Define this to get ISO networking support.
248SMTP		Define this to get the SMTP code.  Implied by NETINET
249		or NETISO.
250NAMED_BIND	Define this to get DNS (name daemon) support, including
251		MX support.  The specs you must use this if you run
252		SMTP.  Defined by default in conf.h.
253QUEUE		Define this to get queueing code.  Implied by NETINET
254		or NETISO; required by SMTP.  This gives you other good
255		stuff -- it should be on.
256DAEMON		Define this to get general network support.  Implied by
257		NETINET or NETISO.  Defined by default in conf.h.  You
258		almost certainly want it on.
259MATCHGECOS	Permit fuzzy matching of user names against the full
260		name (GECOS) field in the /etc/passwd file.  This should
261		probably be on, since you can disable it from the config
262		file if you want to.  Defined by default in conf.h.
263SETPROCTITLE	Try to set the string printed by "ps" to something
264		informative about what sendmail is doing.  Defined by
265		default in conf.h.
266
267
268+---------------------+
269| DNS/RESOLVER ISSUES |
270+---------------------+
271
272Many systems have old versions of the resolver library.  At a minimum,
273you should be running BIND 4.8.3; older versions may compile, but they
274have known bugs that should give you pause.
275
276Common problems in old versions include "undefined" errors for
277dn_skipname.
278
279Some people have had a problem with BIND 4.9; it uses some routines
280that it expects to be externally defined such as strerror().  It may
281help to link with "-l44bsd" to solve this problem.
282
283!PLEASE! be sure to link with the same version of the resolver as
284the header files you used -- some people have used the 4.9 headers
285and linked with BIND 4.8 or vice versa, and it doesn't work.
286Unfortunately, it doesn't fail in an obvious way -- things just
287subtlely don't work.
288
289
290+-------------------------------------+
291| OPERATING SYSTEM AND COMPILE QUIRKS |
292+-------------------------------------+
293
294GCC 2.5.x problems  *** IMPORTANT ***
295	Date: Mon, 29 Nov 93 19:08:44 PST
296	From: wilson@cygnus.com (Jim Wilson)
297	Message-Id: <9311300308.AA04608@cygnus.com>
298	To: kenner@vlsi1.ultra.nyu.edu
299	Subject: [cattelan@thebarn.com: gcc 2.5.4-2.5.5 -O bug]
300	Cc: cattelan@thebarn.com, rms@gnu.ai.mit.edu, sendmail@cs.berkeley.edu
301
302	This fixes a problem that occurs when gcc 2.5.5 is used to compile
303	sendmail 8.6.4 with optimization on a sparc.
304
305	Mon Nov 29 19:00:14 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
306
307		* reload.c (find_reloads_toplev): Replace obsolete reference to
308		BYTE_LOADS_*_EXTEND with LOAD_EXTEND_OP.
309
310	*** clean-ss-931128/reload.c    Sun Nov 14 16:20:01 1993
311	--- ss-931128/reload.c  Mon Nov 29 18:52:55 1993
312	*************** find_reloads_toplev (x, opnum, type, ind
313	*** 3888,3894 ****
314		 force a reload in that case.  So we should not do anything here.  */
315
316		else if (regno >= FIRST_PSEUDO_REGISTER
317	! #if defined(BYTE_LOADS_ZERO_EXTEND) || defined(BYTE_LOADS_SIGN_EXTEND)
318		       && (GET_MODE_SIZE (GET_MODE (x))
319			   <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
320	  #endif
321	--- 3888,3894 ----
322		 force a reload in that case.  So we should not do anything here.  */
323
324		else if (regno >= FIRST_PSEUDO_REGISTER
325	! #ifdef LOAD_EXTEND_OP
326		       && (GET_MODE_SIZE (GET_MODE (x))
327			   <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
328	  #endif
329
330
331SunOS 4.x (Solaris 1.x)
332	You may have to use -lresolv on SunOS.  However, beware that
333	this links in a new version of gethostbyname that does not
334	understand NIS, so you must have all of your hosts in DNS.
335
336	Some people have reported problems with the SunOS version of
337	-lresolv and/or in.named, and suggest that you get a newer
338	version.  The symptoms are delays when you connect to the
339	SMTP server on a SunOS machine or having your domain added to
340	addresses inappropriately.  There is a version of BIND
341	version 4.9 on gatekeeper.DEC.COM in pub/BSD/bind/4.9.
342
343	There is substantial disagreement about whether you can make
344	this work with resolv+, which allows you to specify a search-path
345	of services.  Some people report that it works fine, others
346	claim it doesn't work at all (including causing sendmail to
347	drop core when it tries to do multiple resolv+ lookups for a
348	single job).  I haven't tried resolv+, as we use DNS exclusively.
349
350	Should you want to try resolv+, it is on ftp.uu.net in
351	/networking/ip/dns.
352
353Solaris 2.x (SunOS 5.x)
354	To compile for Solaris, be sure you use -DSOLARIS.
355
356	From a correspondent:
357
358	   For solaris 2.2, I have
359
360		hosts:      files dns
361
362	   in /etc/nsswitch.conf and /etc/hosts has to have the fully
363	   qualified host name. I think "files" has to be before "dns"
364	   in /etc/nsswitch.conf during bootup.
365
366	To the best of my knowledge, Solaris does not have the
367	gethostbyname problem described above.
368
369	The Solaris "syslog" function is apparently limited to something
370	about 90 characters because of a kernel limitation.  If you have
371	source code, you can probably up this number.  The syslogd patch
372	is included in kernel jumbo patch for Solaris 2.2 as of revision
373	-39 or so.  At least one person is running with patch 100999-45
374	and their long lost sendmail logging is finally showing up.
375
376OSF/1
377	If you are compiling on OSF/1 (DEC Alpha), you must use
378	-non_shared (otherwise it core dumps on startup).  You may also
379	need -mld to get the nlist() function, although some versions
380	apparently don't need this.
381
382	Also, the enclosed makefile removed /usr/sbin/smtpd; if you need
383	it, just create the link to the sendmail binary.
384
385NeXT
386	If you are compiling on NeXT, you will have to create an empty
387	file "unistd.h" and create a file "dirent.h" containing:
388
389		#include <sys/dir.h>
390		#define dirent	direct
391
392	(The Makefile.NeXT should try to do both of these for you.)
393
394	Apparently, there is a bug in getservbyname on Nextstep 3.0
395	that causes it to fail under some circumstances with the
396	message "SYSERR: service "smtp" unknown" logged.  You should
397	be able to work around this by including the line:
398
399		OOPort=25
400
401	in your .cf file.
402
403	You may have to use -DNeXT.
404
405BSDI (BSD/386) 1.0, NetBSD 0.9, FreeBSD 1.0
406	The "m4" from BSDI won't handle the config files properly.
407	I haven't had a chance to test this myself.
408
409	The M4 shipped in FreeBSD and NetBSD 0.9 don't handle the config
410	files properly. One must use either GNU m4 1.1 or the PD-M4
411	recently posted in comp.os.386bsd.bugs (and maybe others).
412	NetBSD-current includes the PD-M4 (as stated in the NetBSD file
413	CHANGES).
414
415	FreeBSD 1.0 RELEASE has uname(2) now. Use -DUSEUNAME in order to
416	use it (look into Makefile.FreeBSD). NetBSD-current may have
417	it too but it has not been verified.
418
419	You cannot port the latest version of the Berkeley db library
420	and use it with sendmail without recompiling the world.  This
421	is because C library routines use the older version which have
422	incompatible header files -- the result is that it can't read
423	other system files, such as /etc/passwd, unless you use the
424	new db format throughout your system.  You should normally just
425	use the version of db supplied in your release.  You may need
426	to use -DOLD_NEWDB to make this work -- this turns off some
427	new interface calls (for file locking) that are not in older
428	versions of db.  You'll get compile errors if you need this
429	flag and don't have it set.
430
4314.3BSD
432	If you are running a "virgin" version of 4.3BSD, you'll have
433	a very old resolver and be missing some header files.  The
434	header files are simple -- create empty versions and everything
435	will work fine.  For the resolver you should really port a new
436	version (4.8.3 or later) of the resolver; 4.9 is available on
437	gatekeeper.DEC.COM in pub/BSD/bind/4.9.  If you are really
438	determined to continue to use your old, buggy version (or as
439	a shortcut to get sendmail working -- I'm sure you have the
440	best intentions to port a modern version of BIND), you can
441	copy ../contrib/oldbind.compat.c into src and add
442	oldbind.compat.o to OBJADD in the Makefile.
443
444Linux
445	From: Karl London <karl@borg.demon.co.uk>
446	Subject: Little bit to add to a readme for Linux for 8.6
447	Date: Fri, 10 Sep 1993 20:16:05 +0100 (BST)
448
449	Below is a copy of a section of the /usr/include/unistd.h from
450	linux libc-4.4.1 which needs changing because of a bug in the
451	header files. Should be fixed for future releases..
452
453	Karl
454
455	The #if 0 and #endif are new!!
456
457	-------
458
459	   If OPTS begins with `--', then non-option arguments
460	   are treated as arguments to the option '\0'.
461	   This behavior is specific to the GNU `getopt'.  */
462	#if 0
463	extern int getopt __P ((int __argc, char *__const * __argv,
464				__const char *__opts));
465	#endif
466	extern int opterr;
467	extern int optind;
468
469A/UX
470	Date: Tue, 12 Oct 1993 18:28:28 -0400 (EDT)
471	From: "Eric C. Hagberg" <hagberg@med.cornell.edu>
472	Subject: Fix for A/UX ndbm
473
474	I guess this isn't really a sendmail bug, however, it is something
475	that A/UX users should be aware of when compiling sendmail 8.6.
476
477	Apparently, the calls that sendmail is using to the ndbm routines
478	in A/UX 3.0.x contain calls to "broken" routines, in that the
479	aliases database will break when it gets "just a little big"
480	(sorry I don't have exact numbers here, but it broke somewhere
481	around 20-25 aliases for me.), making all aliases non-functional
482	after exceeding this point.
483
484	What I did was to get the gnu-dbm-1.6 package, compile it, and
485	then re-compile sendmail with "-lgdbm", "-DNDBM", and using the
486	ndbm.h header file that comes with the gnu-package. This makes
487	things behave properly.
488
489	I suppose porting the New Berkeley db package is another route,
490	however, I made a quick attempt at it, and found it difficult
491	(not easy at least); the gnu-dbm package "configured" and
492	compiled easily.
493
494DG/UX
495	Apparently, /bin/mail doesn't work properly for delivery on
496	DG/UX -- the person who has this working, Douglas Anderson
497	<dlander@afterlife.ncsc.mil>, used procmail instead.
498
499DELL SVR4
500	Date:      Mon, 06 Dec 1993 10:42:29 EST
501	From: "Kimmo Suominen" <kim@grendel.lut.fi>
502	Message-ID: <2d0352f9.lento29@lento29.UUCP>
503	To: eric@cs.berkeley.edu
504	Cc: sendmail@cs.berkeley.edu, "Kimmo Suominen" <kim@grendel.lut.fi>
505	Subject:   Notes for DELL SVR4
506
507	Eric,
508
509	Here are some notes for compiling Sendmail 8.6.4 on DELL SVR4.  I ran
510	across these things when helping out some people who contacted me by
511	e-mail.
512
513	1) Use gcc 2.4.5 (or later?).  Dell distributes gcc 2.1 with their
514	   Issue 2.2 Unix.  It is too old, and gives you problems with
515	   clock.c, because sigset_t won't get defined in <sys/signal.h>.
516	   This is due to a problematic protection rule in there, and is
517	   fixed with gcc 2.4.5.
518
519	2) If you don't use the new Berkeley DB (-DNEWDB), then you need
520	   to add "-lc -lucb" to the libraries to link with.  This is because
521	   the -ldbm distributed by Dell needs the bcopy, bcmp and bzero
522	   functions.  It is important that you specify both libraries in
523	   the given order to be sure you only get the BSTRING functions
524	   from the UCB library (and not the signal routines etc.).
525
526	3) Don't leave out "-lelf" even if compiling with "-lc -lucb".
527	   The UCB library also has another copy of the nlist routines,
528	   but we do want the ones from "-lelf".
529
530	If anyone needs a compiled gcc 2.4.5 and/or a ported DB library, they
531	can use anonymous ftp to fetch them from lut.fi in the /kim directory.
532	They are copies of what I use on grendel.lut.fi, and offering them
533	does not imply that I would also support them.  I have sent the DB
534	port for SVR4 back to Keith Bostic for inclusion in the official
535	distribution, but I haven't heard anything from him as of today.
536
537	- gcc-2.4.5-svr4.tar.gz	(gcc 2.4.5 and the corresponding libg++)
538	- db-1.72.tar.gz	(with source, objects and a installed copy)
539
540	Cheers
541	+ Kim
542	--
543	 *  Kimmo.Suominen@lut.fi  *  SysVr4 enthusiast at GRENDEL.LUT.FI  *
544	*    KIM@FINFILES.BITNET   *  Postmaster and Hostmaster at LUT.FI   *
545	 *    + 358 200 865 718    *  Unix area moderator at NIC.FUNET.FI  *
546
547
548Non-DNS based sites
549	This version of sendmail always tries to connect to the Domain
550	Name System (DNS) to resolve names, regardless of the setting
551	of the `I' option.  On most systems that are not running DNS,
552	this will fail quickly and sendmail will continue, but on some
553	systems it has a long timeout.  If you have this problem, you
554	will have to recompile without NAMED_BIND.  Some people have
555	claimed that they have successfully used "OI+USEVC" to force
556	sendmail to use a virtual circuit -- this will always time out
557	quickly, but also tells sendmail that a failed connection
558	should requeue the message (probably not what you intended).
559	A future release of sendmail will correct this problem.
560
561Both NEWDB and NDBM
562	If you use both -DNDBM and -DNEWDB, you must delete the module
563	ndbm.o from libdb.a and delete the file "ndbm.h" from the files
564	that get installed (that is, use the OLD ndbm.h, not the new
565	ndbm.h).  This compatibility module maps ndbm calls into DB
566	calls, and breaks things rather badly.
567
568GNU getopt
569	I'm told that GNU getopt has a problem in that it gets confused
570	by the double call.  Use the version in conf.c instead.
571
572
573+--------------+
574| MANUAL PAGES |
575+--------------+
576
577The manual pages have been written against the -mandoc macros
578instead of the -man macros.  The latest version of groff has them
579included.  You can also get a copy from FTP.UU.NET in directory
580/systems/unix/bsd-sources/share/tmac.
581
582
583+-----------------------------+
584| DESCRIPTION OF SOURCE FILES |
585+-----------------------------+
586
587The following list describes the files in this directory:
588
589Makefile	The makefile used here; this version only works with
590		the new Berkeley make.
591Makefile.dist	A trimmed down version of the makefile that works with
592		the old make.
593READ_ME		This file.
594TRACEFLAGS	My own personal list of the trace flags -- not guaranteed
595		to be particularly up to date.
596alias.c		Does name aliasing in all forms.
597arpadate.c	A subroutine which creates ARPANET standard dates.
598clock.c		Routines to implement real-time oriented functions
599		in sendmail -- e.g., timeouts.
600collect.c	The routine that actually reads the mail into a temp
601		file.  It also does a certain amount of parsing of
602		the header, etc.
603conf.c		The configuration file.  This contains information
604		that is presumed to be quite static and non-
605		controversial, or code compiled in for efficiency
606		reasons.  Most of the configuration is in sendmail.cf.
607conf.h		Configuration that must be known everywhere.
608convtime.c	A routine to sanely process times.
609daemon.c	Routines to implement daemon mode.  This version is
610		specifically for Berkeley 4.1 IPC.
611deliver.c	Routines to deliver mail.
612domain.c	Routines that interface with DNS (the Domain Name
613		System).
614err.c		Routines to print error messages.
615envelope.c	Routines to manipulate the envelope structure.
616headers.c	Routines to process message headers.
617macro.c		The macro expander.  This is used internally to
618		insert information from the configuration file.
619main.c		The main routine to sendmail.  This file also
620		contains some miscellaneous routines.
621map.c		Support for database maps.
622mci.c		Routines that handle mail connection information caching.
623parseaddr.c	The routines which do address parsing.
624queue.c		Routines to implement message queueing.
625readcf.c	The routine that reads the configuration file and
626		translates it to internal form.
627recipient.c	Routines that manipulate the recipient list.
628savemail.c	Routines which save the letter on processing errors.
629sendmail.h	Main header file for sendmail.
630srvrsmtp.c	Routines to implement server SMTP.
631stab.c		Routines to manage the symbol table.
632stats.c		Routines to collect and post the statistics.
633sysexits.c	List of error messages associated with error codes
634		in sysexits.h.
635trace.c		The trace package.  These routines allow setting and
636		testing of trace flags with a high granularity.
637udb.c		The user database interface module.
638usersmtp.c	Routines to implement user SMTP.
639util.c		Some general purpose routines used by sendmail.
640version.c	The version number and information about this
641		version of sendmail.  Theoretically, this gets
642		modified on every change.
643
644Eric Allman
645
646(Version 8.34, last update 12/11/93 17:35:33)
647