xref: /csrg-svn/usr.sbin/sendmail/src/READ_ME (revision 65000)
135062Sbostic# Copyright (c) 1983 Eric P. Allman
248582Sbostic# Copyright (c) 1988 The Regents of the University of California.
333728Sbostic# All rights reserved.
433728Sbostic#
548582Sbostic# %sccs.include.redist.sh%
633728Sbostic#
7*65000Seric#	@(#)READ_ME	8.33 (Berkeley) 12/01/93
833728Sbostic#
948582Sbostic
109881SericThis directory contains the source files for sendmail.
115369Seric
1260565SericFor detailed instructions, please read the document ../doc/op.me:
135369Seric
1460565Seric	eqn ../doc/op.me | pic | ditroff -me
155369Seric
1664262SericThe Makefile is for the new (4.4BSD) Berkeley make, available from
1764262Sericftp.uu.net in the directory /systems/unix/bsd-sources/usr.bin/make.
1864501Seric(Paul Southworth <pauls@umich.edu> published a description of porting
1964501Sericthis make in comp.unix.bsd.)  This Makefile has assumptions about the
2064501Seric4.4 file system layout built in.
2157418Seric
2264501SericThere is also a Makefile.dist which is much less clever, but works on
2364501Sericthe old traditional make.  You can use this using:
2464501Seric
2557418Seric	make -f Makefile.dist
2657418Seric
2764262SericThere are a bunch of other Makefiles for other systems -- these are
2860584Sericthe ones that I use, they have "Berkeley quirks" in them, and I don't
2964262Sericguarantee that they will work unmodified in your environment.  However,
3064262Sericthey are all designed for the old make and can be used to help you get
3164262Sericstarted.  They have names like "Makefile.HPUX".  Many of them include
3264262Seric-I/usr/sww/include/db and -L/usr/sww/lib -- this is Berkeley's
33*65000Sericlocation for the new database libraries, described below.  You don't
34*65000Serichave to remove these definitions if you don't have these directories.
3557943Seric
3664272SericThere is also a shell script (makesendmail) that tries to be clever
3764272Sericabout using object subdirectories.  It's pretty straightforward, and
3864272Sericmay help if you share a source tree among different architectures.
3964035Seric
40*65000Seric**************************************************************************
41*65000Seric**  IMPORTANT:  DO NOT USE OPTIMIZATION (``-O'') IF YOU ARE RUNNING	**
42*65000Seric**  GCC 2.4.x or 2.5.x.  THERE IS A BUG IN THE GCC OPTIMIZER THAT	**
43*65000Seric**  CAUSES SENDMAIL COMPILES TO FAIL MISERABLY.				**
44*65000Seric**************************************************************************
4564272Seric
46*65000SericJim Wilson of Cygnus believes he has found the problem -- it will
47*65000Sericprobably be fixed in GCC 2.5.6 -- but until this is verified, be
48*65000Sericvery suspicious of gcc -O.
4964701Seric
50*65000Seric**************************************************************************
51*65000Seric**  IMPORTANT:  Read the appropriate paragraphs in the section on	**
52*65000Seric**  ``Operating System and Compile Quirks''.				**
53*65000Seric**************************************************************************
5464718Seric
55*65000Seric
5664250Seric+----------------------+
5764250Seric| DATABASE DEFINITIONS |
5864250Seric+----------------------+
5964250Seric
6064250SericThere are several database formats that can be used for the alias files
6164250Sericand for general maps.  When used for alias files they interact in an
6264250Sericattempt to be back compatible.
6364250Seric
6464250SericThe three options are NEWDB (the new Berkeley DB package), NDBM (the
6564250Sericolder DBM implementation -- the very old V7 implementation is no
6664250Sericlonger supported), and NIS (Network Information Services).  Used alone
6764376Sericthese just include the support they indicate.  [If you are using NEWDB,
6864376Sericget the latest version from FTP.CS.Berkeley.EDU in /ucb/4bsd.  DO NOT
69*65000Sericuse the version from the Net2 distribution!  However, if you are on
70*65000SericBSD/386 or 386BSD-based systems, use the one that already exists
71*65000Sericon your system.  You may need to define OLD_NEWDB to do this.]
7264250Seric
7364250SericIf NEWDB and NDBM are defined (but not NIS), then sendmail will read
7464250SericNDBM format alias files, but the next time a newaliases is run the
7564250Sericformat will be converted to NEWDB; that format will be used forever
7664250Sericmore.  This is intended as a transition feature.  [Note however that
7764250Sericthe NEWDB library also catches and maps NDBM calls; you will have to
7864250Sericback out this feature to get this to work.  See ``Quirks'' section
7964250Sericbelow for details.]
8064250Seric
8164250SericIf all three are defined, sendmail operates as described above, and also
8264250Sericlooks for the file /var/yp/Makefile.  If it exists, newaliases will
8364250Sericbuild BOTH the NEWDB and NDBM format alias files.  However, it will
8464250Sericonly use the NEWDB file; the NDBM format file is used only by the
8564250SericNIS subsystem.
8664250Seric
8764250SericIf NDBM and NIS are defined (regardless of the definition of NEWDB
8864250Sericor the existance of /var/yp/Makefile), sendmail adds the special
8964250Serictokens "YP_LAST_MODIFIED" and "YP_MASTER_NAME", both of which are
9064250Sericrequired if the NDBM file is to be used as an NIS map.
9164250Seric
9264250SericAll of -DNEWDB, -DNDBM, and -DNIS are normally defined in the DBMDEF
9364250Sericline in the Makefile.
9464250Seric
9564250Seric
9664035Seric+---------------+
9764035Seric| COMPILE FLAGS |
9864035Seric+---------------+
9964035Seric
10060565SericWhereever possible, I try to make sendmail pull in the correct
10160584Sericcompilation options needed to compile on various environments based on
10260584Sericautomatically defined symbols.  Some machines don't seem to have useful
10360584Sericsymbols availble, requiring the following compilation flags in the
10460584SericMakefile:
10560565Seric
10660565SericSOLARIS		Define this if you are running Solaris 2.0 or higher.
107*65000SericSOLARIS_2_3	Define this if you are running Solaris 2.3 or higher.
10864077SericNeXT		Define this if you are on a NeXT box.  (This one may
10964072Seric		be pre-defined for you.)  There are other hacks you
11064072Seric		have to make -- see below.
11160565Seric_AIX3		Define this if you are IBM AIX 3.x.
11263965SericRISCOS		Define this if you are running RISC/os from MIPS.
11364501Seric_SCO_unix_	Define this if you are on SCO UNIX.
11460565Seric
11560584SericIf you are a system that sendmail has already been ported to, you
11660584Sericprobably won't have to touch these.  But if you are porting, you may
11763962Serichave to tweak the following compilation flags in conf.h in order to
11863962Sericget it to compile and link properly:
11960565Seric
12060565SericSYSTEM5		Adjust for System V.
12164035SericSYS5SIGNALS	Use System V signal semantics -- the signal handler
12264035Seric		is automatically dropped when the signal is caught.
12364035Seric		If this is not set, use POSIX/BSD semantics, where the
12464035Seric		signal handler stays in force until an exec or an
12564035Seric		explicit delete.  Implied by SYSTEM5.
12664706SericSYS5SETPGRP	Use System V setpgrp() semantics.  Implied by SYSTEM5.
12764035SericHASFLOCK	Set this if you prefer to use the flock(2) system call
12864035Seric		rather than using fcntl-based locking.  Fcntl locking
12964035Seric		has some semantic gotchas, but many vendor systems
13064035Seric		also interface it to lockd(8) to do NFS-style locking.
13164035Seric		For this reason, this should not be set unless you
13264035Seric		don't have an alternative.
13360565SericHASUNAME	Set if you have the "uname" system call.  Implied by
13460565Seric		SYSTEM5.
13563962SericHASUNSETENV	Define this if your system library has the "unsetenv"
13663962Seric		subroutine.
13760584SericHASSTATFS	Define this if you have the statfs(2) system call.  It's
13860584Seric		not a disaster to get this wrong -- but you do lose the
13960584Seric		queue free space code.
14060584SericHASUSTAT	Define this if you have the ustat(2) system call.  It's
14160584Seric		not a disaster to get this wrong -- but you do lose the
14260584Seric		queue free space code.
14360565SericHASSETSID	Define this if you have the setsid(2) system call.  This
14460565Seric		is implied if your system appears to be POSIX compliant.
14560565SericHASINITGROUPS	Define this if you have the initgroups(3) routine.
14663753SericHASSETVBUF	Define this if you have the setvbuf(3) library call.
14763753Seric		If you don't, setlinebuf will be used instead.  This
14863753Seric		defaults on if your compiler defines __STDC__.
14963902SericHASSETREUID	Define this if you have setreuid(2) ***AND*** root can
15063902Seric		use setreuid to change to an arbitrary user.  This second
15163902Seric		condition is not satisfied on AIX 3.x.  You may find that
15263902Seric		your system has setresuid(2), (for example, on HP-UX) in
15363902Seric		which case you will also have to #define setreuid(r, e)
15463902Seric		to be the appropriate call.  Some systems (such as Solaris)
155*65000Seric		have a compatibility routine that doesn't work properly,
156*65000Seric		but may have "saved user ids" properly implemented so you
157*65000Seric		can ``#define setreuid(r, e) seteuid(e)'' and have it work.
15863902Seric		The important thing is that you have a call that will set
159*65000Seric		the effective uid independently of the real or saved uid
160*65000Seric		and be able to set the effective uid back again when done.
161*65000Seric		There's a test program in ../test/t_setreuid.c that will
162*65000Seric		try things on your system.  Setting this improves the
163*65000Seric		security, since sendmail doesn't have to read .forward
164*65000Seric		and :include: files as root.  There are certain attacks
165*65000Seric		that may be unpreventable without this call.
166*65000SericHASLSTAT	Define this if you have symbolic links (and thus the
167*65000Seric		lstat(2) system call).  This improves security.  Unlike
168*65000Seric		most other options, this one is on by default, so you
169*65000Seric		need to #undef it in conf.h if you don't have symbolic
170*65000Seric		links (these days everyone does).
17163937SericGIDSET_T	The type of entries in a gidset passed as the second
17263937Seric		argument to getgroups(2).  Historically this has been an
17363937Seric		int, so this is the default, but some systems (such as
17463937Seric		IRIX) pass it as a gid_t, which is an unsigned short.
17563937Seric		This will make a difference, so it is important to get
17663937Seric		this right!  However, it is only an issue if you have
17763937Seric		group sets.
17863968SericSLEEP_T		The type returned by the system sleep() function.
17963968Seric		Defaults to "unsigned int".  Don't worry about this
18063968Seric		if you don't have compilation problems.
18163974SericARBPTR_T	The type of an arbitrary pointer -- defaults to "void *".
18263974Seric		If you are an very old compiler you may need to define
18363974Seric		this to be "char *".
18460584SericLA_TYPE		The type of load average your kernel supports.  These
18560584Seric		can be LA_SUBR (4) if you have the getloadavg(3) routine,
18664376Seric		LA_MACH (5) to use MACH-style load averages (calls
18764376Seric		processor_set_info()), LA_FLOAT (3) if you read kmem and
18864376Seric		interpret the value as a floating point number, LA_INT (2)
18964376Seric		to interpret as a long integer, or LA_SHORT (6) to
19064376Seric		interpret as a short integer.  These last three have
19164376Seric		several other parameters that they try to divine: the
19264376Seric		name of your kernel, the name of the variable in the
19364376Seric		kernel to examine, the number of bits of precision in
19464376Seric		a fixed point load average, and so forth.  In desparation,
19564376Seric		use LA_ZERO (1) -- it always returns the load average as
19664376Seric		"zero" (and does so on all architectures).  The actual
19764376Seric		code is in conf.c -- it can be tweaked if you are brave.
19863962SericERRLIST_PREDEFINED
19963962Seric		If set, assumes that some header file defines sys_errlist.
20063962Seric		This may be needed if you get type conflicts on this
20163962Seric		variable -- otherwise don't worry about it.
20264562SericWAITUNION	The wait(2) routine takes a "union wait" argument instead
20364562Seric		of an integer argument.  This is for compatibility with
20464562Seric		old versions of BSD.
205*65000SericSCANF		You can set this to extend the F command to accept a
206*65000Seric		scanf string -- this gives you a primitive parser for
207*65000Seric		class definitions -- BUT it can make you vulnerable to
208*65000Seric		core dumps if the target file is poorly formed.
20960565Seric
21064035Seric
21164035Seric+-----------------------+
21264035Seric| COMPILE-TIME FEATURES |
21364035Seric+-----------------------+
21464035Seric
21560584SericThere are a bunch of features that you can decide to compile in, such
21660584Sericas selecting various database packages and special protocol support.
21760584SericSeveral are assumed based on other compilation flags -- if you want to
21860584Seric"un-assume" something, you probably need to edit conf.h.  Compilation
21960584Sericflags that add support for special features include:
22060565Seric
22160565SericNDBM		Include support for "new" DBM library for aliases and maps.
22264250Seric		Normally defined in the Makefile.
22360565SericNEWDB		Include support for Berkeley "db" package (hash & btree)
22464250Seric		for aliases and maps.  Normally defined in the Makefile.
22560565SericNIS		Define this to get NIS (YP) support for aliases and maps.
22664250Seric		Normally defined in the Makefile.
22760565SericUSERDB		Include support for the User Information Database.  Implied
22864250Seric		by NEWDB in conf.h.
229*65000SericIDENTPROTO	Define this as 1 to get IDENT (RFC 1413) protocol support.
23060565Seric		This is assumed unless you are running on Ultrix or
23160565Seric		HP-UX, both of which have a problem in the UDP
232*65000Seric		implementation.  You can define it to be 0 to explicitly
233*65000Seric		turn off IDENT protocol support.
23460565SericMIME		Include support for MIME-encapsulated error messages.
23560565SericLOG		Set this to get syslog(3) support.  Defined by default
23660584Seric		in conf.h.  You want this if at all possible.
23760565SericNETINET		Set this to get TCP/IP support.  Defined by default
23860584Seric		in conf.h.  You probably want this.
23960565SericNETISO		Define this to get ISO networking support.
24060565SericSMTP		Define this to get the SMTP code.  Implied by NETINET
24160565Seric		or NETISO.
24260565SericNAMED_BIND	Define this to get DNS (name daemon) support, including
24360565Seric		MX support.  The specs you must use this if you run
24460565Seric		SMTP.  Defined by default in conf.h.
24560565SericQUEUE		Define this to get queueing code.  Implied by NETINET
24660584Seric		or NETISO; required by SMTP.  This gives you other good
24760584Seric		stuff -- it should be on.
24860565SericDAEMON		Define this to get general network support.  Implied by
24960584Seric		NETINET or NETISO.  Defined by default in conf.h.  You
25060584Seric		almost certainly want it on.
25160565SericMATCHGECOS	Permit fuzzy matching of user names against the full
25260565Seric		name (GECOS) field in the /etc/passwd file.  This should
25360565Seric		probably be on, since you can disable it from the config
25460584Seric		file if you want to.  Defined by default in conf.h.
25560565SericSETPROCTITLE	Try to set the string printed by "ps" to something
25660584Seric		informative about what sendmail is doing.  Defined by
25760584Seric		default in conf.h.
25860565Seric
25964035Seric
260*65000Seric+---------------------+
261*65000Seric| DNS/RESOLVER ISSUES |
262*65000Seric+---------------------+
263*65000Seric
264*65000SericMany systems have old versions of the resolver library.  At a minimum,
265*65000Sericyou should be running BIND 4.8.3; older versions may compile, but they
266*65000Serichave known bugs that should give you pause.
267*65000Seric
268*65000SericCommon problems in old versions include "undefined" errors for
269*65000Sericdn_skipname.
270*65000Seric
271*65000SericSome people have had a problem with BIND 4.9; it uses some routines
272*65000Sericthat it expects to be externally defined such as strerror().  It may
273*65000Serichelp to link with "-l44bsd" to solve this problem.
274*65000Seric
275*65000Seric
27664035Seric+-------------------------------------+
27764035Seric| OPERATING SYSTEM AND COMPILE QUIRKS |
27864035Seric+-------------------------------------+
27964035Seric
28064376SericSunOS 4.x (Solaris 1.x)
28164376Seric	You may have to use -lresolv on SunOS.  However, beware that
28264376Seric	this links in a new version of gethostbyname that does not
28364376Seric	understand NIS, so you must have all of your hosts in DNS.
28464035Seric
28564798Seric	Some people have reported problems with the SunOS version of
28664798Seric	-lresolv and/or in.named, and suggest that you get a newer
28764798Seric	version.  The symptoms are delays when you connect to the
288*65000Seric	SMTP server on a SunOS machine or having your domain added to
289*65000Seric	addresses inappropriately.  There is a version of BIND
29064798Seric	version 4.9 on gatekeeper.DEC.COM in pub/BSD/bind/4.9.
29164798Seric
29264400Seric	There is substantial disagreement about whether you can make
29364400Seric	this work with resolv+, which allows you to specify a search-path
29464400Seric	of services.  Some people report that it works fine, others
29564400Seric	claim it doesn't work at all (including causing sendmail to
29664400Seric	drop core when it tries to do multiple resolv+ lookups for a
29764400Seric	single job).  I haven't tried resolv+, as we use DNS exclusively.
29864400Seric
29964400Seric	Should you want to try resolv+, it is on ftp.uu.net in
30064400Seric	/networking/ip/dns.
30164400Seric
30264376SericSolaris 2.x (SunOS 5.x)
30364376Seric	To compile for Solaris, be sure you use -DSOLARIS.
30464376Seric
30564364Seric	From a correspondent:
30664364Seric
30764364Seric	   For solaris 2.2, I have
30864364Seric
30964364Seric		hosts:      files dns
31064364Seric
31164364Seric	   in /etc/nsswitch.conf and /etc/hosts has to have the fully
31264364Seric	   qualified host name. I think "files" has to be before "dns"
31364364Seric	   in /etc/nsswitch.conf during bootup.
31464364Seric
31564376Seric	To the best of my knowledge, Solaris does not have the
31664376Seric	gethostbyname problem described above.
31764376Seric
31864385Seric	The Solaris "syslog" function is apparently limited to something
31964385Seric	about 90 characters because of a kernel limitation.  If you have
320*65000Seric	source code, you can probably up this number.  The syslogd patch
321*65000Seric	is included in kernel jumbo patch for Solaris 2.2 as of revision
322*65000Seric	-39 or so.  At least one person is running with patch 100999-45
323*65000Seric	and their long lost sendmail logging is finally showing up.
32464385Seric
32564250SericOSF/1
326*65000Seric	If you are compiling on OSF/1 (DEC Alpha), you must use
327*65000Seric	-non_shared (otherwise it core dumps on startup).  You may also
328*65000Seric	need -mld to get the nlist() function, although some versions
329*65000Seric	apparently don't need this.
330*65000Seric
331*65000Seric	Also, the enclosed makefile removed /usr/sbin/smtpd; if you need
332*65000Seric	it, just create the link to the sendmail binary.
33357977Seric
33464250SericNeXT
33564250Seric	If you are compiling on NeXT, you will have to create an empty
33664250Seric	file "unistd.h" and create a file "dirent.h" containing:
33763753Seric
33864250Seric		#include <sys/dir.h>
33964250Seric		#define dirent	direct
34064035Seric
34164250Seric	(The Makefile.NeXT should try to do both of these for you.)
34264077Seric
34364364Seric	Apparently, there is a bug in getservbyname on Nextstep 3.0
34464364Seric	that causes it to fail under some circumstances with the
34564364Seric	message "SYSERR: service "smtp" unknown" logged.  You should
34664364Seric	be able to work around this by including the line:
34764364Seric
34864670Seric		OOPort=25
34964364Seric
35064364Seric	in your .cf file.
35164364Seric
35264376Seric	You may have to use -DNeXT.
35364376Seric
354*65000SericBSDI (BSD/386) 1.0, NetBSD 0.9, FreeBSD 1.0
355*65000Seric	The "m4" from BSDI won't handle the config files properly.
356*65000Seric	I haven't had a chance to test this myself.
35757943Seric
358*65000Seric	The M4 shipped in FreeBSD and NetBSD 0.9 don't handle the config
359*65000Seric	files properly. One must use either GNU m4 1.1 or the PD-M4
360*65000Seric	recently posted in comp.os.386bsd.bugs (and maybe others).
361*65000Seric	NetBSD-current includes the PD-M4 (as stated in the NetBSD file
362*65000Seric	CHANGES).
363*65000Seric
364*65000Seric	FreeBSD 1.0 RELEASE has uname(2) now. Use -DUSEUNAME in order to
365*65000Seric	use it (look into Makefile.FreeBSD). NetBSD-current may have
366*65000Seric	it too but it has not been verified.
367*65000Seric
368*65000Seric	You cannot port the latest version of the Berkeley db library
369*65000Seric	and use it with sendmail without recompiling the world.  This
370*65000Seric	is because C library routines use the older version which have
371*65000Seric	incompatible header files -- the result is that it can't read
372*65000Seric	other system files, such as /etc/passwd, unless you use the
373*65000Seric	new db format throughout your system.  You should normally just
374*65000Seric	use the version of db supplied in your release.  You may need
375*65000Seric	to use -DOLD_NEWDB to make this work -- this turns off some
376*65000Seric	new interface calls (for file locking) that are not in older
377*65000Seric	versions of db.  You'll get compile errors if you need this
378*65000Seric	flag and don't have it set.
379*65000Seric
38064364Seric4.3BSD
38164364Seric	If you are running a "virgin" version of 4.3BSD, you'll have
38264364Seric	a very old resolver and be missing some header files.  The
38364364Seric	header files are simple -- create empty versions and everything
38464364Seric	will work fine.  For the resolver you should really port a new
38564364Seric	version (4.8.3 or later) of the resolver; 4.9 is available on
38664364Seric	gatekeeper.DEC.COM in pub/BSD/bind/4.9.  If you are really
38764364Seric	determined to continue to use your old, buggy version (or as
38864364Seric	a shortcut to get sendmail working -- I'm sure you have the
38964364Seric	best intentions to port a modern version of BIND), you can
39064364Seric	copy ../contrib/oldbind.compat.c into src and add
39164364Seric	oldbind.compat.o to OBJADD in the Makefile.
39264364Seric
39364501SericLinux
39464501Seric	From: Karl London <karl@borg.demon.co.uk>
39564501Seric	Subject: Little bit to add to a readme for Linux for 8.6
39664501Seric	Date: Fri, 10 Sep 1993 20:16:05 +0100 (BST)
39764501Seric
39864501Seric	Below is a copy of a section of the /usr/include/unistd.h from
39964501Seric	linux libc-4.4.1 which needs changing because of a bug in the
40064501Seric	header files. Should be fixed for future releases..
40164501Seric
40264501Seric	Karl
40364501Seric
40464501Seric	The #if 0 and #endif are new!!
40564501Seric
40664501Seric	-------
40764501Seric
40864501Seric	   If OPTS begins with `--', then non-option arguments
40964501Seric	   are treated as arguments to the option '\0'.
41064501Seric	   This behavior is specific to the GNU `getopt'.  */
41164501Seric	#if 0
41264501Seric	extern int getopt __P ((int __argc, char *__const * __argv,
41364501Seric				__const char *__opts));
41464501Seric	#endif
41564501Seric	extern int opterr;
41664501Seric	extern int optind;
41764501Seric
41864718SericA/UX
41964718Seric	Date: Tue, 12 Oct 1993 18:28:28 -0400 (EDT)
42064718Seric	From: "Eric C. Hagberg" <hagberg@med.cornell.edu>
42164718Seric	Subject: Fix for A/UX ndbm
42264718Seric
42364718Seric	I guess this isn't really a sendmail bug, however, it is something
42464718Seric	that A/UX users should be aware of when compiling sendmail 8.6.
42564718Seric
42664718Seric	Apparently, the calls that sendmail is using to the ndbm routines
42764718Seric	in A/UX 3.0.x contain calls to "broken" routines, in that the
42864718Seric	aliases database will break when it gets "just a little big"
42964718Seric	(sorry I don't have exact numbers here, but it broke somewhere
43064718Seric	around 20-25 aliases for me.), making all aliases non-functional
43164718Seric	after exceeding this point.
43264718Seric
43364718Seric	What I did was to get the gnu-dbm-1.6 package, compile it, and
43464718Seric	then re-compile sendmail with "-lgdbm", "-DNDBM", and using the
43564718Seric	ndbm.h header file that comes with the gnu-package. This makes
43664718Seric	things behave properly.
43764718Seric
43864718Seric	I suppose porting the New Berkeley db package is another route,
43964718Seric	however, I made a quick attempt at it, and found it difficult
44064718Seric	(not easy at least); the gnu-dbm package "configured" and
44164718Seric	compiled easily.
44264718Seric
44364718SericDG/UX
44464718Seric	Apparently, /bin/mail doesn't work properly for delivery on
44564718Seric	DG/UX -- the person who has this working, Douglas Anderson
44664718Seric	<dlander@afterlife.ncsc.mil>, used procmail instead.
44764718Seric
44864718SericNon-DNS based sites
44964718Seric	This version of sendmail always tries to connect to the Domain
45064718Seric	Name System (DNS) to resolve names, regardless of the setting
45164718Seric	of the `I' option.  On most systems that are not running DNS,
45264718Seric	this will fail quickly and sendmail will continue, but on some
45364718Seric	systems it has a long timeout.  If you have this problem, you
45464718Seric	will have to recompile without NAMED_BIND.  Some people have
45564718Seric	claimed that they have successfully used "OI+USEVC" to force
45664718Seric	sendmail to use a virtual circuit -- this will always time out
45764718Seric	quickly, but also tells sendmail that a failed connection
45864718Seric	should requeue the message (probably not what you intended).
45964718Seric	A future release of sendmail will correct this problem.
46064718Seric
46164250SericBoth NEWDB and NDBM
46264250Seric	If you use both -DNDBM and -DNEWDB, you must delete the module
46364250Seric	ndbm.o from libdb.a and delete the file "ndbm.h" from the files
46464250Seric	that get installed (that is, use the OLD ndbm.h, not the new
46564250Seric	ndbm.h).  This compatibility module maps ndbm calls into DB
46664250Seric	calls, and breaks things rather badly.
46758709Seric
46864559SericGNU getopt
46964559Seric	I'm told that GNU getopt has a problem in that it gets confused
47064559Seric	by the double call.  Use the version in conf.c instead.
47164250Seric
47264559Seric
47364820Seric+--------------+
47464820Seric| MANUAL PAGES |
47564820Seric+--------------+
47664820Seric
47764820SericThe manual pages have been written against the -mandoc macros
47864820Sericinstead of the -man macros.  The latest version of groff has them
47964820Sericincluded.  You can also get a copy from FTP.UU.NET in directory
48064820Seric/systems/unix/bsd-sources/share/tmac.
48164820Seric
48264820Seric
48364035Seric+-----------------------------+
48464035Seric| DESCRIPTION OF SOURCE FILES |
48564035Seric+-----------------------------+
48664035Seric
4879881SericThe following list describes the files in this directory:
4885369Seric
48957418SericMakefile	The makefile used here; this version only works with
49057418Seric		the new Berkeley make.
49157418SericMakefile.dist	A trimmed down version of the makefile that works with
49257418Seric		the old make.
4935369SericREAD_ME		This file.
49460565SericTRACEFLAGS	My own personal list of the trace flags -- not guaranteed
49560565Seric		to be particularly up to date.
4965369Sericalias.c		Does name aliasing in all forms.
4979881Sericarpadate.c	A subroutine which creates ARPANET standard dates.
4989881Sericclock.c		Routines to implement real-time oriented functions
4999881Seric		in sendmail -- e.g., timeouts.
5005369Sericcollect.c	The routine that actually reads the mail into a temp
5015369Seric		file.  It also does a certain amount of parsing of
5025369Seric		the header, etc.
5035369Sericconf.c		The configuration file.  This contains information
5045369Seric		that is presumed to be quite static and non-
5055369Seric		controversial, or code compiled in for efficiency
5065369Seric		reasons.  Most of the configuration is in sendmail.cf.
5079881Sericconf.h		Configuration that must be known everywhere.
5085369Sericconvtime.c	A routine to sanely process times.
5099881Sericdaemon.c	Routines to implement daemon mode.  This version is
5109881Seric		specifically for Berkeley 4.1 IPC.
5115369Sericdeliver.c	Routines to deliver mail.
51260565Sericdomain.c	Routines that interface with DNS (the Domain Name
51360565Seric		System).
5145369Sericerr.c		Routines to print error messages.
5159881Sericenvelope.c	Routines to manipulate the envelope structure.
5165369Sericheaders.c	Routines to process message headers.
5175369Sericmacro.c		The macro expander.  This is used internally to
5185369Seric		insert information from the configuration file.
5195369Sericmain.c		The main routine to sendmail.  This file also
5205369Seric		contains some miscellaneous routines.
52160565Sericmap.c		Support for database maps.
52260565Sericmci.c		Routines that handle mail connection information caching.
5239881Sericparseaddr.c	The routines which do address parsing.
5245369Sericqueue.c		Routines to implement message queueing.
5255369Sericreadcf.c	The routine that reads the configuration file and
5265369Seric		translates it to internal form.
5279881Sericrecipient.c	Routines that manipulate the recipient list.
5285369Sericsavemail.c	Routines which save the letter on processing errors.
5295369Sericsendmail.h	Main header file for sendmail.
5305369Sericsrvrsmtp.c	Routines to implement server SMTP.
5315369Sericstab.c		Routines to manage the symbol table.
5325369Sericstats.c		Routines to collect and post the statistics.
5335369Sericsysexits.c	List of error messages associated with error codes
5345369Seric		in sysexits.h.
5359881Serictrace.c		The trace package.  These routines allow setting and
5369881Seric		testing of trace flags with a high granularity.
53760565Sericudb.c		The user database interface module.
5385369Sericusersmtp.c	Routines to implement user SMTP.
5395369Sericutil.c		Some general purpose routines used by sendmail.
54060565Sericversion.c	The version number and information about this
54160565Seric		version of sendmail.  Theoretically, this gets
54260565Seric		modified on every change.
5435369Seric
5445369SericEric Allman
5455369Seric
546*65000Seric(Version 8.33, last update 12/01/93 11:34:48)
547