xref: /csrg-svn/usr.sbin/sendmail/src/READ_ME (revision 60584)
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*60584Seric#	@(#)READ_ME	6.8 (Berkeley) 05/29/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
1657418SericThe Makefile is for the new Berkeley make, available from ftp.uu.net
1757418Sericin the directory /systems/unix/bsd-sources/usr.bin/make.  There is
1857418Sericalso a Makefile.dist which is much less clever, but works on the old
1957418Serictraditional make.  You can use this using:
2057418Seric
2157418Seric	make -f Makefile.dist
2257418Seric
2360565SericThere are a couple of other Makefiles for other systems -- these are
24*60584Sericthe ones that I use, they have "Berkeley quirks" in them, and I don't
25*60584Sericguarantee that they will work in your environment.  To make it worse,
26*60584Sericsome are for the new Berkeley make, and some are for the old make.
27*60584SericI provide them for information only.  Still, they may help you get
28*60584Sericstarted.  They have names like "Makefile.HPUX".
2957943Seric
3060565SericWhereever possible, I try to make sendmail pull in the correct
31*60584Sericcompilation options needed to compile on various environments based on
32*60584Sericautomatically defined symbols.  Some machines don't seem to have useful
33*60584Sericsymbols availble, requiring the following compilation flags in the
34*60584SericMakefile:
3560565Seric
3660565SericSOLARIS		Define this if you are running Solaris 2.0 or higher.
3760565SericNeXT		Define this if you are on a NeXT box.
3860565Seric_AIX3		Define this if you are IBM AIX 3.x.
3960565Seric
40*60584SericIf you are a system that sendmail has already been ported to, you
41*60584Sericprobably won't have to touch these.  But if you are porting, you may
42*60584Serichave to tweak the following compilation flags in order to get
43*60584Sericit to compile and link properly:
4460565Seric
4560565SericUNSETENV	Define this if your system library does NOT include the
4660565Seric		"unsetenv" subroutine.
4760565SericSYSTEM5		Adjust for System V.
4860565SericLOCKF		Set this if you do not have the flock system call -- it
4960565Seric		will revert to System V file locking.  There are some
5060565Seric		semantic gotchas, so flock is preferred.  Implied by
5160565Seric		SYSTEM5.
5260565SericSYS5TZ		Use System V-style time zones.  If not set, the TZ
5360565Seric		environment variable is ignored.  Implied by SYSTEM5.
5460565SericHASUNAME	Set if you have the "uname" system call.  Implied by
5560565Seric		SYSTEM5.
56*60584SericHASSTATFS	Define this if you have the statfs(2) system call.  It's
57*60584Seric		not a disaster to get this wrong -- but you do lose the
58*60584Seric		queue free space code.
59*60584SericHASUSTAT	Define this if you have the ustat(2) system call.  It's
60*60584Seric		not a disaster to get this wrong -- but you do lose the
61*60584Seric		queue free space code.
6260565SericHASSETSID	Define this if you have the setsid(2) system call.  This
6360565Seric		is implied if your system appears to be POSIX compliant.
6460565SericHASINITGROUPS	Define this if you have the initgroups(3) routine.
65*60584SericLA_TYPE		The type of load average your kernel supports.  These
66*60584Seric		can be LA_SUBR (4) if you have the getloadavg(3) routine,
67*60584Seric		LA_FLOAT (3) if you read kmem and interpret the value
68*60584Seric		as a floating point number, LA_INT (2) to interpret as
69*60584Seric		an integer.  These last two have several other parameters
70*60584Seric		that they try to divine: the name of your kernel, the name
71*60584Seric		of the variable in the kernel to examine, the number of
72*60584Seric		bits of precision in a fixed point load average, and so
73*60584Seric		forth.  In desparation, use LA_ZERO -- it always returns
74*60584Seric		the load average as "zero" (and does so on all architectures).
75*60584Seric		The actual code is in conf.c -- it can be tweaked if you
76*60584Seric		are brave.
7760565Seric
78*60584SericThere are a bunch of features that you can decide to compile in, such
79*60584Sericas selecting various database packages and special protocol support.
80*60584SericSeveral are assumed based on other compilation flags -- if you want to
81*60584Seric"un-assume" something, you probably need to edit conf.h.  Compilation
82*60584Sericflags that add support for special features include:
8360565Seric
8460565SericNDBM		Include support for "new" DBM library for aliases and maps.
8560565SericNEWDB		Include support for Berkeley "db" package (hash & btree)
8660565Seric		for aliases and maps.
8760565SericNIS		Define this to get NIS (YP) support for aliases and maps.
8860565SericYPCOMPAT	Define this to force building of DBM versions of alias
8960565Seric		files even if you have NEWDB defined; this will only
9060565Seric		occur on NIS master machines.  It is independent of NIS.
9160565SericUSERDB		Include support for the User Information Database.  Implied
92*60584Seric		by NEWDB conf.h.
9360565SericIDENTPROTO	Define this to get IDENT (RFC 1413) protocol support.
9460565Seric		This is assumed unless you are running on Ultrix or
9560565Seric		HP-UX, both of which have a problem in the UDP
9660565Seric		implementation.
9760565SericMIME		Include support for MIME-encapsulated error messages.
9860565SericFROZENCONFIG	Define this to get support for frozen configuration
99*60584Seric		files.  Frozen configurations make sense if your I/O system
100*60584Seric		is fast relative to your processor.  At this point this
101*60584Seric		is NOT recommended.
10260565SericLOG		Set this to get syslog(3) support.  Defined by default
103*60584Seric		in conf.h.  You want this if at all possible.
10460565SericNETINET		Set this to get TCP/IP support.  Defined by default
105*60584Seric		in conf.h.  You probably want this.
10660565SericNETISO		Define this to get ISO networking support.
10760565SericSMTP		Define this to get the SMTP code.  Implied by NETINET
10860565Seric		or NETISO.
10960565SericNAMED_BIND	Define this to get DNS (name daemon) support, including
11060565Seric		MX support.  The specs you must use this if you run
11160565Seric		SMTP.  Defined by default in conf.h.
11260565SericQUEUE		Define this to get queueing code.  Implied by NETINET
113*60584Seric		or NETISO; required by SMTP.  This gives you other good
114*60584Seric		stuff -- it should be on.
11560565SericDAEMON		Define this to get general network support.  Implied by
116*60584Seric		NETINET or NETISO.  Defined by default in conf.h.  You
117*60584Seric		almost certainly want it on.
11860565SericMATCHGECOS	Permit fuzzy matching of user names against the full
11960565Seric		name (GECOS) field in the /etc/passwd file.  This should
12060565Seric		probably be on, since you can disable it from the config
121*60584Seric		file if you want to.  Defined by default in conf.h.
12260565SericSETPROCTITLE	Try to set the string printed by "ps" to something
123*60584Seric		informative about what sendmail is doing.  Defined by
124*60584Seric		default in conf.h.
12560565Seric
12660565SericIf you are compiling on SunOS and want to use frozen configuration
12760565Sericfiles, you must use -Bstatic -- if you do not, frozen configuration
12860565Sericfiles fail in bizarre ways and you will open up several security holes.
12960565Seric
13057977SericIf you are compiling on OSF/1 (DEC Alpha), you must use -lmld.
13157977Seric
13258709SericIf you use both -DNDBM and -DNEWDB, you must delete the module ndbm.o
13360172Sericfrom libdb.a and delete the file "ndbm.h" from the files that get
13460172Sericinstalled (that is, use the OLD ndbm.h, not the new ndbm.h).  This
13560172Sericcompatibility module maps ndbm calls into DB calls, and breaks things
13660172Sericrather badly.
13757943Seric
13858709SericYou probably want to look over the compilation options in conf.h
13958709Sericbefore you compile.  These are intended to be per-site information.
14058709Seric
1419881SericThe following list describes the files in this directory:
1425369Seric
14357418SericMakefile	The makefile used here; this version only works with
14457418Seric		the new Berkeley make.
14557418SericMakefile.dist	A trimmed down version of the makefile that works with
14657418Seric		the old make.
1475369SericREAD_ME		This file.
14860565SericTRACEFLAGS	My own personal list of the trace flags -- not guaranteed
14960565Seric		to be particularly up to date.
1505369Sericalias.c		Does name aliasing in all forms.
1519881Sericarpadate.c	A subroutine which creates ARPANET standard dates.
1529881Sericclock.c		Routines to implement real-time oriented functions
1539881Seric		in sendmail -- e.g., timeouts.
1545369Sericcollect.c	The routine that actually reads the mail into a temp
1555369Seric		file.  It also does a certain amount of parsing of
1565369Seric		the header, etc.
1575369Sericconf.c		The configuration file.  This contains information
1585369Seric		that is presumed to be quite static and non-
1595369Seric		controversial, or code compiled in for efficiency
1605369Seric		reasons.  Most of the configuration is in sendmail.cf.
1619881Sericconf.h		Configuration that must be known everywhere.
1625369Sericconvtime.c	A routine to sanely process times.
1639881Sericdaemon.c	Routines to implement daemon mode.  This version is
1649881Seric		specifically for Berkeley 4.1 IPC.
1655369Sericdeliver.c	Routines to deliver mail.
16660565Sericdomain.c	Routines that interface with DNS (the Domain Name
16760565Seric		System).
1685369Sericerr.c		Routines to print error messages.
1699881Sericenvelope.c	Routines to manipulate the envelope structure.
1705369Sericheaders.c	Routines to process message headers.
1715369Sericmacro.c		The macro expander.  This is used internally to
1725369Seric		insert information from the configuration file.
1735369Sericmain.c		The main routine to sendmail.  This file also
1745369Seric		contains some miscellaneous routines.
17560565Sericmap.c		Support for database maps.
17660565Sericmci.c		Routines that handle mail connection information caching.
1779881Sericparseaddr.c	The routines which do address parsing.
1785369Sericqueue.c		Routines to implement message queueing.
1795369Sericreadcf.c	The routine that reads the configuration file and
1805369Seric		translates it to internal form.
1819881Sericrecipient.c	Routines that manipulate the recipient list.
1825369Sericsavemail.c	Routines which save the letter on processing errors.
1835369Sericsendmail.h	Main header file for sendmail.
1845369Sericsrvrsmtp.c	Routines to implement server SMTP.
1855369Sericstab.c		Routines to manage the symbol table.
1865369Sericstats.c		Routines to collect and post the statistics.
1875369Sericsysexits.c	List of error messages associated with error codes
1885369Seric		in sysexits.h.
1899881Serictrace.c		The trace package.  These routines allow setting and
1909881Seric		testing of trace flags with a high granularity.
19160565Sericudb.c		The user database interface module.
1925369Sericusersmtp.c	Routines to implement user SMTP.
1935369Sericutil.c		Some general purpose routines used by sendmail.
19460565Sericversion.c	The version number and information about this
19560565Seric		version of sendmail.  Theoretically, this gets
19660565Seric		modified on every change.
1975369Seric
1985369SericEric Allman
1995369Seric
200*60584Seric(Version 6.8, last update 05/29/93 03:50:36)
201