xref: /original-bsd/usr.sbin/sendmail/src/READ_ME (revision c3e32dec)
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.1 (Berkeley) 06/07/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 Berkeley make, available from ftp.uu.net
17in the directory /systems/unix/bsd-sources/usr.bin/make.  There is
18also a Makefile.dist which is much less clever, but works on the old
19traditional make.  You can use this using:
20
21	make -f Makefile.dist
22
23There are a couple of other Makefiles for other systems -- these are
24the ones that I use, they have "Berkeley quirks" in them, and I don't
25guarantee that they will work in your environment.  To make it worse,
26some are for the new Berkeley make, and some are for the old make.
27I provide them for information only.  Still, they may help you get
28started.  They have names like "Makefile.HPUX".
29
30Whereever possible, I try to make sendmail pull in the correct
31compilation options needed to compile on various environments based on
32automatically defined symbols.  Some machines don't seem to have useful
33symbols availble, requiring the following compilation flags in the
34Makefile:
35
36SOLARIS		Define this if you are running Solaris 2.0 or higher.
37NeXT		Define this if you are on a NeXT box.
38_AIX3		Define this if you are IBM AIX 3.x.
39
40If you are a system that sendmail has already been ported to, you
41probably won't have to touch these.  But if you are porting, you may
42have to tweak the following compilation flags in order to get
43it to compile and link properly:
44
45UNSETENV	Define this if your system library does NOT include the
46		"unsetenv" subroutine.
47SYSTEM5		Adjust for System V.
48LOCKF		Set this if you do not have the flock system call -- it
49		will revert to System V file locking.  There are some
50		semantic gotchas, so flock is preferred.  Implied by
51		SYSTEM5.
52SYS5TZ		Use System V-style time zones.  If not set, the TZ
53		environment variable is ignored.  Implied by SYSTEM5.
54HASUNAME	Set if you have the "uname" system call.  Implied by
55		SYSTEM5.
56HASSTATFS	Define this if you have the statfs(2) system call.  It's
57		not a disaster to get this wrong -- but you do lose the
58		queue free space code.
59HASUSTAT	Define this if you have the ustat(2) system call.  It's
60		not a disaster to get this wrong -- but you do lose the
61		queue free space code.
62HASSETSID	Define this if you have the setsid(2) system call.  This
63		is implied if your system appears to be POSIX compliant.
64HASINITGROUPS	Define this if you have the initgroups(3) routine.
65LA_TYPE		The type of load average your kernel supports.  These
66		can be LA_SUBR (4) if you have the getloadavg(3) routine,
67		LA_FLOAT (3) if you read kmem and interpret the value
68		as a floating point number, LA_INT (2) to interpret as
69		an integer.  These last two have several other parameters
70		that they try to divine: the name of your kernel, the name
71		of the variable in the kernel to examine, the number of
72		bits of precision in a fixed point load average, and so
73		forth.  In desparation, use LA_ZERO -- it always returns
74		the load average as "zero" (and does so on all architectures).
75		The actual code is in conf.c -- it can be tweaked if you
76		are brave.
77
78There are a bunch of features that you can decide to compile in, such
79as selecting various database packages and special protocol support.
80Several are assumed based on other compilation flags -- if you want to
81"un-assume" something, you probably need to edit conf.h.  Compilation
82flags that add support for special features include:
83
84NDBM		Include support for "new" DBM library for aliases and maps.
85NEWDB		Include support for Berkeley "db" package (hash & btree)
86		for aliases and maps.
87NIS		Define this to get NIS (YP) support for aliases and maps.
88YPCOMPAT	Define this to force building of DBM versions of alias
89		files even if you have NEWDB defined; this will only
90		occur on NIS master machines.  It is independent of NIS.
91USERDB		Include support for the User Information Database.  Implied
92		by NEWDB conf.h.
93IDENTPROTO	Define this to get IDENT (RFC 1413) protocol support.
94		This is assumed unless you are running on Ultrix or
95		HP-UX, both of which have a problem in the UDP
96		implementation.
97MIME		Include support for MIME-encapsulated error messages.
98FROZENCONFIG	Define this to get support for frozen configuration
99		files.  Frozen configurations make sense if your I/O system
100		is fast relative to your processor.  At this point this
101		is NOT recommended.
102LOG		Set this to get syslog(3) support.  Defined by default
103		in conf.h.  You want this if at all possible.
104NETINET		Set this to get TCP/IP support.  Defined by default
105		in conf.h.  You probably want this.
106NETISO		Define this to get ISO networking support.
107SMTP		Define this to get the SMTP code.  Implied by NETINET
108		or NETISO.
109NAMED_BIND	Define this to get DNS (name daemon) support, including
110		MX support.  The specs you must use this if you run
111		SMTP.  Defined by default in conf.h.
112QUEUE		Define this to get queueing code.  Implied by NETINET
113		or NETISO; required by SMTP.  This gives you other good
114		stuff -- it should be on.
115DAEMON		Define this to get general network support.  Implied by
116		NETINET or NETISO.  Defined by default in conf.h.  You
117		almost certainly want it on.
118MATCHGECOS	Permit fuzzy matching of user names against the full
119		name (GECOS) field in the /etc/passwd file.  This should
120		probably be on, since you can disable it from the config
121		file if you want to.  Defined by default in conf.h.
122SETPROCTITLE	Try to set the string printed by "ps" to something
123		informative about what sendmail is doing.  Defined by
124		default in conf.h.
125
126If you are compiling on SunOS and want to use frozen configuration
127files, you must use -Bstatic -- if you do not, frozen configuration
128files fail in bizarre ways and you will open up several security holes.
129
130If you are compiling on OSF/1 (DEC Alpha), you must use -lmld.
131
132If you use both -DNDBM and -DNEWDB, you must delete the module ndbm.o
133from libdb.a and delete the file "ndbm.h" from the files that get
134installed (that is, use the OLD ndbm.h, not the new ndbm.h).  This
135compatibility module maps ndbm calls into DB calls, and breaks things
136rather badly.
137
138You probably want to look over the compilation options in conf.h
139before you compile.  These are intended to be per-site information.
140
141The following list describes the files in this directory:
142
143Makefile	The makefile used here; this version only works with
144		the new Berkeley make.
145Makefile.dist	A trimmed down version of the makefile that works with
146		the old make.
147READ_ME		This file.
148TRACEFLAGS	My own personal list of the trace flags -- not guaranteed
149		to be particularly up to date.
150alias.c		Does name aliasing in all forms.
151arpadate.c	A subroutine which creates ARPANET standard dates.
152clock.c		Routines to implement real-time oriented functions
153		in sendmail -- e.g., timeouts.
154collect.c	The routine that actually reads the mail into a temp
155		file.  It also does a certain amount of parsing of
156		the header, etc.
157conf.c		The configuration file.  This contains information
158		that is presumed to be quite static and non-
159		controversial, or code compiled in for efficiency
160		reasons.  Most of the configuration is in sendmail.cf.
161conf.h		Configuration that must be known everywhere.
162convtime.c	A routine to sanely process times.
163daemon.c	Routines to implement daemon mode.  This version is
164		specifically for Berkeley 4.1 IPC.
165deliver.c	Routines to deliver mail.
166domain.c	Routines that interface with DNS (the Domain Name
167		System).
168err.c		Routines to print error messages.
169envelope.c	Routines to manipulate the envelope structure.
170headers.c	Routines to process message headers.
171macro.c		The macro expander.  This is used internally to
172		insert information from the configuration file.
173main.c		The main routine to sendmail.  This file also
174		contains some miscellaneous routines.
175map.c		Support for database maps.
176mci.c		Routines that handle mail connection information caching.
177parseaddr.c	The routines which do address parsing.
178queue.c		Routines to implement message queueing.
179readcf.c	The routine that reads the configuration file and
180		translates it to internal form.
181recipient.c	Routines that manipulate the recipient list.
182savemail.c	Routines which save the letter on processing errors.
183sendmail.h	Main header file for sendmail.
184srvrsmtp.c	Routines to implement server SMTP.
185stab.c		Routines to manage the symbol table.
186stats.c		Routines to collect and post the statistics.
187sysexits.c	List of error messages associated with error codes
188		in sysexits.h.
189trace.c		The trace package.  These routines allow setting and
190		testing of trace flags with a high granularity.
191udb.c		The user database interface module.
192usersmtp.c	Routines to implement user SMTP.
193util.c		Some general purpose routines used by sendmail.
194version.c	The version number and information about this
195		version of sendmail.  Theoretically, this gets
196		modified on every change.
197
198Eric Allman
199
200(Version 8.1, last update 06/07/93 10:27:15)
201