tips for specific environments
[unix-history] / usr / src / usr.sbin / sendmail / src / READ_ME
index 9f3cb68..1cb7e30 100644 (file)
@@ -4,7 +4,7 @@
 #
 # %sccs.include.redist.sh%
 #
 #
 # %sccs.include.redist.sh%
 #
-#      @(#)READ_ME     8.11 (Berkeley) %G%
+#      @(#)READ_ME     8.19 (Berkeley) %G%
 #
 
 This directory contains the source files for sendmail.
 #
 
 This directory contains the source files for sendmail.
@@ -13,19 +13,61 @@ For detailed instructions, please read the document ../doc/op.me:
 
        eqn ../doc/op.me | pic | ditroff -me
 
 
        eqn ../doc/op.me | pic | ditroff -me
 
-The Makefile is for the new Berkeley make, available from ftp.uu.net
-in the directory /systems/unix/bsd-sources/usr.bin/make.  There is
-also a Makefile.dist which is much less clever, but works on the old
-traditional make.  You can use this using:
+The Makefile is for the new (4.4BSD) Berkeley make, available from
+ftp.uu.net in the directory /systems/unix/bsd-sources/usr.bin/make.
+It has assumptions about the 4.4 file system layout built in.  There
+is also a Makefile.dist which is much less clever, but works on the
+old traditional make.  You can use this using:
 
        make -f Makefile.dist
 
 
        make -f Makefile.dist
 
-There are a couple of other Makefiles for other systems -- these are
+There are a bunch of other Makefiles for other systems -- these are
 the ones that I use, they have "Berkeley quirks" in them, and I don't
 the ones that I use, they have "Berkeley quirks" in them, and I don't
-guarantee that they will work in your environment.  To make it worse,
-some are for the new Berkeley make, and some are for the old make.
-I provide them for information only.  Still, they may help you get
-started.  They have names like "Makefile.HPUX".
+guarantee that they will work unmodified in your environment.  However,
+they are all designed for the old make and can be used to help you get
+started.  They have names like "Makefile.HPUX".  Many of them include
+-I/usr/sww/include/db and -L/usr/sww/lib -- this is Berkeley's
+location for the new database libraries, described below.
+
+There is also a shell script (makesendmail) that tries to be clever
+about using object subdirectories.  It's pretty straightforward, and
+may help if you share a source tree among different architectures.
+
+
++----------------------+
+| DATABASE DEFINITIONS |
++----------------------+
+
+There are several database formats that can be used for the alias files
+and for general maps.  When used for alias files they interact in an
+attempt to be back compatible.
+
+The three options are NEWDB (the new Berkeley DB package), NDBM (the
+older DBM implementation -- the very old V7 implementation is no
+longer supported), and NIS (Network Information Services).  Used alone
+these just include the support they indicate.
+
+If NEWDB and NDBM are defined (but not NIS), then sendmail will read
+NDBM format alias files, but the next time a newaliases is run the
+format will be converted to NEWDB; that format will be used forever
+more.  This is intended as a transition feature.  [Note however that
+the NEWDB library also catches and maps NDBM calls; you will have to
+back out this feature to get this to work.  See ``Quirks'' section
+below for details.]
+
+If all three are defined, sendmail operates as described above, and also
+looks for the file /var/yp/Makefile.  If it exists, newaliases will
+build BOTH the NEWDB and NDBM format alias files.  However, it will
+only use the NEWDB file; the NDBM format file is used only by the
+NIS subsystem.
+
+If NDBM and NIS are defined (regardless of the definition of NEWDB
+or the existance of /var/yp/Makefile), sendmail adds the special
+tokens "YP_LAST_MODIFIED" and "YP_MASTER_NAME", both of which are
+required if the NDBM file is to be used as an NIS map.
+
+All of -DNEWDB, -DNDBM, and -DNIS are normally defined in the DBMDEF
+line in the Makefile.
 
 
 +---------------+
 
 
 +---------------+
@@ -39,7 +81,7 @@ symbols availble, requiring the following compilation flags in the
 Makefile:
 
 SOLARIS                Define this if you are running Solaris 2.0 or higher.
 Makefile:
 
 SOLARIS                Define this if you are running Solaris 2.0 or higher.
-__NeXT__       Define this if you are on a NeXT box.  (This one may
+NeXT           Define this if you are on a NeXT box.  (This one may
                be pre-defined for you.)  There are other hacks you
                have to make -- see below.
 _AIX3          Define this if you are IBM AIX 3.x.
                be pre-defined for you.)  There are other hacks you
                have to make -- see below.
 _AIX3          Define this if you are IBM AIX 3.x.
@@ -132,23 +174,18 @@ Several are assumed based on other compilation flags -- if you want to
 flags that add support for special features include:
 
 NDBM           Include support for "new" DBM library for aliases and maps.
 flags that add support for special features include:
 
 NDBM           Include support for "new" DBM library for aliases and maps.
+               Normally defined in the Makefile.
 NEWDB          Include support for Berkeley "db" package (hash & btree)
 NEWDB          Include support for Berkeley "db" package (hash & btree)
-               for aliases and maps.
+               for aliases and maps.  Normally defined in the Makefile.
 NIS            Define this to get NIS (YP) support for aliases and maps.
 NIS            Define this to get NIS (YP) support for aliases and maps.
