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