-YPCOMPAT       Define this to force building of DBM versions of alias
-               files even if you have NEWDB defined; this will only
-               occur on NIS master machines.  It is independent of NIS.
+               Normally defined in the Makefile.
 USERDB         Include support for the User Information Database.  Implied
 USERDB         Include support for the User Information Database.  Implied
-               by NEWDB conf.h.
+               by NEWDB in conf.h.
 IDENTPROTO     Define this to get IDENT (RFC 1413) protocol support.
                This is assumed unless you are running on Ultrix or
                HP-UX, both of which have a problem in the UDP
                implementation.
 MIME           Include support for MIME-encapsulated error messages.
 IDENTPROTO     Define this to get IDENT (RFC 1413) protocol support.
                This is assumed unless you are running on Ultrix or
                HP-UX, both of which have a problem in the UDP
                implementation.
 MIME           Include support for MIME-encapsulated error messages.
-FROZENCONFIG   Define this to get support for frozen configuration
-               files.  Frozen configurations make sense if your I/O system
-               is fast relative to your processor.  At this point this
-               is NOT recommended.
 LOG            Set this to get syslog(3) support.  Defined by default
                in conf.h.  You want this if at all possible.
 NETINET                Set this to get TCP/IP support.  Defined by default
 LOG            Set this to get syslog(3) support.  Defined by default
                in conf.h.  You want this if at all possible.
 NETINET                Set this to get TCP/IP support.  Defined by default
@@ -178,25 +215,64 @@ SETPROCTITLE      Try to set the string printed by "ps" to something
 | OPERATING SYSTEM AND COMPILE QUIRKS |
 +-------------------------------------+
 
 | OPERATING SYSTEM AND COMPILE QUIRKS |
 +-------------------------------------+
 
-If you are compiling on SunOS and want to use frozen configuration
-files, you must use -Bstatic -- if you do not, frozen configuration
-files fail in bizarre ways and you will open up several security holes.
+SunOS
+       You may have to use -lresolv on SunOS.
+
+Solaris
+       From a correspondent:
+
+          For solaris 2.2, I have 
+
+               hosts:      files dns
+
+          in /etc/nsswitch.conf and /etc/hosts has to have the fully
+          qualified host name. I think "files" has to be before "dns"
+          in /etc/nsswitch.conf during bootup.
+
+OSF/1
+       If you are compiling on OSF/1 (DEC Alpha), you must use -lmld.
+
+NeXT
+       If you are compiling on NeXT, you will have to create an empty
+       file "unistd.h" and create a file "dirent.h" containing:
+
+               #include <sys/dir.h>
+               #define dirent  direct
+
+       (The Makefile.NeXT should try to do both of these for you.)
+
+       Apparently, there is a bug in getservbyname on Nextstep 3.0
+       that causes it to fail under some circumstances with the
+       message "SYSERR: service "smtp" unknown" logged.  You should
+       be able to work around this by including the line:
 
 
-You may have to use -lresolv on SunOS.
+               OPort=25
 
 
-If you are compiling on OSF/1 (DEC Alpha), you must use -lmld.
+       in your .cf file.
 
 
-If you are compiling on NeXT, you will have to create an empty file
-"unistd.h" and create a file "dirent.h" containing:
+BSDI (BSD/386)
+       I have reports that the "m4" from BSDI won't handle the config
+       files properly.  I haven't had a chance to test this myself.
 
 
-       #include <sys/dir.h>
-       #define dirent  direct
+4.3BSD
+       If you are running a "virgin" version of 4.3BSD, you'll have
+       a very old resolver and be missing some header files.  The
+       header files are simple -- create empty versions and everything
+       will work fine.  For the resolver you should really port a new
+       version (4.8.3 or later) of the resolver; 4.9 is available on
+       gatekeeper.DEC.COM in pub/BSD/bind/4.9.  If you are really
+       determined to continue to use your old, buggy version (or as
+       a shortcut to get sendmail working -- I'm sure you have the
+       best intentions to port a modern version of BIND), you can
+       copy ../contrib/oldbind.compat.c into src and add
+       oldbind.compat.o to OBJADD in the Makefile.
 
 
-If you use both -DNDBM and -DNEWDB, you must delete the module ndbm.o
-from libdb.a and delete the file "ndbm.h" from the files that get
-installed (that is, use the OLD ndbm.h, not the new ndbm.h).  This
-compatibility module maps ndbm calls into DB calls, and breaks things
-rather badly.
+Both NEWDB and NDBM
+       If you use both -DNDBM and -DNEWDB, you must delete the module
+       ndbm.o from libdb.a and delete the file "ndbm.h" from the files
+       that get installed (that is, use the OLD ndbm.h, not the new
+       ndbm.h).  This compatibility module maps ndbm calls into DB
+       calls, and breaks things rather badly.
 
 
 +-----------------------------+
 
 
 +-----------------------------+
@@ -262,4 +338,4 @@ version.c   The version number and information about this
 
 Eric Allman
 
 
 Eric Allman
 
-(Version 8.11, last update %G% 21:38:10)
+(Version 8.19, last update %G% 11:22:15)