summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormillert <millert@openbsd.org>1998-07-12 17:09:17 +0000
committermillert <millert@openbsd.org>1998-07-12 17:09:17 +0000
commit9f10690ddec870ec23333353809cf00c10f801b1 (patch)
treef26d202a00375ff1c980e5c53973bebccdda2900
parentmore BUGS. (diff)
downloadwireguard-openbsd-9f10690ddec870ec23333353809cf00c10f801b1.tar.xz
wireguard-openbsd-9f10690ddec870ec23333353809cf00c10f801b1.zip
sendmail 8.9.1
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/depend/BSD.m48
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/depend/CC-M.m48
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/depend/NCR.m48
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/depend/Solaris.m48
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/depend/X11.m45
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/depend/generic.m48
-rw-r--r--usr.sbin/sendmail/BuildTools/M4/header.m432
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/386BSD7
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/A-UX11
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/AIX10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/AIX.218
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/AIX.4.211
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/AIX.4.312
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/AIX.4.x10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Altos12
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/BSD-OS8
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/BSD4321
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/CLIX14
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/CRAYT3E.2.0.x11
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/CSOS9
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/ConvexOS11
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Dell15
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/DomainOS18
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/DomainOS.10.415
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Dynix13
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/EWS-UX_V29
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/FreeBSD3
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/HP-UX12
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/HP-UX.10.x11
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/HP-UX.11.x11
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX13
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX.5.x13
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX.6.535
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX.6.x35
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX64.6.034
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX64.6.134
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/IRIX64.6.x35
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/ISC10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/KSR7
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/LUNA46
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Linux5
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Linux.ppc3
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Mach38611
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.2.x15
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.3.x15
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NEWS-OS.4.x14
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NEWS-OS.6.x28
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NEXTSTEP.4.x28
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NeXT.2.x20
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NeXT.3.x28
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NeXT.4.x29
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NetBSD4
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NetBSD.8.33
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/NonStop-UX16
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/OSF19
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/OpenBSD3
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/PTX10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Paragon8
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/PowerUX9
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/QNX15
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/RISCos25
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/RISCos.4_025
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SCO9
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SCO.4.211
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SCO.5.x10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SINIX12
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SVR414
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.4.015
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.122
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.222
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.320
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.420
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.520
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.620
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/SunOS.5.720
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/Titan13
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/ULTRIX10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/UMAX15
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/UNICOS9
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/UNIX_SV.4.x.i38614
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/UX480024
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/UXPDS.V1015
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/UXPDS.V2022
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/dcosx.1.x.NILE6
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/dgux10
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/maxion14
-rw-r--r--usr.sbin/sendmail/BuildTools/OS/uts.systemV26
-rw-r--r--usr.sbin/sendmail/BuildTools/README110
-rw-r--r--usr.sbin/sendmail/BuildTools/Site/README16
-rw-r--r--usr.sbin/sendmail/BuildTools/bin/Build513
-rw-r--r--usr.sbin/sendmail/BuildTools/bin/configure.sh163
-rw-r--r--usr.sbin/sendmail/BuildTools/bin/find_m4.sh82
-rw-r--r--usr.sbin/sendmail/BuildTools/bin/install.sh128
-rw-r--r--usr.sbin/sendmail/LICENSE89
-rw-r--r--usr.sbin/sendmail/Makefile.dist26
-rw-r--r--usr.sbin/sendmail/README386
-rw-r--r--usr.sbin/sendmail/cf/cf/Build28
-rw-r--r--usr.sbin/sendmail/cf/feature/accept_unqualified_senders.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/accept_unresolvable_domains.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/access_db.m418
-rw-r--r--usr.sbin/sendmail/cf/feature/allmasquerade.m434
-rw-r--r--usr.sbin/sendmail/cf/feature/always_add_domain.m434
-rw-r--r--usr.sbin/sendmail/cf/feature/bitdomain.m445
-rw-r--r--usr.sbin/sendmail/cf/feature/blacklist_recipients.m418
-rw-r--r--usr.sbin/sendmail/cf/feature/domaintable.m436
-rw-r--r--usr.sbin/sendmail/cf/feature/local_lmtp.m420
-rw-r--r--usr.sbin/sendmail/cf/feature/loose_relay_check.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/mailertable.m436
-rw-r--r--usr.sbin/sendmail/cf/feature/nocanonify.m434
-rw-r--r--usr.sbin/sendmail/cf/feature/nodns.m437
-rw-r--r--usr.sbin/sendmail/cf/feature/nouucp.m434
-rw-r--r--usr.sbin/sendmail/cf/feature/promiscuous_relay.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/rbl.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/relay_based_on_MX.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/relay_entire_domain.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/relay_hosts_only.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/relay_local_from.m415
-rw-r--r--usr.sbin/sendmail/cf/feature/use_cw_file.m434
-rw-r--r--usr.sbin/sendmail/cf/feature/uucpdomain.m445
-rw-r--r--usr.sbin/sendmail/cf/hack/cssubdomain.m434
-rw-r--r--usr.sbin/sendmail/cf/ostype/qnx.m421
-rw-r--r--usr.sbin/sendmail/contrib/converting.sun.configs2
-rw-r--r--usr.sbin/sendmail/contrib/doublebounce.pl232
-rw-r--r--usr.sbin/sendmail/contrib/mail.local.linux205
-rw-r--r--usr.sbin/sendmail/doc/changes/changes.ps1129
-rw-r--r--usr.sbin/sendmail/doc/intro/intro.me34
-rw-r--r--usr.sbin/sendmail/doc/intro/intro.ps1338
-rw-r--r--usr.sbin/sendmail/doc/usenix/usenix.ps1034
-rw-r--r--usr.sbin/sendmail/mailstats/Makefile.m497
-rw-r--r--usr.sbin/sendmail/makemap/Makefile.m4110
-rw-r--r--usr.sbin/sendmail/praliases/Makefile.m4104
-rw-r--r--usr.sbin/sendmail/smrsh/Makefile.m496
-rw-r--r--usr.sbin/sendmail/src/Makefile.m4149
-rw-r--r--usr.sbin/sendmail/src/README1442
-rw-r--r--usr.sbin/sendmail/src/mailstats.h41
-rw-r--r--usr.sbin/sendmail/src/snprintf.c428
137 files changed, 9567 insertions, 387 deletions
diff --git a/usr.sbin/sendmail/BuildTools/M4/depend/BSD.m4 b/usr.sbin/sendmail/BuildTools/M4/depend/BSD.m4
new file mode 100644
index 00000000000..661f69ec12e
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/depend/BSD.m4
@@ -0,0 +1,8 @@
+# @(#)BSD.m4 8.3 (Berkeley) 2/9/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ mkdep -a -f Makefile ${COPTS} *.c
+
+# End of BSD.m4
diff --git a/usr.sbin/sendmail/BuildTools/M4/depend/CC-M.m4 b/usr.sbin/sendmail/BuildTools/M4/depend/CC-M.m4
new file mode 100644
index 00000000000..01d82662b1b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/depend/CC-M.m4
@@ -0,0 +1,8 @@
+# @(#)CC-M.m4 8.2 (Berkeley) 2/19/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -M ${COPTS} *.c >> Makefile
+
+# End of CC-M.m4
diff --git a/usr.sbin/sendmail/BuildTools/M4/depend/NCR.m4 b/usr.sbin/sendmail/BuildTools/M4/depend/NCR.m4
new file mode 100644
index 00000000000..03e0c10dd38
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/depend/NCR.m4
@@ -0,0 +1,8 @@
+# @(#)NCR.m4 8.3 (Berkeley) 2/19/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -w0 -Hmake ${COPTS} *.c >> Makefile
+
+# End of NCR.m4
diff --git a/usr.sbin/sendmail/BuildTools/M4/depend/Solaris.m4 b/usr.sbin/sendmail/BuildTools/M4/depend/Solaris.m4
new file mode 100644
index 00000000000..cbdc618abfc
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/depend/Solaris.m4
@@ -0,0 +1,8 @@
+# @(#)Solaris.m4 8.1 (Berkeley) 3/5/98
+depend: ${BEFORE}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -xM ${COPTS} *.c >> Makefile
+
+# End of Solaris.m4
diff --git a/usr.sbin/sendmail/BuildTools/M4/depend/X11.m4 b/usr.sbin/sendmail/BuildTools/M4/depend/X11.m4
new file mode 100644
index 00000000000..27f90361f4c
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/depend/X11.m4
@@ -0,0 +1,5 @@
+# @(#)X11.m4 8.1 (Berkeley) 4/8/98
+depend: ${BEFORE}
+ makedepend -- ${COPTS} -- *.c
+
+# End of X11.m4
diff --git a/usr.sbin/sendmail/BuildTools/M4/depend/generic.m4 b/usr.sbin/sendmail/BuildTools/M4/depend/generic.m4
new file mode 100644
index 00000000000..e7452d9e329
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/depend/generic.m4
@@ -0,0 +1,8 @@
+# @(#)generic.m4 8.2 (Berkeley) 2/9/98
+# dependencies
+# gross overkill, and yet still not quite enough....
+${OBJS}: ${SRCDIR}/sendmail.h ${SRCDIR}/conf.h
+
+# give a null "depend" list so that the startup script will work
+depend:
+# End of generic.m4
diff --git a/usr.sbin/sendmail/BuildTools/M4/header.m4 b/usr.sbin/sendmail/BuildTools/M4/header.m4
new file mode 100644
index 00000000000..df216bb9671
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/M4/header.m4
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# @(#)header.m4 8.14 (Berkeley) 5/19/98
+#
+changecom(^A)
+undefine(`format')
+undefine(`hpux')
+ifdef(`pushdef', `',
+ `errprint(`You need a newer version of M4, at least as new as
+System V or GNU')
+ include(NoSuchFile)')
+define(`confABI', `')
+define(`confCC', `cc')
+define(`confSHELL', `/bin/sh')
+define(`confBEFORE', `')
+define(`confLIBDIRS', `')
+define(`confINCDIRS', `')
+define(`confLIBSEARCH', `db bind resolv 44bsd')
+define(`confSITECONFIG', `site.config')
+define(`confBUILDBIN', `../../BuildTools/bin')
+define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
+define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
+define(`APPENDDEF', `define(`$1', ifdef(`$1', `$1 $2', `$2'))')
+define(`PREPENDDEF', `define(`$1', ifdef(`$1', `$2 $1', `$2'))')
diff --git a/usr.sbin/sendmail/BuildTools/OS/386BSD b/usr.sbin/sendmail/BuildTools/OS/386BSD
new file mode 100644
index 00000000000..34af745c8a5
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/386BSD
@@ -0,0 +1,7 @@
+# @(#)386BSD 8.1 (Berkeley) 1/30/98
+define(`confENVDEF', ` -DMIME')
+define(`confLIBS', `-lutil')
+define(`confLINKS', `/usr/sbin/sendmail /usr/bin/newaliases \
+ /usr/sbin/sendmail /usr/bin/mailq \
+ /usr/sbin/sendmail /usr/bin/hoststat \
+ /usr/sbin/sendmail /usr/bin/purgestat')
diff --git a/usr.sbin/sendmail/BuildTools/OS/A-UX b/usr.sbin/sendmail/BuildTools/OS/A-UX
new file mode 100644
index 00000000000..782106d7e15
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/A-UX
@@ -0,0 +1,11 @@
+# @(#)A-UX 8.4 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D_POSIX_SOURCE ')
+define(`confLIBS', `-ldbm -lposix -lUTIL')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/AIX b/usr.sbin/sendmail/BuildTools/OS/AIX
new file mode 100644
index 00000000000..ebf1f123262
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/AIX
@@ -0,0 +1,10 @@
+# @(#)AIX 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-D_AIX3 ')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-ldbm')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/usr.sbin/sendmail/BuildTools/OS/AIX.2 b/usr.sbin/sendmail/BuildTools/OS/AIX.2
new file mode 100644
index 00000000000..3838e893631
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/AIX.2
@@ -0,0 +1,18 @@
+# @(#)AIX.2 8.8 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+SMROOT= /usr/local/newmail
+POPDIVERT
+define(`confMAPDEF', `-DNIS')
+define(`confENVDEF', `-DBSD -DBSD_INCLUDES -DBSD_REMAP_SIGNAL_TO_SIGVEC \
+ -D_PATH_SENDMAILCF=\"${SMROOT}/sendmail.cf\"\
+ -D_PATH_SENDMAILPID=\"${SMROOT}/sendmail.pid\"')
+define(`confOPTIMIZE', `-g')
+define(`confINCDIRS', `-I/u/markw/src/db.1.85/PORT/aixrt/include -I/u/markw/src/db.1.85/PORT/aixrt -I/fs/work/src/bind/include')
+define(`confLIBS', `-lbsd /u/markw/src/db.1.85/PORT/aixrt/libdb.a /usr/local/lib/libgldavg.a /fs/work/src/bind/res/libresolv.a')
+define(`confMBINDIR', `${SMROOT}/bin')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confSTDIR', `${SMROOT}')
+define(`confHFDIR', `${SMROOT}')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/usr.sbin/sendmail/BuildTools/OS/AIX.4.2 b/usr.sbin/sendmail/BuildTools/OS/AIX.4.2
new file mode 100644
index 00000000000..e302f5a1136
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/AIX.4.2
@@ -0,0 +1,11 @@
+# @(#)AIX.4.2 8.5 (Berkeley) 3/14/98
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40200 ')
+define(`confOPTIMIZE', `-O3')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/AIX.4.3 b/usr.sbin/sendmail/BuildTools/OS/AIX.4.3
new file mode 100644
index 00000000000..75a4272f04b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/AIX.4.3
@@ -0,0 +1,12 @@
+# @(#)AIX.4.3 8.4 (Berkeley) 3/14/98
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40300 ')
+define(`confOPTIMIZE', `-O3')
+define(`confCC', `/usr/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/AIX.4.x b/usr.sbin/sendmail/BuildTools/OS/AIX.4.x
new file mode 100644
index 00000000000..f08bfcb4a35
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/AIX.4.x
@@ -0,0 +1,10 @@
+# @(#)AIX.4.x 8.7 (Berkeley) 3/14/98
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4 ')
+define(`confOPTIMIZE', `-O3')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
diff --git a/usr.sbin/sendmail/BuildTools/OS/Altos b/usr.sbin/sendmail/BuildTools/OS/Altos
new file mode 100644
index 00000000000..9c1f301d18d
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Altos
@@ -0,0 +1,12 @@
+# @(#)Altos 8.6 (Berkeley) 2/19/98
+define(`confCC', `gcc')
+define(`confENVDEF', `-DALTOS_SYSTEM_V ')
+define(`confLIBS', `-lsocket -lrpc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/BSD-OS b/usr.sbin/sendmail/BuildTools/OS/BSD-OS
new file mode 100644
index 00000000000..58586dd596f
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/BSD-OS
@@ -0,0 +1,8 @@
+# @(#)BSD-OS 8.8 (Berkeley) 6/3/98
+define(`confMAPDEF', `-DNEWDB -DMAP_REGEX')
+define(`confENVDEF', `-DNETISO')
+define(`confLIBS', `-lutil -lkvm')
+define(`confOPTIMIZE', `-O2')
+define(`confMAN1EXT', `0')
+define(`confMAN5EXT', `0')
+define(`confMAN8EXT', `0')
diff --git a/usr.sbin/sendmail/BuildTools/OS/BSD43 b/usr.sbin/sendmail/BuildTools/OS/BSD43
new file mode 100644
index 00000000000..1bbccea2c7f
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/BSD43
@@ -0,0 +1,21 @@
+# @(#)BSD43 8.5 (Berkeley) 3/12/98
+define(`confBEFORE', `unistd.h stddef.h stdlib.h dirent.h sys/time.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DoldBSD43 ')
+define(`confLIBS', `-ldbm -ll')
+define(`confUBINDIR', `/usr/ucb')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+unistd.h stddef.h stdlib.h sys/time.h:
+ cp /dev/null $@
+
+sys/time.h: sys
+
+sys:
+ mkdir sys
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/CLIX b/usr.sbin/sendmail/BuildTools/OS/CLIX
new file mode 100644
index 00000000000..69f422965bb
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/CLIX
@@ -0,0 +1,14 @@
+# @(#)CLIX 8.8 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DCLIX ')
+define(`confINCDIRS', `-I/usr/include')
+define(`confLIBS', `-lnsl -lbsd')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `cp')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/CRAYT3E.2.0.x b/usr.sbin/sendmail/BuildTools/OS/CRAYT3E.2.0.x
new file mode 100644
index 00000000000..6f5abb5de39
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/CRAYT3E.2.0.x
@@ -0,0 +1,11 @@
+# @(#)CRAYT3E.2.0.x 8.1 (Berkeley) 4/21/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DUNICOS ')
+define(`confOPTIMIZE', `-O')
+define(`confINSTALL', `cpset')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bin')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', ` //usr/spool/mqueue')
+define(`confHFDIR', ` /usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/CSOS b/usr.sbin/sendmail/BuildTools/OS/CSOS
new file mode 100644
index 00000000000..3a995c9496f
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/CSOS
@@ -0,0 +1,9 @@
+# @(#)CSOS 8.5 (Berkeley) 2/8/98
+define(`confLIBS', `-lnet')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/usr.sbin/sendmail/BuildTools/OS/ConvexOS b/usr.sbin/sendmail/BuildTools/OS/ConvexOS
new file mode 100644
index 00000000000..8ea990c6e66
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/ConvexOS
@@ -0,0 +1,11 @@
+# @(#)ConvexOS 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DYPCOMPAT -DNIS')
+define(`confENVDEF', `-D__STDC__ -d non_int_bit_field')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-lshare')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/Dell b/usr.sbin/sendmail/BuildTools/OS/Dell
new file mode 100644
index 00000000000..2b9c1ea44a1
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Dell
@@ -0,0 +1,15 @@
+# @(#)Dell 8.8 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ ')
+define(`confOPTIMIZE', `-O2')
+define(`confLIBS', `-ldbm -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucblib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/DomainOS b/usr.sbin/sendmail/BuildTools/OS/DomainOS
new file mode 100644
index 00000000000..ee6be2726b8
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/DomainOS
@@ -0,0 +1,18 @@
+# @(#)DomainOS 8.6 (Berkeley) 6/24/98
+define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confSBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/DomainOS.10.4 b/usr.sbin/sendmail/BuildTools/OS/DomainOS.10.4
new file mode 100644
index 00000000000..a92051b6bef
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/DomainOS.10.4
@@ -0,0 +1,15 @@
+# @(#)DomainOS.10.4 8.1 (Berkeley) 6/24/98
+define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
+define(`confBEFORE', `dirent.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confSBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/Dynix b/usr.sbin/sendmail/BuildTools/OS/Dynix
new file mode 100644
index 00000000000..2781e49d1c1
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Dynix
@@ -0,0 +1,13 @@
+# @(#)Dynix 8.7 (Berkeley) 2/26/98
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-O -g')
+define(`confLIBS', `-lseq')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `staff # no kmem group,')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confOBJADD', `strtol.o')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/EWS-UX_V b/usr.sbin/sendmail/BuildTools/OS/EWS-UX_V
new file mode 100644
index 00000000000..bf11275a2cd
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/EWS-UX_V
@@ -0,0 +1,29 @@
+# @(#)EWS-UX_V 8.6 (Berkeley) 3/12/98
+define(`confCC', `/usr/abiccs/bin/cc -KOlimit=900')
+define(`confBEFORE', `sysexits.h ndbm.h ndbm.o')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-Dnec_ews_svr4 ')
+define(`confLIBS', `ndbm.o -lsocket -lnsl -lelf # # with NDBM')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
+ echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
+ cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
+ echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
+# ln -s /usr/abiccs/ucbinclude/sysexits.h .
+
+ndbm.h:
+ ln -s /usr/abiccs/ucbinclude/ndbm.h .
+
+ndbm.o:
+ ar x /usr/abiccs/ucblib/libucb.a ndbm.o
+# ar x /usr/ucblib/libucb.a ndbm.o
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/FreeBSD b/usr.sbin/sendmail/BuildTools/OS/FreeBSD
new file mode 100644
index 00000000000..bec2c599060
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/FreeBSD
@@ -0,0 +1,3 @@
+# @(#)FreeBSD 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confLIBS', `-lutil')
diff --git a/usr.sbin/sendmail/BuildTools/OS/HP-UX b/usr.sbin/sendmail/BuildTools/OS/HP-UX
new file mode 100644
index 00000000000..66d71a45eed
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/HP-UX
@@ -0,0 +1,12 @@
+# @(#)HP-UX 8.9 (Berkeley) 3/14/98
+define(`confCC', `cc -Aa -D_HPUX_SOURCE')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confOPTIMIZE', `+O1')
+define(`confLIBS', `-lndbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/usr.sbin/sendmail/BuildTools/OS/HP-UX.10.x b/usr.sbin/sendmail/BuildTools/OS/HP-UX.10.x
new file mode 100644
index 00000000000..a4b3a816048
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/HP-UX.10.x
@@ -0,0 +1,11 @@
+# @(#)HP-UX.10.x 8.10 (Berkeley) 3/21/98
+define(`confCC', `cc -Aa -D_HPUX_SOURCE')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DV4FS ')
+define(`confOPTIMIZE', `+O3')
+define(`confLIBS', `-lndbm')
+define(`confSHELL', `/usr/bin/sh')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confSBINGRP', `mail')
diff --git a/usr.sbin/sendmail/BuildTools/OS/HP-UX.11.x b/usr.sbin/sendmail/BuildTools/OS/HP-UX.11.x
new file mode 100644
index 00000000000..9e13c58e979
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/HP-UX.11.x
@@ -0,0 +1,11 @@
+# @(#)HP-UX.11.x 8.7 (Berkeley) 3/30/98
+define(`confCC', `cc -Ae')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DV4FS -DHPUX11 ')
+define(`confOPTIMIZE', `+O3')
+define(`confLIBS', `-ldbm -lnsl')
+define(`confSHELL', `/usr/bin/sh')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confSBINGRP', `mail')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX b/usr.sbin/sendmail/BuildTools/OS/IRIX
new file mode 100644
index 00000000000..dafbda6a5fb
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX
@@ -0,0 +1,13 @@
+# @(#)IRIX 8.7 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DIRIX ')
+define(`confLIBS', `-lmld -lmalloc -lsun')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX.5.x b/usr.sbin/sendmail/BuildTools/OS/IRIX.5.x
new file mode 100644
index 00000000000..4ac44c29aea
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX.5.x
@@ -0,0 +1,13 @@
+# @(#)IRIX.5.x 8.7 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DIRIX5 ')
+define(`confLIBS', `-lmld -lmalloc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX.6.5 b/usr.sbin/sendmail/BuildTools/OS/IRIX.6.5
new file mode 100644
index 00000000000..3056ff44912
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX.6.5
@@ -0,0 +1,35 @@
+# @(#)IRIX.6.5 8.2 (Berkeley) 4/24/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -n32 New to IRIX 6.2 (default: -mips3)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-n32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6 -DHASSNPRINTF=1 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX.6.x b/usr.sbin/sendmail/BuildTools/OS/IRIX.6.x
new file mode 100644
index 00000000000..c52fd4ea41d
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX.6.x
@@ -0,0 +1,35 @@
+# @(#)IRIX.6.x 8.11 (Berkeley) 4/24/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -n32 New to IRIX 6.2 (default: -mips3)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-n32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.0 b/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.0
new file mode 100644
index 00000000000..5226bb535c5
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.0
@@ -0,0 +1,34 @@
+# @(#)IRIX64.6.0 8.10 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DIRIX64 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confLIBS', `-lelf -lmalloc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.1 b/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.1
new file mode 100644
index 00000000000..4876a8807a4
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.1
@@ -0,0 +1,34 @@
+# @(#)IRIX64.6.1 8.10 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DIRIX64 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confLIBS', `-lelf -lmalloc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.x b/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.x
new file mode 100644
index 00000000000..503df04b42c
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/IRIX64.6.x
@@ -0,0 +1,35 @@
+# @(#)IRIX64.6.x 8.11 (Berkeley) 4/24/98
+PUSHDIVERT(1)
+# Select what ABI we are using -- see abi(5) for details
+# -32 ~ IRIX 5.3 (default: -mips2)
+# - long and pointer are 32 bit
+# -n32 New to IRIX 6.2 (default: -mips3)
+# - long and pointer are 32 bit
+# -64 ~ IRIX 6.1 (default: -mips4)
+# - long and pointer are 64 bit
+# We force ABI here, so then it does not depend on CPU
+#
+# With IDO 6.2 (IRIX 6.2) you need subsystem compiler_dev.sw32.lib
+# for compilation with ABI=-n32 -- alternatively you can set ABI=-32
+# ABI=-64 requires subsystem compiler_dev.sw64.lib, but this runs
+# only with IRIX64 (ie. 64 bit kernels)
+#
+# NOTE: Do not set `confABI' in a site configuration file! The ABI MUST
+# be given on the Build command line using the -E parameter, e.g.:
+#
+# Build -E ABI=-n32
+#
+ABI= confABI
+POPDIVERT
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6 ${ABI} ')
+define(`confLDOPTS', `${ABI}')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confHFDIR', `/etc')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/ISC b/usr.sbin/sendmail/BuildTools/OS/ISC
new file mode 100644
index 00000000000..f07093f660b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/ISC
@@ -0,0 +1,10 @@
+# @(#)ISC 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DISC_UNIX -D_POSIX_SOURCE -D_SYSV3 ')
+define(`confLIBS', `-lyp -lrpc -lndbm -linet -lcposix')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/spool/log')
+define(`confHFDIR', `/usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/KSR b/usr.sbin/sendmail/BuildTools/OS/KSR
new file mode 100644
index 00000000000..d3931a46405
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/KSR
@@ -0,0 +1,7 @@
+# @(#)KSR 8.4 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `installbsd')
diff --git a/usr.sbin/sendmail/BuildTools/OS/LUNA b/usr.sbin/sendmail/BuildTools/OS/LUNA
new file mode 100644
index 00000000000..2a0fe1d78c2
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/LUNA
@@ -0,0 +1,46 @@
+# @(#)LUNA 8.8 (Berkeley) 3/12/98
+define(`confBEFORE', `dirent.h stddef.h stdlib.h unistd.h limits.h time.h sys/time.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+
+stddef.h unistd.h limits.h:
+ if [ -f /usr/include/$@ ]; then \
+ ln -s /usr/include/$@ .; \
+ else \
+ cp /dev/null $@; \
+ fi
+
+stdlib.h:
+ if [ -f /usr/include/stdlib.h ]; then \
+ ln -s /usr/include/stdlib.h .; \
+ else \
+ if [ -f /usr/include/libc.h ]; then \
+ ln -s /usr/include/libc.h stdlib.h; \
+ else \
+ cp /dev/null stdlib.h; \
+ fi; \
+ fi
+
+# just for UNIOS-B
+time.h:
+ echo "#ifndef _LOCAL_TIME_H_" > time.h
+ echo "#define _LOCAL_TIME_H_" >> time.h
+ cat /usr/include/time.h >> time.h
+ echo "#endif" >> time.h
+
+sys/time.h:
+ -mkdir sys
+ echo "#ifndef _LOCAL_SYS_TIME_H_" > sys/time.h
+ echo "#define _LOCAL_SYS_TIME_H_" >> sys/time.h
+ cat /usr/include/sys/time.h >> sys/time.h
+ echo "#endif" >> sys/time.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/Linux b/usr.sbin/sendmail/BuildTools/OS/Linux
new file mode 100644
index 00000000000..e908c478a94
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Linux
@@ -0,0 +1,5 @@
+# @(#)Linux 8.4 (Berkeley) 3/22/98
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confMANROOT', `/usr/man/man')
diff --git a/usr.sbin/sendmail/BuildTools/OS/Linux.ppc b/usr.sbin/sendmail/BuildTools/OS/Linux.ppc
new file mode 100644
index 00000000000..d2c3cafa7ca
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Linux.ppc
@@ -0,0 +1,3 @@
+# @(#)Linux.ppc 8.3 (Berkeley) 2/12/98
+define(`confHFDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
diff --git a/usr.sbin/sendmail/BuildTools/OS/Mach386 b/usr.sbin/sendmail/BuildTools/OS/Mach386
new file mode 100644
index 00000000000..98147812046
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Mach386
@@ -0,0 +1,11 @@
+# @(#)Mach386 8.6 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.2.x b/usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.2.x
new file mode 100644
index 00000000000..74d73340167
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.2.x
@@ -0,0 +1,15 @@
+# @(#)NCR.MP-RAS.2.x 8.9 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNCR_MP_RAS2 ')
+define(`confOPTIMIZE', `-O2')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lnsl -lnet -lsocket -lelf -lc -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `NCR')
diff --git a/usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.3.x b/usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.3.x
new file mode 100644
index 00000000000..14e02e3ab05
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NCR.MP-RAS.3.x
@@ -0,0 +1,15 @@
+# @(#)NCR.MP-RAS.3.x 8.9 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNCR_MP_RAS3 ')
+define(`confOPTIMIZE', `-O2')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lsocket -lnsl -lelf -lc -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `NCR')
diff --git a/usr.sbin/sendmail/BuildTools/OS/NEWS-OS.4.x b/usr.sbin/sendmail/BuildTools/OS/NEWS-OS.4.x
new file mode 100644
index 00000000000..4fa83bbb7c4
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NEWS-OS.4.x
@@ -0,0 +1,14 @@
+# @(#)NEWS-OS.4.x 8.6 (Berkeley) 3/12/98
+define(`confBEFORE', `limits.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+limits.h:
+ touch limits.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/NEWS-OS.6.x b/usr.sbin/sendmail/BuildTools/OS/NEWS-OS.6.x
new file mode 100644
index 00000000000..dec79b5e9ec
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NEWS-OS.6.x
@@ -0,0 +1,28 @@
+# @(#)NEWS-OS.6.x 8.8 (Berkeley) 3/12/98
+define(`confCC', `/bin/cc')
+define(`confBEFORE', `sysexits.h ndbm.o')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSYSLOG_BUFSIZE=256 # -DSPT_TYPE=SPT_NONE ')
+define(`confLIBS', `ndbm.o -lelf -lsocket -lnsl # # with NDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ ln -s /usr/ucbinclude/sysexits.h .
+
+ndbm.o:
+ if [ ! -f /usr/include/ndbm.h ]; then \
+ ln -s /usr/ucbinclude/ndbm.h .; \
+ fi; \
+ if [ -f /usr/lib/libndbm.a ]; then \
+ ar x /usr/lib/libndbm.a ndbm.o; \
+ else \
+ ar x /usr/ucblib/libucb.a ndbm.o; \
+ fi;
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/NEXTSTEP.4.x b/usr.sbin/sendmail/BuildTools/OS/NEXTSTEP.4.x
new file mode 100644
index 00000000000..4fd6b038608
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NEXTSTEP.4.x
@@ -0,0 +1,28 @@
+# @(#)NEXTSTEP.4.x 8.1 (Berkeley) 3/21/98
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/NeXT.2.x b/usr.sbin/sendmail/BuildTools/OS/NeXT.2.x
new file mode 100644
index 00000000000..d8f46949504
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NeXT.2.x
@@ -0,0 +1,20 @@
+# @(#)NeXT.2.x 8.7 (Berkeley) 3/12/98
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT ')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/NeXT.3.x b/usr.sbin/sendmail/BuildTools/OS/NeXT.3.x
new file mode 100644
index 00000000000..05aad6f85a5
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NeXT.3.x
@@ -0,0 +1,28 @@
+# @(#)NeXT.3.x 8.7 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/NeXT.4.x b/usr.sbin/sendmail/BuildTools/OS/NeXT.4.x
new file mode 100644
index 00000000000..35f3bdb35e5
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NeXT.4.x
@@ -0,0 +1,29 @@
+# @(#)NeXT.4.x 8.8 (Berkeley) 5/25/98
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confMANROOT', `/usr/lib/man/cat')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc/sendmail')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/NetBSD b/usr.sbin/sendmail/BuildTools/OS/NetBSD
new file mode 100644
index 00000000000..595fd2df289
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NetBSD
@@ -0,0 +1,4 @@
+# @(#)NetBSD 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/NetBSD.8.3 b/usr.sbin/sendmail/BuildTools/OS/NetBSD.8.3
new file mode 100644
index 00000000000..6576660f44e
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NetBSD.8.3
@@ -0,0 +1,3 @@
+# @(#)NetBSD.8.3 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` # -DNETISO')
diff --git a/usr.sbin/sendmail/BuildTools/OS/NonStop-UX b/usr.sbin/sendmail/BuildTools/OS/NonStop-UX
new file mode 100644
index 00000000000..02bdb7801d4
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/NonStop-UX
@@ -0,0 +1,16 @@
+# @(#)NonStop-UX 8.8 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNonStop_UX_BXX -D_SVID ')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lsocket -lnsl -lelf -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/OSF1 b/usr.sbin/sendmail/BuildTools/OS/OSF1
new file mode 100644
index 00000000000..cc65dbc7844
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/OSF1
@@ -0,0 +1,9 @@
+# @(#)OSF1 8.7 (Berkeley) 3/14/98
+define(`confCC', `cc -Olimit 1000')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `installbsd')
+define(`confUBINDIR', `${BINDIR}')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/OpenBSD b/usr.sbin/sendmail/BuildTools/OS/OpenBSD
new file mode 100644
index 00000000000..fb7bc8f42c3
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/OpenBSD
@@ -0,0 +1,3 @@
+# @(#)OpenBSD 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO')
diff --git a/usr.sbin/sendmail/BuildTools/OS/PTX b/usr.sbin/sendmail/BuildTools/OS/PTX
new file mode 100644
index 00000000000..9af372792a8
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/PTX
@@ -0,0 +1,10 @@
+# @(#)PTX 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-lsocket -linet -lelf -lnsl -lseq')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/Paragon b/usr.sbin/sendmail/BuildTools/OS/Paragon
new file mode 100644
index 00000000000..e16e051f734
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Paragon
@@ -0,0 +1,8 @@
+# @(#)Paragon 8.3 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confHFDIR', `/usr/share/lib')
+define(`confINSTALL', `installbsd')
+define(`confUBINDIR', `${BINDIR}')
diff --git a/usr.sbin/sendmail/BuildTools/OS/PowerUX b/usr.sbin/sendmail/BuildTools/OS/PowerUX
new file mode 100644
index 00000000000..b0f133d0a8c
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/PowerUX
@@ -0,0 +1,9 @@
+# @(#)PowerUX 8.5 (Berkeley) 2/12/98
+define(`confENVDEF', `-D__svr4__ ')
+define(`confLIBS', `-Bstatic -lsocket -lnsl -lelf -lgen')
+define(`confMBINDIR', `/usr/local/etc')
+define(`confSBINDIR', `/usr/local/etc')
+define(`confUBINDIR', `/usr/local/bin')
+define(`confEBINDIR', `/usr/local/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/usr.sbin/sendmail/BuildTools/OS/QNX b/usr.sbin/sendmail/BuildTools/OS/QNX
new file mode 100644
index 00000000000..3cc01821afc
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/QNX
@@ -0,0 +1,15 @@
+# @(#)QNX 8.4 (Berkeley) 2/19/98
+PUSHDIVERT(1)
+#
+# For this Makefile to work you must compile and install the libdb package
+# and then change DBMINC and DBMLIB as appropriate.
+#
+DBMINC= /usr/local/include
+DBMLIB= /usr/local/lib
+POPDIVERT
+define(`confENVDEF', `-Osax -w4 -zc -fr= -D__BIT_TYPES_DEFINED__')
+define(`confINCDIRS', `${DBMINC}')
+define(`confLIBDIRS', `${DBMLIB}')
+define(`confLIBS', `-lsocket')
+define(`confLDOPTS', `-M -N256k')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/usr.sbin/sendmail/BuildTools/OS/RISCos b/usr.sbin/sendmail/BuildTools/OS/RISCos
new file mode 100644
index 00000000000..1888ae69161
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/RISCos
@@ -0,0 +1,25 @@
+# @(#)RISCos 8.5 (Berkeley) 3/12/98
+define(`confCC', `cc -systype bsd43 -Olimit 900')
+define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DRISCOS ')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `/usr/bsd43/bin/install')
+PUSHDIVERT(3)
+stdlib.h stddef.h:
+ cp /dev/null $@
+
+unistd.h:
+ echo "typedef unsigned short mode_t;" > unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/RISCos.4_0 b/usr.sbin/sendmail/BuildTools/OS/RISCos.4_0
new file mode 100644
index 00000000000..e057fb433cf
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/RISCos.4_0
@@ -0,0 +1,25 @@
+# @(#)RISCos.4_0 8.6 (Berkeley) 3/12/98
+define(`confCC', `cc -systype bsd43 -Olimit 900')
+define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DRISCOS -DRISCOS_4_0 ')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+stdlib.h stddef.h:
+ cp /dev/null $@
+
+unistd.h:
+ echo "typedef unsigned short mode_t;" > unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SCO b/usr.sbin/sendmail/BuildTools/OS/SCO
new file mode 100644
index 00000000000..a72ba53eebe
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SCO
@@ -0,0 +1,9 @@
+# @(#)SCO 8.3 (Berkeley) 2/8/98
+define(`confENVDEF', `-D_SCO_unix_ ')
+define(`confLIBS', `-lsocket -lprot_s -lx -lc_s')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/SCO.4.2 b/usr.sbin/sendmail/BuildTools/OS/SCO.4.2
new file mode 100644
index 00000000000..027f7300667
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SCO.4.2
@@ -0,0 +1,11 @@
+# @(#)SCO.4.2 8.5 (Berkeley) 6/30/98
+define(`confENVDEF', `-D_SCO_unix_4_2 ')
+define(`confLIBS', `-lsocket -lndbm -lprot_s -lx -lc_s')
+define(`confMAPDEF', `-DNDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `bin')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/usr.sbin/sendmail/BuildTools/OS/SCO.5.x b/usr.sbin/sendmail/BuildTools/OS/SCO.5.x
new file mode 100644
index 00000000000..8f095ac5aed
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SCO.5.x
@@ -0,0 +1,10 @@
+# @(#)SCO.5.x 8.10 (Berkeley) 6/30/98
+define(`confCC', `cc -b elf')
+define(`confLIBS', `-lsocket -lndbm -lprot -lcurses -lm -lx -lgen')
+define(`confMAPDEF', `-DMAP_REGEX -DNDBM')
+define(`confSBINGRP', `bin')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bin')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
diff --git a/usr.sbin/sendmail/BuildTools/OS/SINIX b/usr.sbin/sendmail/BuildTools/OS/SINIX
new file mode 100644
index 00000000000..93cc7813501
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SINIX
@@ -0,0 +1,12 @@
+# @(#)SINIX 8.5 (Berkeley) 2/12/98
+define(`confCC', `/usr/bin/cc')
+define(`confENVDEF', `-D__svr4__ ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/usr.sbin/sendmail/BuildTools/OS/SVR4 b/usr.sbin/sendmail/BuildTools/OS/SVR4
new file mode 100644
index 00000000000..f342c3feeb3
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SVR4
@@ -0,0 +1,14 @@
+# @(#)SVR4 8.6 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ ')
+define(`confLIBS', `-ldbm -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS b/usr.sbin/sendmail/BuildTools/OS/SunOS
new file mode 100644
index 00000000000..2a8897825ac
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS
@@ -0,0 +1,10 @@
+# @(#)SunOS 8.6 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLDOPTS', `-Bstatic')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.4.0 b/usr.sbin/sendmail/BuildTools/OS/SunOS.4.0
new file mode 100644
index 00000000000..05bbc57d504
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.4.0
@@ -0,0 +1,15 @@
+# @(#)SunOS.4.0 8.6 (Berkeley) 3/12/98
+define(`confBEFORE', `stdlib.h stddef.h limits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSUNOS403 ')
+define(`confLDOPTS', `-Bstatic')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/etc')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h stdlib.h limits.h:
+ cp /dev/null $@
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.1 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.1
new file mode 100644
index 00000000000..2383609ef14
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.1
@@ -0,0 +1,22 @@
+# @(#)SunOS.5.1 8.8 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSOLARIS=20100 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.2 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.2
new file mode 100644
index 00000000000..5e635db694e
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.2
@@ -0,0 +1,22 @@
+# @(#)SunOS.5.2 8.8 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSOLARIS=20100 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.3 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.3
new file mode 100644
index 00000000000..8f64d219b7b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.3
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.3 8.8 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
+define(`confENVDEF', `-DSOLARIS=20300 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.4 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.4
new file mode 100644
index 00000000000..65e84002c7b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.4
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.4 8.10 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
+define(`confENVDEF', `-DSOLARIS=20400 ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.5 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.5
new file mode 100644
index 00000000000..267f16d22a1
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.5
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.5 8.11 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20500 ')
+define(`confLIBS', `-lsocket -lnsl -lkstat')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.6 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.6
new file mode 100644
index 00000000000..0537007008d
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.6
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.6 8.10 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20600 ')
+define(`confLIBS', `-lsocket -lnsl -lkstat')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/SunOS.5.7 b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.7
new file mode 100644
index 00000000000..b030e77c650
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/SunOS.5.7
@@ -0,0 +1,20 @@
+# @(#)SunOS.5.7 8.11 (Berkeley) 3/21/98
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20700 ')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/etc/mail')
+define(`confHFDIR', `/etc/mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/Titan b/usr.sbin/sendmail/BuildTools/OS/Titan
new file mode 100644
index 00000000000..b66820089fd
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/Titan
@@ -0,0 +1,13 @@
+# @(#)Titan 8.5 (Berkeley) 3/12/98
+define(`confCC', `cc -43')
+define(`confBEFORE', `stddef.h stdlib.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h stdlib.h:
+ cp /dev/null $@
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/ULTRIX b/usr.sbin/sendmail/BuildTools/OS/ULTRIX
new file mode 100644
index 00000000000..f5df633e52e
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/ULTRIX
@@ -0,0 +1,10 @@
+# @(#)ULTRIX 8.7 (Berkeley) 3/12/98
+define(`confCC', `cc -Olimit 950')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DIDENTPROTO=0 ')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/UMAX b/usr.sbin/sendmail/BuildTools/OS/UMAX
new file mode 100644
index 00000000000..450c91da750
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/UMAX
@@ -0,0 +1,15 @@
+# @(#)UMAX 8.5 (Berkeley) 3/12/98
+define(`confBEFORE', `stddef.h')
+define(`confMAPDEF', `-DNIS')
+define(`confENVDEF', `-DUMAXV ')
+define(`confLIBS', `-lyp -lrpc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h:
+ echo "#define _STDDEF_H" > stddef.h
+ chmod 444 stddef.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/UNICOS b/usr.sbin/sendmail/BuildTools/OS/UNICOS
new file mode 100644
index 00000000000..7984fa927c9
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/UNICOS
@@ -0,0 +1,9 @@
+# @(#)UNICOS 8.7 (Berkeley) 2/26/98
+define(`confENVDEF', `-DUNICOS ')
+define(`confOPTIMIZE', `-O')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', ` /etc/mail')
+define(`confHFDIR', ` /etc/mail')
diff --git a/usr.sbin/sendmail/BuildTools/OS/UNIX_SV.4.x.i386 b/usr.sbin/sendmail/BuildTools/OS/UNIX_SV.4.x.i386
new file mode 100644
index 00000000000..a6865e786ae
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/UNIX_SV.4.x.i386
@@ -0,0 +1,14 @@
+# @(#)UNIX_SV.4.x.i386 8.6 (Berkeley) 3/12/98
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ -DUNIXWARE ')
+define(`confLIBS', `-lc -ldbm -lsocket -lnsl -lgen -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/usr.sbin/sendmail/BuildTools/OS/UX4800 b/usr.sbin/sendmail/BuildTools/OS/UX4800
new file mode 100644
index 00000000000..207b370baa0
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/UX4800
@@ -0,0 +1,24 @@
+# @(#)UX4800 8.8 (Berkeley) 3/12/98
+define(`confCC', `/usr/abiccs/bin/cc -KOlimit=900')
+define(`confBEFORE', `sysexits.h ndbm.h')
+define(`confMAPDEF', `-DNDBM -DNIS # without NEWDB')
+define(`confENVDEF', `-DHASSNPRINTF=1 ')
+define(`confLIBS', `-lsocket -lnsl -lelf # # without NEWDB')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var/ucblib')
+define(`confHFDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
+ echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
+ cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
+ echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
+
+ndbm.h:
+ sed 's/void/char/' /usr/abiccs/include/ndbm.h > ndbm.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/UXPDS.V10 b/usr.sbin/sendmail/BuildTools/OS/UXPDS.V10
new file mode 100644
index 00000000000..bf301403437
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/UXPDS.V10
@@ -0,0 +1,15 @@
+# @(#)UXPDS.V10 8.9 (Berkeley) 3/12/98
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DUXPDS=10 ')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBS', `/usr/ucblib/libdbm.a /usr/ucblib/libucb.a -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confMANROOT', `/usr/local/man/man')
diff --git a/usr.sbin/sendmail/BuildTools/OS/UXPDS.V20 b/usr.sbin/sendmail/BuildTools/OS/UXPDS.V20
new file mode 100644
index 00000000000..cacdb4af68b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/UXPDS.V20
@@ -0,0 +1,22 @@
+# @(#)UXPDS.V20 8.8 (Berkeley) 3/12/98
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confBEFORE', `netinet/ip_var.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DUXPDS=20 ')
+define(`confLIBS', `/usr/ucblib/libdbm.a -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/ucblib')
+define(`confHFDIR', `/usr/ucblib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confMANROOT', `/usr/local/man/man')
+PUSHDIVERT(3)
+netinet/ip_var.h: netinet /usr/include/netinet/ip_var.h
+ sed '/ip_var_f.h/d' /usr/include/netinet/ip_var.h > netinet/ip_var.h
+
+netinet:
+ mkdir netinet
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/OS/dcosx.1.x.NILE b/usr.sbin/sendmail/BuildTools/OS/dcosx.1.x.NILE
new file mode 100644
index 00000000000..900afcd632b
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/dcosx.1.x.NILE
@@ -0,0 +1,6 @@
+# @(#)dcosx.1.x.NILE 8.3 (Berkeley) 2/8/98
+define(`confENVDEF', `-D__svr4__ -DDCOSx ')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confHFDIR', `/usr/share/lib/mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confSBINGRP', `sys')
diff --git a/usr.sbin/sendmail/BuildTools/OS/dgux b/usr.sbin/sendmail/BuildTools/OS/dgux
new file mode 100644
index 00000000000..7d6d867b1ec
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/dgux
@@ -0,0 +1,10 @@
+# @(#)dgux 8.5 (Berkeley) 3/12/98
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/bin')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `bin')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/etc')
diff --git a/usr.sbin/sendmail/BuildTools/OS/maxion b/usr.sbin/sendmail/BuildTools/OS/maxion
new file mode 100644
index 00000000000..3bb6e0e2e2c
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/maxion
@@ -0,0 +1,14 @@
+# @(#)maxion 8.6 (Berkeley) 3/12/98
+define(`confCC', `/usr/ucb/cc')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-ldbm -lgen -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINOWN', `smtp')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/var/adm/log')
+define(`confHFDIR', `/etc/ucbmail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/usr.sbin/sendmail/BuildTools/OS/uts.systemV b/usr.sbin/sendmail/BuildTools/OS/uts.systemV
new file mode 100644
index 00000000000..c5f841fb5ab
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/OS/uts.systemV
@@ -0,0 +1,26 @@
+# @(#)uts.systemV 8.10 (Berkeley) 3/12/98
+PUSHDIVERT(1)
+# Sendmail 8 on UTS requires BIND 4.9's include files and lib44bsd and
+# libresolv libraries. The BIND version on UTS is much too old.
+#
+BINDPATH=../../../bind
+POPDIVERT
+define(`confBEFORE', `stddef.h')
+define(`confMAPDEF', `-DNIS -DNDBM')
+define(`confENVDEF', `-D_UTS ')
+define(`confOPTIMIZE', `-g')
+define(`confINCDIRS', `-I${BINDPATH}/include -I${BINDPATH}/compat/include')
+define(`confLIBDIRS', `-L${BINDPATH}/res -L${BINDPATH}/compat/lib')
+define(`confLIBS', `-lyp -lrpc -lbsd -lsocket -la')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+stddef.h:
+ echo "#include <sys/types.h>" > stddef.h
+POPDIVERT
diff --git a/usr.sbin/sendmail/BuildTools/README b/usr.sbin/sendmail/BuildTools/README
new file mode 100644
index 00000000000..0efc1548b39
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/README
@@ -0,0 +1,110 @@
+This directory contains tools. Do not attempt to actually build
+anything in this directory.
+
+The Build script allows you to specify a site configuration file by using
+the -f flag:
+
+ Build -f siteconfig.m4
+
+You can put such site configuration files in the Site sub-directory;
+see Site/README for details.
+
+While building a site configuration file, you can add to a definition
+using the APPENDDEF() and PREPENDDEF() macros. For example:
+
+ APPENDDEF(`confINCDIRS', `-I/usr/local/bind/include')
+
+will add -I/usr/local/bind/include to the already existing confINCDIRS.
+Note: There must be no trailing spaces after the last quote mark and
+before the closing parenthesis. Also you may need to properly quote
+m4 reserved words as specified by your vendor's m4 command.
+
+By default, sendmail will search your system for include and library
+directories as well as certain libraries (libdb.* for Berkeley DB and
+libbind.a or libresolv.* for name resolution). You can turn off this
+configuration step by specifying the -S flag with the Build command.
+
+The OS subtree contains definitions for variations on a standard
+model for system installation. The M4 variables that can be defined
+and their defaults before referencing the appropriate OS definitons
+are:
+
+confBEFORE [empty] Files to create before sendmail is
+ compiled. The methods must be defined
+ in the Makefile using PUSHDIVERT(3).
+confBUILDBIN ../../BuildTools/bin
+ The location of the build support
+ binaries, relative to the obj.*
+ directory.
+confCC cc The C compiler to use.
+confOPTIMIZE -O Flags passed to CC as ${O}.
+confDEPEND_TYPE generic How to build dependencies. This should
+ be the name of a file in
+ BuildTools/M4/depend
+confEBINDIR /usr/libexec The location for binaries executed
+ from other binaries, e.g., mail.local
+ or smrsh.
+confENVDEF [empty] -D flags passed to cc.
+confHFDIR /usr/share/misc Location of the sendmail help file.
+confINCDIRS [empty] -I flags passed to cc.
+confINSTALL install The BSD-compatible install program.
+ Use ${BUILDBIN}/install.sh if none
+ is available on your system.
+confLDOPTS [empty] Linker options passed to ld.
+confLIBDIRS [empty] -L flags passed to ld.
+confLIBS [varies] -l flags passed to ld.
+confLIBSEARCH db bind resolv 44bsd
+ Search for these libraries for
+ linking with programs.
+confLINKS ${UBINDIR}/newaliases ${UBINDIR}/mailq \
+ ${UBINDIR}/hoststat ${UBINDIR}/purgestat
+ Names of links to sendmail.
+confMANROOT /usr/share/man/cat The root of the man subtree.
+confMAN1 confMANROOT 1 The location of man1 files.
+confMAN1EXT 1 The extension on files in confMAN1.
+confMAN1SRC 0 The source for man pages installed
+ in confMAN1.
+confMAN5 confMANROOT 5 The location of man5 files.
+confMAN5EXT 5 The extension on files in confMAN5.
+confMAN5SRC 0 The source for man pages installed
+ in confMAN5.
+confMAN8 confMANROOT 8 The location of man8 files.
+confMAN8EXT 8 The extension on files in confMAN8.
+confMAN8SRC 0 The source for man pages installed
+ in confMAN8.
+confMANDOC -mandoc The macros used to format man pages.
+confMANOWN bin The owner of installed man pages.
+confMANGRP bin The group of installed man pages.
+confMANMODE 444 The mode of installed man pages.
+confMAPDEF [varies] The map definitions, e.g.,
+ -DNDBM -DNEWDB. -DNEWDB is always
+ added if a libdb.a can be found.
+confNO_MAN_INSTALL [undefined] If defined, don't install the man
+ pages by default.
+confMBINDIR /usr/sbin The location of the MTA (sendmail)
+ binary.
+confNROFF groff -Tascii The command to format man pages.
+confOBJADD [empty] Objects that should be included in
+ when linking sendmail and the
+ associated utilities.
+confSBINDIR /usr/sbin The location of root-oriented
+ commands, such as makemap.
+confSBINOWN root The owner for setuid binaries.
+confSBINGRP kmem The group for setuid binaries.
+confSBINMODE 4555 The mode for setuid binaries.
+confSHELL /bin/sh The shell to use inside make.
+confSMOBJADD [empty] Objects that should be included in
+ when linking sendmail.
+confSRCDIR ../../src The sendmail source directory
+ relative to support program obj.*
+ directories.
+confSTDIR /var/log The directory in which to store the
+ sendmail status file.
+confUBINDIR /usr/bin The directory for user-executable
+ binaries.
+confUBINOWN bin The owner for user-executable binaries.
+confUBINGRP bin The group for user-executable binaries.
+confUBINMODE 555 The mode for user-executable binaries.
+
+
+@(#)README 8.22 (Berkeley) 6/30/98
diff --git a/usr.sbin/sendmail/BuildTools/Site/README b/usr.sbin/sendmail/BuildTools/Site/README
new file mode 100644
index 00000000000..d5ecb96001d
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/Site/README
@@ -0,0 +1,16 @@
+The Build script will look for the default site configuration files in
+this directory. Build will include the following files if they are
+present in this directory:
+
+ site.OS.$SENDMAIL_SUFFIX.m4
+ site.OS.m4
+ site.config.m4
+
+OS is the name of the operating system file selected from the BuildTools/OS
+directory. SENDMAIL_SUFFIX is a user environment variable which can be
+used to further distinguish between site configuration files in this
+directory.
+
+See the README in the BuildTools directory for more information.
+
+@(#)README 8.3 (Berkeley) 3/27/98
diff --git a/usr.sbin/sendmail/BuildTools/bin/Build b/usr.sbin/sendmail/BuildTools/bin/Build
new file mode 100644
index 00000000000..ab8a49d78ca
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/bin/Build
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.93 (Berkeley) 6/24/98
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+siteconfig=""
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -c) # clean out existing $obj tree
+ cflag=1
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ fi
+ fi
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ shift
+ ;;
+ esac
+done
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS.2.x
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS.3.x
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) rela=$rel
+ rel=`uname -v`
+ case $rel in
+ 2) arch=""
+ ;;
+ 4) if [ "$rela" = "3" ]
+ then
+ arch=$rela
+ fi
+ ;;
+ esac
+ rel=$rel.$rela
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+echo "Configuration: os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx"
+
+
+SMROOT=${SMROOT-..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+# now try to find a reasonable object directory
+if [ -r obj.$os.$rel.$arch$sfx ]; then
+ obj=obj.$os.$rel.$arch$sfx
+elif [ -r obj.$os.$rroot.$arch$sfx ]; then
+ obj=obj.$os.$rroot.$arch$sfx
+elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
+ obj=obj.$os.$rbase.x.$arch$sfx
+elif [ -r obj.$os.$rel$sfx ]; then
+ obj=obj.$os.$rel$sfx
+elif [ -r obj.$os.$rbase.x$sfx ]; then
+ obj=obj.$os.$rbase.x$sfx
+elif [ -r obj.$os.$arch$sfx ]; then
+ obj=obj.$os.$arch$sfx
+elif [ -r obj.$rel.$arch$sfx ]; then
+ obj=obj.$rel.$arch$sfx
+elif [ -r obj.$rbase.x.$arch$sfx ]; then
+ obj=obj.$rbase.x.$arch$sfx
+elif [ -r obj.$os$sfx ]; then
+ obj=obj.$os$sfx
+elif [ -r obj.$arch$sfx ]; then
+ obj=obj.$arch$sfx
+elif [ -r obj.$rel$sfx ]; then
+ obj=obj.$rel$sfx
+elif [ -r obj$sfx ]; then
+ obj=obj$sfx
+fi
+if [ -z "$obj" -o "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ else
+ # no existing obj directory -- try to create one if Makefile found
+ obj=obj.$os.$rel.$arch$sfx
+ fi
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $arch.$os.$rel" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit 0
+ fi
+ if [ "$ABI" ]
+ then
+ echo "Using ABI $ABI"
+ fi
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ mkdir $obj
+ (cd $obj; ln -s ../*.[ch158] .)
+ if [ -f sendmail.hf ]
+ then
+ (cd $obj; ln -s ../sendmail.hf .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ if [ "$ABI" ]
+ then
+ echo "define(\`confABI', \`$ABI')" >> $obj/.settings$$
+ fi
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ if [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', confINCDIRS \`\`$incdirs'')" >> $obj/.settings$$
+ fi
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" SITECONFIG="$siteconfig" sh $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' $obj/.settings$$ | \
+ ${M4} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' > $obj/Makefile
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit 0
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} $makeargs
diff --git a/usr.sbin/sendmail/BuildTools/bin/configure.sh b/usr.sbin/sendmail/BuildTools/bin/configure.sh
new file mode 100644
index 00000000000..eb149b2cdd4
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/bin/configure.sh
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)configure.sh 8.27 (Berkeley) 5/19/98
+
+#
+# Special script to autoconfigure for M4 generation of Makefile
+#
+
+os=""
+resolver=""
+sflag=""
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -s) # skip auto-configure
+ sflag=1
+ shift
+ ;;
+
+ *) # OS definition
+ os=$1
+ shift
+ ;;
+ esac
+done
+
+usewhoami=0
+usehostname=0
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/whoami ]
+ then
+ usewhoami=1
+ if [ $usehostname -ne 0 ]
+ then
+ break;
+ fi
+ fi
+ if [ -f $p/hostname ]
+ then
+ usehostname=1
+ if [ $usewhoami -ne 0 ]
+ then
+ break;
+ fi
+ fi
+done
+if [ $usewhoami -ne 0 ]
+then
+ user=`whoami`
+else
+ user=$LOGNAME
+fi
+
+if [ $usehostname -ne 0 ]
+then
+ host=`hostname`
+else
+ host=`uname -n`
+fi
+echo "PUSHDIVERT(0)"
+echo "####################################################################"
+echo "##### This file is automatically generated -- edit at your own risk"
+echo '#####' Built by $user@$host
+echo '#####' on `date` using template OS/$os
+if [ ! -z "$SITECONFIG" ]
+then
+ echo '#####' including $SITECONFIG
+fi
+echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
+echo "####################################################################"
+echo ""
+echo "POPDIVERT"
+echo "define(\`__HOST__', \`$host')dnl"
+echo "ifdef(\`confMAPDEF',, \`define(\`confMAPDEF', \`')')dnl"
+echo "ifdef(\`confLIBS',, \`define(\`confLIBS', \`')')dnl"
+
+# If user did not supply ABI for Build, use SGI_ABI
+# so the proper libraries are checked below.
+if [ -z "$ABI" ]
+then
+ ABI="$SGI_ABI"
+fi
+
+case $ABI
+in
+ -n32) LIBDIRS="$LIBDIRS /lib32 /usr/lib32"
+ ;;
+ -64) LIBDIRS="$LIBDIRS /lib64 /usr/lib64"
+ ;;
+ *) LIBDIRS="$LIBDIRS /lib /usr/lib /usr/shlib"
+ ;;
+esac
+
+libs=""
+mapdef=""
+for l in $LIBSRCH
+do
+ for p in `echo $LIBDIRS | sed -e 's/:/ /g' -e 's/^-L//g' -e 's/ -L/ /g'`
+ do
+ if [ "x$p" = "x" ]
+ then
+ p = "."
+ fi
+ if [ -f $p/lib$l.a -o -f $p/lib$l.so ]
+ then
+ case $l
+ in
+ db)
+ mapdef="$mapdef -DNEWDB"
+ ;;
+ bind|resolv)
+ if [ -n "$resolver" ]
+ then
+ continue
+ else
+ resolver=$l
+ fi
+ ;;
+ 44bsd)
+ if [ "x$resolver" != "xresolv" ]
+ then
+ continue
+ fi
+ ;;
+ esac
+ libs="$libs -l$l"
+ break
+ fi
+ done
+done
+
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ pbase=`echo $p | sed -e 's,/bin,,'`
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/mkdep ]
+ then
+ echo "ifdef(\`confDEPEND_TYPE',, \`define(\`confDEPEND_TYPE', \`BSD')')dnl"
+ fi
+done
+
+if [ -z "$sflag" ]
+then
+ echo "define(\`confMAPDEF', \`$mapdef' confMAPDEF)dnl"
+ echo "define(\`confLIBS', \`$libs' confLIBS)dnl"
+fi
diff --git a/usr.sbin/sendmail/BuildTools/bin/find_m4.sh b/usr.sbin/sendmail/BuildTools/bin/find_m4.sh
new file mode 100644
index 00000000000..d2cf66556d8
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/bin/find_m4.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)find_m4.sh 8.4 (Berkeley) 5/19/98
+#
+
+# Try to find a working M4 program.
+# If $M4 is already set, we use it, otherwise we prefer GNU m4.
+
+EX_UNAVAILABLE=69
+
+test="ifdef(\`pushdef', \`',
+\`errprint(\`You need a newer version of M4, at least as new as System V or GNU')
+include(NoSuchFile)')
+define(\`BadNumber', \`10')
+ifdef(\`BadNumber', \`', \`errprint(\`This version of m4 is broken')')"
+
+if [ "$M4" ]
+then
+ err=`(echo "$test" | $M4) 2>&1 >/dev/null`
+ code=$?
+else
+ firstfound=
+ ifs="$IFS"; IFS="${IFS}:"
+ for m4 in gm4 gnum4 pdm4 m4
+ do
+ for dir in $PATH /usr/5bin /usr/ccs/bin
+ do
+ [ -z "$dir" ] && dir=.
+ if [ -f $dir/$m4 ]
+ then
+ err=`(echo "$test" | $dir/$m4) 2>&1 >/dev/null`
+ ret=$?
+ if [ $ret -eq 0 -a "X$err" = "X" ]
+ then
+ M4=$dir/$m4
+ code=0
+ break
+ else
+ case "$firstfound:$err" in
+ :*version\ of*)
+ firstfound=$dir/$m4
+ firsterr="$err"
+ firstcode=$ret
+ ;;
+ esac
+ fi
+ fi
+ done
+ [ "$M4" ] && break
+ done
+ IFS="$ifs"
+ if [ ! "$M4" ]
+ then
+ if [ "$firstfound" ]
+ then
+ M4=$firstfound
+ err="$firsterr"
+ code=$firstcode
+ else
+ echo "ERROR: Can not locate an M4 program" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ fi
+fi
+if [ $code -ne 0 ]
+then
+ echo "ERROR: Using M4=$M4: $err" | grep -v NoSuchFile >&2
+ exit $EX_UNAVAILABLE
+elif [ "X$err" != "X" ]
+then
+ echo "WARNING: $err" >&2
+fi
+echo $M4
+exit 0
+
diff --git a/usr.sbin/sendmail/BuildTools/bin/install.sh b/usr.sbin/sendmail/BuildTools/bin/install.sh
new file mode 100644
index 00000000000..58f7623a147
--- /dev/null
+++ b/usr.sbin/sendmail/BuildTools/bin/install.sh
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)install.sh 8.9 (Berkeley) 5/19/98
+
+# Set default program
+program=mv
+
+# chown program -- ultrix keeps it in /etc/chown and /usr/etc/chown
+if [ -f /etc/chown ]
+then
+ chown=/etc/chown
+elif [ -f /usr/etc/chown ]
+then
+ chown=/usr/etc/chown
+else
+ chown=chown
+fi
+
+# Check arguments
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -o) owner=$2
+ shift; shift
+ ;;
+
+ -g) group=$2
+ shift; shift
+ ;;
+
+ -m) mode=$2
+ shift; shift
+ ;;
+
+ -c) program=cp
+ shift
+ ;;
+
+ -s) strip="strip"
+ shift
+ ;;
+
+ -*) echo $0: Unknown option $1
+ exit 1
+ ;;
+
+ *) break
+ ;;
+ esac
+done
+
+# Check source file
+if [ -z "$1" ]
+then
+ echo "Source file required" >&2
+ exit 1
+elif [ -f $1 -o $1 = /dev/null ]
+then
+ src=$1
+else
+ echo "Source file must be a regular file or /dev/null" >&2
+ exit 1
+fi
+
+# Check destination
+if [ -z "$2" ]
+then
+ echo "Destination required" >&2
+ exit 1
+elif [ -d $2 ]
+then
+ dst=$2/$src
+else
+ dst=$2
+fi
+
+# Do install operation
+$program $src $dst
+if [ $? != 0 ]
+then
+ exit 1
+fi
+
+# Strip if requested
+if [ ! -z "$strip" ]
+then
+ $strip $dst
+fi
+
+# Change owner if requested
+if [ ! -z "$owner" ]
+then
+ $chown $owner $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+# Change group if requested
+if [ ! -z "$group" ]
+then
+ chgrp $group $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+# Change mode if requested
+if [ ! -z "$mode" ]
+then
+ chmod $mode $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+exit 0
diff --git a/usr.sbin/sendmail/LICENSE b/usr.sbin/sendmail/LICENSE
new file mode 100644
index 00000000000..bb1c3a79c7f
--- /dev/null
+++ b/usr.sbin/sendmail/LICENSE
@@ -0,0 +1,89 @@
+ SENDMAIL LICENSE
+
+The following license terms and conditions apply, unless a different
+license is obtained from Sendmail, Inc., 1401 Park Avenue, Emeryville, CA
+94608, or by electronic mail at license@sendmail.com.
+
+License Terms:
+
+Use, Modification and Redistribution (including distribution of any
+modified or derived work) in source and binary forms is permitted only if
+each of the following conditions is met:
+
+1. Redistributions qualify as "freeware" or "Open Source Software" under
+ one of the following terms:
+
+ (a) Redistributions are made at no charge beyond the reasonable cost of
+ materials and delivery.
+
+ (b) Redistributions are accompanied by a copy of the Source Code or by an
+ irrevocable offer to provide a copy of the Source Code for up to three
+ years at the cost of materials and delivery. Such redistributions
+ must allow further use, modification, and redistribution of the Source
+ Code under substantially the same terms as this license. For the
+ purposes of redistribution "Source Code" means the complete source
+ code of sendmail including all modifications.
+
+ Other forms of redistribution are allowed only under a separate royalty-
+ free agreement permitting such redistribution subject to standard
+ commercial terms and conditions. A copy of such agreement may be
+ obtained from Sendmail, Inc. at the above address.
+
+2. Redistributions of source code must retain the copyright notices as they
+ appear in each source code file, these license terms, and the
+ disclaimer/limitation of liability set forth as paragraph 6 below.
+
+3. Redistributions in binary form must reproduce the Copyright Notice,
+ these license terms, and the disclaimer/limitation of liability set
+ forth as paragraph 6 below, in the documentation and/or other materials
+ provided with the distribution. For the purposes of binary distribution
+ the "Copyright Notice" refers to the following language:
+ "Copyright (c) 1998 Sendmail, Inc. All rights reserved."
+
+4. Neither the name of Sendmail, Inc. nor the University of California nor
+ the names of their contributors may be used to endorse or promote
+ products derived from this software without specific prior written
+ permission. The name "sendmail" is a trademark of Sendmail, Inc.
+
+5. All redistributions must comply with the conditions imposed by the
+ University of California on certain embedded code, whose copyright
+ notice and conditions for redistribution are as follows:
+
+ (a) Copyright (c) 1988, 1993 The Regents of the University of
+ California. All rights reserved.
+
+ (b) Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ (i) Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ (ii) Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ (iii) All advertising materials mentioning features or use of this
+ software must display the following acknowledgement: "This
+ product includes software developed by the University of
+ California, Berkeley and its contributors."
+
+ (iv) Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+6. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY
+ SENDMAIL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ NO EVENT SHALL SENDMAIL, INC., THE REGENTS OF THE UNIVERSITY OF
+ CALIFORNIA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+(Version 8.6, last updated 6/24/98)
diff --git a/usr.sbin/sendmail/Makefile.dist b/usr.sbin/sendmail/Makefile.dist
new file mode 100644
index 00000000000..0b44c420319
--- /dev/null
+++ b/usr.sbin/sendmail/Makefile.dist
@@ -0,0 +1,26 @@
+# @(#)Makefile.dist 8.2 (Berkeley) 2/17/98
+
+SHELL= /bin/sh
+SUBDIRS= src mail.local mailstats makemap praliases rmail smrsh
+BUILD= ./Build
+OPTIONS= $(CONFIG) $(FLAGS)
+
+all clean install:: FRC
+ @for x in $(SUBDIRS); \
+ do \
+ (cd $$x; echo Making $@ in:; pwd; \
+ $(SHELL) $(BUILD) $(OPTIONS) $@); \
+ done
+
+fresh:: FRC
+ @for x in $(SUBDIRS); \
+ do \
+ (cd $$x; echo Making $@ in:; pwd; \
+ $(SHELL) $(BUILD) $(OPTIONS) -c); \
+ done
+
+$(SUBDIRS):: FRC
+ @cd $@; pwd; \
+ $(SHELL) $(BUILD) $(OPTIONS)
+
+FRC:
diff --git a/usr.sbin/sendmail/README b/usr.sbin/sendmail/README
new file mode 100644
index 00000000000..5de10764212
--- /dev/null
+++ b/usr.sbin/sendmail/README
@@ -0,0 +1,386 @@
+/*-
+ * @(#)README 8.48 (Berkeley) 5/19/98
+ */
+
+ SENDMAIL RELEASE 8
+
+This directory has the latest sendmail(TM) software from Sendmail, Inc.
+See doc/changes/changes.me for a summary of changes since 5.67.
+
+Report any bugs to sendmail-bugs@sendmail.ORG
+
+There is a web site at http://WWW.Sendmail.ORG -- see that site for
+the latest updates.
+
+******************************************************************
+** DO NOT USE MAKE to compile sendmail. Instead, cd src and **
+** use the "Build" shell script. On many environments this **
+** will do everything for you, no fuss, no muss. See **
+** src/README for more details of compilation. See cf/README **
+** for details about building a runtime configuration file. **
+******************************************************************
+
+Sendmail is a trademark of Sendmail, Inc.
+
++-----------------------+
+| DIRECTORY PERMISSIONS |
++-----------------------+
+
+Sendmail often gets blamed for many problems that are actually the
+result of other problems, such as overly permissive modes on directories.
+For this reason, sendmail checks the modes on system directories and
+files to determine if can have been trusted. For sendmail to run
+without complaining, you MUST execute the following command:
+
+ chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
+ chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
+
+You will probably have to tweak this for your environment (for example,
+some systems put the spool directory into /usr/spool instead of
+/var/spool and use /etc/mail for aliases file instead of /etc). If you
+set the RunAsUser option in your sendmail.cf, the /var/spool/mqueue
+directory will have to be owned by the RunAsUser user. As a general rule,
+after you have compiled sendmail, run the command
+
+ sendmail -v -bi
+
+to initialize the alias database. If it gives messages such as
+
+ WARNING: writable directory /etc
+ WARNING: writable directory /usr/spool/mqueue
+
+then the directories listed have inappropriate write permissions and
+should be secured to avoid various possible security attacks.
+
+Beginning with sendmail 8.9, these checks have become more strict to
+prevent users from being able to access files they would normally not
+be able to read. In particular, .forward and :include: files in unsafe
+directory paths (directory paths which are group or world writable) will
+no longer be allowed. This would mean that if user joe's home directory
+was writable by group staff, sendmail would not use his .forward file.
+This behavior can be altered, at the expense of system security, by
+setting the DontBlameSendmail option. For example, to allow .forward
+files in group writable directories:
+
+ O DontBlameSendmail=forwardfileingroupwritabledirpath
+
+Or to allow them in both group and world writable directories:
+
+ O DontBlameSendmail=forwardfileinunsafedirpath
+
+Items from these unsafe .forward and :include: files will be marked
+as unsafe addresses -- the items can not be deliveries to files or
+programs. This behavior can also be altered via DontBlameSendmail:
+
+ O DontBlameSendmail=forwardfileinunsafedirpath,
+ forwardfileinunsafedirpathsafe
+
+The first flag allows the .forward file to be read, the second allows
+the items in the file to be marked as safe for file and program
+delivery.
+
+Other files affected by this strengthened security include class
+files (i.e. Fw /etc/sendmail.cw), persistent host status files, and
+the files specified by the ErrorHeader and HelpFile options. Similar
+DontBlameSendmail flags are available for the class, ErrorHeader, and
+HelpFile files.
+
+If you have an unsafe configuration of .forward and :include:
+files, you can make it safe by finding all such files, and doing
+a "chmod go-w $FILE" on each. Also, do a "chmod go-w $DIR" for
+each directory in the file's path.
+
+
++--------------+
+| MANUAL PAGES |
++--------------+
+
+The sendmail manual pages use contemporary Berkeley troff macros. If
+your system does not process these manual pages, you can pick up the
+new macros in a BSD Net/2 FTP site (e.g. on FTP.UU.NET, the files
+/systems/unix/bsd-sources/share/tmac/*).
+
+The strip.sed file is only used in installation.
+
+After installation, edit tmac.doc and tmac.andoc to reflect the
+installation path of the tmac files. Those files contain pointers to
+/usr/share/tmac/, and those pointers are not changed by the `make
+install` process. There's also a bug in those files -- make the
+following patch:
+
+*** tmac.an~ Tue Jul 12 14:29:09 1994
+--- tmac.an Fri Jul 15 13:17:54 1994
+***************
+*** 50,55 ****
+ .de TH
+ .rn TH xX
+ .so /usr/share/lib/tmac/tmac.an.old
+! .TH \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+ .rm xX
+ ..
+--- 50,55 ----
+ .de TH
+ .rn TH xX
+ .so /usr/share/lib/tmac/tmac.an.old
+! .TH "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8"
+ .rm xX
+ ..
+
+Rename the existing tmac.an to be tmac.an.old, and rename tmac.andoc
+to be tmac.an.
+
+tmac.an will choose between tmac.an.old, your old macros, or tmac.doc,
+which are the new macros, so that both the new man pages and the
+existing man pages will be translated properly.
+
+I'm also told that the groff distribution from MIT has a tmac.doc
+macro set that is compatible with these macros.
+
+
++-----------------------+
+| RELATED DOCUMENTATION |
++-----------------------+
+
+There are other files you should read. Rooted in this directory are:
+
+ doc/changes/changes.ps
+ Describes changes between Release 5 and Release 8 of sendmail.
+ There are some things that may behave somewhat differently.
+ For example, the rules governing when :include: files will
+ be read have been tightened up for security reasons.
+ FAQ
+ Answers to Frequently Asked Questions.
+ KNOWNBUGS
+ Known bugs in the current release. I try to keep this up
+ to date -- get the latest version from FTP.Sendmail.ORG
+ in /ucb/sendmail/KNOWNBUGS.
+ RELEASE_NOTES
+ A detailed description of the changes in each version. This
+ is quite long, but informative.
+ src/README
+ Details on compiling and installing sendmail.
+ cf/README
+ Details on configuring sendmail.
+ doc/op/op.me
+ The sendmail Installation & Operations Guide. Be warned: if
+ you are running this off on SunOS or some other system with an
+ old version of -me, you need to add the following macro to the
+ macros:
+
+ .de sm
+ \s-1\\$1\\s0\\$2
+ ..
+
+ This sets a word in a smaller pointsize.
+
+
++--------------+
+| RELATED RFCS |
++--------------+
+
+There are several related RFCs that you may wish to read -- they are
+available via anonymous FTP to several sites, including:
+
+ ftp://nic.ddn.mil/rfc/
+ ftp://nis.nsf.net/documents/rfc/
+ ftp://nisc.jvnc.net/rfc/
+ ftp://venera.isi.edu/in-notes/
+ ftp://wuarchive.wustl.edu/doc/rfc/
+
+For a list of the primary repositories see:
+
+ http://www.isi.edu/in-notes/rfc-retrieval.txt
+
+They are also online at:
+
+ http://www.ietf.org/
+
+They can also be retrieved via electronic mail by sending
+email to one of:
+
+ mail-server@nisc.sri.com
+ Put "send rfcNNN" in message body
+ nis-info@nis.nsf.net
+ Put "send RFCnnn.TXT-1" in message body
+ sendrfc@jvnc.net
+ Put "RFCnnn" as Subject: line
+
+For further instructions see:
+
+ http://www.isi.edu/in-notes/rfc-editor/rfc-info
+
+Important RFCs for electronic mail are:
+
+ RFC821 SMTP protocol
+ RFC822 Mail header format
+ RFC974 MX routing
+ RFC976 UUCP mail format
+ RFC1123 Host requirements (modifies 821, 822, and 974)
+ RFC1413 Identification server
+ RFC1869 SMTP Service Extensions (ESMTP spec)
+ RFC1652 SMTP Service Extension for 8bit-MIMEtransport
+ RFC1870 SMTP Service Extension for Message Size Declaration
+ RFC2045 Multipurpose Internet Mail Extensions (MIME) Part One:
+ Format of Internet Message Bodies
+ RFC1344 Implications of MIME for Internet Mail Gateways
+ RFC1428 Transition of Internet Mail from Just-Send-8 to
+ 8-bit SMTP/MIME
+ RFC1891 SMTP Service Extension for Delivery Status Notifications
+ RFC1892 Multipart/Report Content Type for the Reporting of
+ Mail System Administrative Messages
+ RFC1893 Enhanced Mail System Status Codes
+ RFC1894 An Extensible Message Format for Delivery Status
+ Notifications
+ RFC1985 SMTP Service Extension for Remote Message Queue Starting
+
+Other standards that may be of interest (but which are less directly
+relevant to sendmail) are:
+
+ RFC987 Mapping between RFC822 and X.400
+ RFC1049 Content-Type header field (extension to RFC822)
+
+Warning to AIX users: this version of sendmail does not implement
+MB, MR, or MG DNS resource records, as defined (as experiments) in
+RFC1035.
+
+
++-------------------+
+| DATABASE ROUTINES |
++-------------------+
+
+IF YOU WANT TO RUN THE NEW BERKELEY DB SOFTWARE: **** DO NOT ****
+use the version that was on the Net2 tape -- it has a number of
+nefarious bugs that were bad enough when I got them; you shouldn't have
+to go through the same thing. Instead, get a new version via the web at
+http://www.sleepycat.com/. This software is highly recommended; it gets
+rid of several stupid limits, it's much faster, and the interface is
+nicer to animals and plants. If the Berkeley DB include files
+are installed in a location other than those which your compiler searches,
+you will need to provide that directory when building:
+
+ Build -I/path/to/include/directory
+
+If you are using Berkeley DB versions 1.85 or 1.86, you are *strongly*
+urged to upgrade to DB version 2, available from http://www.sleepycat.com/.
+Berkeley DB versions 1.85 and 1.86 are known to be broken in various nasty
+ways (see http://www.sleepycat.com/db.185.html), and can cause sendmail
+to dump core. In addition, the newest versions of gcc and the Solaris
+compilers perform optimizations in those versions that may cause fairly
+random core dumps.
+
+If you have no choice but to use Berkeley DB 1.85 or 1.86, and you are
+using both Berkeley DB and files in the UNIX ndbm format, remove ndbm.h
+and ndbm.o from the DB library after building it. You should also apply
+all of the patches for DB 1.85 and 1.86 found at the Sleepycat web site
+(see http://www.sleepycat.com/db.185.html), as they fix some of the known
+problems.
+
+If you are using a version of Berkeley DB 2 previous to 2.3.15, and you
+are using both Berkeley DB and files in the UNIX ndbm format, remove dbm.o
+from the DB library after building it. No other changes are necessary.
+
+If you are using Berkeley DB version 2.3.15 or greater, no changes are
+necessary.
+
+The underlying database file formats changed between Berkeley DB versions
+1.85 and 1.86, and again between DB 1.86 and version 2.0. If you are
+upgrading from one of those versions, you must recreate your database
+file(s). Do this by rebuilding all maps with makemap and rebuilding the
+alias file with newaliases.
+
+
++--------------------+
+| HOST NAME SERVICES |
++--------------------+
+
+If you are using NIS or /etc/hosts, it is critical that you
+list the long (fully qualified) name somewhere (preferably first) in
+the /etc/hosts file used to build the NIS database. For example, the
+line should read
+
+ 128.32.149.68 mastodon.CS.Berkeley.EDU mastodon
+
+**** NOT ****
+
+ 128.32.149.68 mastodon
+
+If you do not include the long name, sendmail will complain loudly
+about ``unable to qualify my own domain name (mastodon) -- using
+short name'' and conclude that your canonical name is the short
+version and use that in messages. The name "mastodon" doesn't mean
+much outside of Berkeley, and so this creates incorrect and unreplyable
+messages.
+
+
++-------------+
+| USE WITH MH |
++-------------+
+
+This version of sendmail notices and reports certain kinds of SMTP
+protocol violations that were ignored by older versions. If you
+are running MH you may wish to install the patch in contrib/mh.patch
+that will prevent these warning reports. This patch also works
+with the old version of sendmail, so it's safe to go ahead and
+install it.
+
+
++----------------+
+| USE WITH IDENT |
++----------------+
+
+Sendmail 8 supports the IDENT protocol, as defined by RFC 1413.
+No ident server is included with this distribution. I have found
+copies available on:
+
+ ftp.lysator.liu.se /pub/ident/servers
+ romulus.ucs.uoknor.edu /networking/ident/servers
+ ftp.cyf-kr.edu.pl /agh/uciagh/network/ident
+
+If you want to run an IDENT server, I suggest getting a copy from
+one of those sites. Versions are available for several different
+systems, including Apollo, BSD, NeXT, AIX, TOPS20, and VMS.
+
+
++---------------------+
+| DIRECTORY STRUCTURE |
++---------------------+
+
+The structure of this directory tree is:
+
+cf Source for sendmail configuration files. These are
+ different than what you've seen before. They are a
+ fairly dramatic rewrite, requiring the new sendmail
+ (since they use new features).
+contrib Some contributed tools to help with sendmail. THESE
+ ARE NOT SUPPORTED by sendmail -- contact the original
+ authors if you have problems. (This directory is not
+ on the 4.4BSD tape.)
+doc Documentation. If you are getting source, read
+ op.me -- it's long, but worth it.
+mail.local The source for the local delivery agent used for 4.4BSD.
+ THIS IS NOT PART OF SENDMAIL! and may not compile
+ everywhere, since it depends on some 4.4-isms. Warning:
+ it does mailbox locking differently than other systems.
+mailstats Statistics printing program. It has the pathname of
+ sendmail.st compiled in, so if you've changed that,
+ beware.
+makemap A program that creates the keyed maps used by the $( ... $)
+ construct in sendmail. It is primitive but effective.
+ It takes a very simple input format, so you will probably
+ expect to preprocess must human-convenient formats
+ using sed scripts before this program will like them.
+ But it should be functionally complete.
+praliases A program to print the DBM or NEWDB version of the
+ aliases file.
+rmail Source for rmail(8). This is used as a delivery
+ agent for for UUCP, and could presumably be used by
+ other non-socket oriented mailers. Older versions of
+ rmail are probably deficient. RMAIL IS NOT PART OF
+ SENDMAIL!!! The 4.4BSD source is included for you to
+ look at or try to port to your system. I know it doesn't
+ compile on {SunOS, HP-UX, OSF/1, other} (pick one).
+smrsh The "sendmail restricted shell", which can be used as
+ a replacement for /bin/sh in the prog mailer to provide
+ increased security control. NOT PART OF SENDMAIL!
+src Source for the sendmail program itself.
+test Some test scripts (currently only for compilation aids).
diff --git a/usr.sbin/sendmail/cf/cf/Build b/usr.sbin/sendmail/cf/cf/Build
new file mode 100644
index 00000000000..3efaffdcdba
--- /dev/null
+++ b/usr.sbin/sendmail/cf/cf/Build
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)Build 8.3 (Berkeley) 5/19/98
+#
+
+#
+# A quick-and-dirty script to create cf files.
+#
+
+SMROOT=${SMROOT-../..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+
+M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ret=$?
+if [ $ret -ne 0 ]
+then
+ exit $ret
+fi
+echo "Using M4=$M4"
+
+eval exec ${MAKE-make} M4=$M4 $*
diff --git a/usr.sbin/sendmail/cf/feature/accept_unqualified_senders.m4 b/usr.sbin/sendmail/cf/feature/accept_unqualified_senders.m4
new file mode 100644
index 00000000000..16bef782539
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/accept_unqualified_senders.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)accept_unqualified_senders.m4 8.3 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/accept_unresolvable_domains.m4 b/usr.sbin/sendmail/cf/feature/accept_unresolvable_domains.m4
new file mode 100644
index 00000000000..5b7241a314e
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/accept_unresolvable_domains.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)accept_unresolvable_domains.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/access_db.m4 b/usr.sbin/sendmail/cf/feature/access_db.m4
new file mode 100644
index 00000000000..85820723dee
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/access_db.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)access_db.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`ACCESS_TABLE',
+ ifelse(_ARG_, `',
+ DATABASE_MAP_TYPE` -o /etc/mail/access',
+ `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/feature/allmasquerade.m4 b/usr.sbin/sendmail/cf/feature/allmasquerade.m4
index c7cbffa78ea..42121e5cc48 100644
--- a/usr.sbin/sendmail/cf/feature/allmasquerade.m4
+++ b/usr.sbin/sendmail/cf/feature/allmasquerade.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)allmasquerade.m4 8.2 (Berkeley) 1/22/94')
+VERSIONID(`@(#)allmasquerade.m4 8.7 (Berkeley) 5/19/98')
divert(-1)
diff --git a/usr.sbin/sendmail/cf/feature/always_add_domain.m4 b/usr.sbin/sendmail/cf/feature/always_add_domain.m4
index dd572c8130d..e609bf00027 100644
--- a/usr.sbin/sendmail/cf/feature/always_add_domain.m4
+++ b/usr.sbin/sendmail/cf/feature/always_add_domain.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)always_add_domain.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)always_add_domain.m4 8.6 (Berkeley) 5/19/98')
divert(-1)
define(`_ALWAYS_ADD_DOMAIN_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/bitdomain.m4 b/usr.sbin/sendmail/cf/feature/bitdomain.m4
index 85c8cf0017f..be5155bd324 100644
--- a/usr.sbin/sendmail/cf/feature/bitdomain.m4
+++ b/usr.sbin/sendmail/cf/feature/bitdomain.m4
@@ -1,49 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)bitdomain.m4 8.6 (Berkeley) 2/19/94')
+VERSIONID(`@(#)bitdomain.m4 8.13 (Berkeley) 5/19/98')
divert(-1)
-
-PUSHDIVERT(6)
-Kbitdomain ifelse(_ARG_, `', `hash -o /etc/bitdomain', `_ARG_')
-POPDIVERT
-
-
-PUSHDIVERT(2)
-# handle BITNET mapping
-R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3
-POPDIVERT
+define(`BITDOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/bitdomain', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/feature/blacklist_recipients.m4 b/usr.sbin/sendmail/cf/feature/blacklist_recipients.m4
new file mode 100644
index 00000000000..4417fe09369
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/blacklist_recipients.m4
@@ -0,0 +1,18 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)blacklist_recipients.m4 8.9 (Berkeley) 5/19/98')
+divert(-1)
+
+ifdef(`ACCESS_TABLE',
+ `define(`_BLACKLIST_RCPT_', 1)',
+ `errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db)
+')')
diff --git a/usr.sbin/sendmail/cf/feature/domaintable.m4 b/usr.sbin/sendmail/cf/feature/domaintable.m4
index bfad1bcecc4..0bf9f05fb34 100644
--- a/usr.sbin/sendmail/cf/feature/domaintable.m4
+++ b/usr.sbin/sendmail/cf/feature/domaintable.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)domaintable.m4 8.2 (Berkeley) 8/9/93')
+VERSIONID(`@(#)domaintable.m4 8.8 (Berkeley) 5/19/98')
divert(-1)
-define(`DOMAIN_TABLE', ifelse(_ARG_, `', `hash -o /etc/domaintable', `_ARG_'))dnl
+define(`DOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/domaintable', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/feature/local_lmtp.m4 b/usr.sbin/sendmail/cf/feature/local_lmtp.m4
new file mode 100644
index 00000000000..f323b5b1908
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/local_lmtp.m4
@@ -0,0 +1,20 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)local_lmtp.m4 8.5 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`LOCAL_MAILER_PATH',
+ ifelse(_ARG_, `',
+ ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/mail.local',
+ _ARG_))
+define(`LOCAL_MAILER_FLAGS', `SXfmnz9')
+define(`LOCAL_MAILER_ARGS', `mail.local -l')
diff --git a/usr.sbin/sendmail/cf/feature/loose_relay_check.m4 b/usr.sbin/sendmail/cf/feature/loose_relay_check.m4
new file mode 100644
index 00000000000..6e3584b02ed
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/loose_relay_check.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)loose_relay_check.m4 8.3 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_LOOSE_RELAY_CHECK_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/mailertable.m4 b/usr.sbin/sendmail/cf/feature/mailertable.m4
index fa399973bf7..3078261a452 100644
--- a/usr.sbin/sendmail/cf/feature/mailertable.m4
+++ b/usr.sbin/sendmail/cf/feature/mailertable.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)mailertable.m4 8.3 (Berkeley) 8/7/93')
+VERSIONID(`@(#)mailertable.m4 8.9 (Berkeley) 5/19/98')
divert(-1)
-define(`MAILER_TABLE', ifelse(_ARG_, `', `hash -o /etc/mailertable', `_ARG_'))dnl
+define(`MAILER_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/mailertable', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/feature/nocanonify.m4 b/usr.sbin/sendmail/cf/feature/nocanonify.m4
index 0157e6b9e48..6211a8ebec5 100644
--- a/usr.sbin/sendmail/cf/feature/nocanonify.m4
+++ b/usr.sbin/sendmail/cf/feature/nocanonify.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)nocanonify.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)nocanonify.m4 8.6 (Berkeley) 5/19/98')
divert(-1)
define(`_NO_CANONIFY_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/nodns.m4 b/usr.sbin/sendmail/cf/feature/nodns.m4
index 465a5ae4653..26458fc3af8 100644
--- a/usr.sbin/sendmail/cf/feature/nodns.m4
+++ b/usr.sbin/sendmail/cf/feature/nodns.m4
@@ -1,40 +1,21 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)nodns.m4 8.1 (Berkeley) 8/6/93')
+VERSIONID(`@(#)nodns.m4 8.8 (Berkeley) 5/19/98')
divert(-1)
undefine(`confBIND_OPTS')dnl
+errprint(`FEATURE(nodns) is no-op.
+Use ServiceSwitchFile ('ifdef(`confSERVICE_SWITCH_FILE',confSERVICE_SWITCH_FILE,`/etc/service.switch' if your OS does not provide its own)`) instead.
+')
diff --git a/usr.sbin/sendmail/cf/feature/nouucp.m4 b/usr.sbin/sendmail/cf/feature/nouucp.m4
index 8723437b3c7..3c1098cac4e 100644
--- a/usr.sbin/sendmail/cf/feature/nouucp.m4
+++ b/usr.sbin/sendmail/cf/feature/nouucp.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)nouucp.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)nouucp.m4 8.6 (Berkeley) 5/19/98')
divert(-1)
define(`_NO_UUCP_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/promiscuous_relay.m4 b/usr.sbin/sendmail/cf/feature/promiscuous_relay.m4
new file mode 100644
index 00000000000..975afab752d
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/promiscuous_relay.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)promiscuous_relay.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_PROMISCUOUS_RELAY_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/rbl.m4 b/usr.sbin/sendmail/cf/feature/rbl.m4
new file mode 100644
index 00000000000..a9251e04978
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/rbl.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)rbl.m4 8.8 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RBL_', ifelse(_ARG_, `', `rbl.maps.vix.com', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/feature/relay_based_on_MX.m4 b/usr.sbin/sendmail/cf/feature/relay_based_on_MX.m4
new file mode 100644
index 00000000000..44d07116ceb
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/relay_based_on_MX.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_based_on_MX.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_MX_SERVED_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/relay_entire_domain.m4 b/usr.sbin/sendmail/cf/feature/relay_entire_domain.m4
new file mode 100644
index 00000000000..823da1e50ff
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/relay_entire_domain.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_entire_domain.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_ENTIRE_DOMAIN_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/relay_hosts_only.m4 b/usr.sbin/sendmail/cf/feature/relay_hosts_only.m4
new file mode 100644
index 00000000000..98f72c8f82d
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/relay_hosts_only.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_hosts_only.m4 8.7 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_HOSTS_ONLY_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/relay_local_from.m4 b/usr.sbin/sendmail/cf/feature/relay_local_from.m4
new file mode 100644
index 00000000000..549bc9c7423
--- /dev/null
+++ b/usr.sbin/sendmail/cf/feature/relay_local_from.m4
@@ -0,0 +1,15 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+divert(0)
+VERSIONID(`@(#)relay_local_from.m4 8.2 (Berkeley) 5/19/98')
+divert(-1)
+
+define(`_RELAY_LOCAL_FROM_', 1)
diff --git a/usr.sbin/sendmail/cf/feature/use_cw_file.m4 b/usr.sbin/sendmail/cf/feature/use_cw_file.m4
index 33b5ad56ed0..9abf2c1b499 100644
--- a/usr.sbin/sendmail/cf/feature/use_cw_file.m4
+++ b/usr.sbin/sendmail/cf/feature/use_cw_file.m4
@@ -1,40 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)use_cw_file.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)use_cw_file.m4 8.6 (Berkeley) 5/19/98')
divert(-1)
# if defined, the sendmail.cf will read the /etc/sendmail.cw file
diff --git a/usr.sbin/sendmail/cf/feature/uucpdomain.m4 b/usr.sbin/sendmail/cf/feature/uucpdomain.m4
index 77cc97bbe4a..1c6a33a81fa 100644
--- a/usr.sbin/sendmail/cf/feature/uucpdomain.m4
+++ b/usr.sbin/sendmail/cf/feature/uucpdomain.m4
@@ -1,49 +1,18 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)uucpdomain.m4 8.6 (Berkeley) 2/19/94')
+VERSIONID(`@(#)uucpdomain.m4 8.13 (Berkeley) 5/19/98')
divert(-1)
-
-PUSHDIVERT(6)
-Kuudomain ifelse(_ARG_, `', `hash -o /etc/uudomain', `_ARG_')
-POPDIVERT
-
-
-PUSHDIVERT(2)
-# handle UUCP mapping
-R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3
-POPDIVERT
+define(`UUDOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/uudomain', `_ARG_'))dnl
diff --git a/usr.sbin/sendmail/cf/hack/cssubdomain.m4 b/usr.sbin/sendmail/cf/hack/cssubdomain.m4
index 4f270c05f06..b79b69b5b11 100644
--- a/usr.sbin/sendmail/cf/hack/cssubdomain.m4
+++ b/usr.sbin/sendmail/cf/hack/cssubdomain.m4
@@ -1,39 +1,17 @@
divert(-1)
#
-# Copyright (c) 1983 Eric P. Allman
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
#
divert(0)
-VERSIONID(`@(#)cssubdomain.m4 8.1 (Berkeley) 6/7/93')
+VERSIONID(`@(#)cssubdomain.m4 8.6 (Berkeley) 5/19/98')
divert(2)
# find possible (old & new) versions of our name via short circuit hack
diff --git a/usr.sbin/sendmail/cf/ostype/qnx.m4 b/usr.sbin/sendmail/cf/ostype/qnx.m4
new file mode 100644
index 00000000000..10624dde39f
--- /dev/null
+++ b/usr.sbin/sendmail/cf/ostype/qnx.m4
@@ -0,0 +1,21 @@
+divert(-1)
+#
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1997 Eric P. Allman. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Contributed by Glen McCready <glen@qnx.com>
+#
+
+divert(0)
+VERSIONID(`@(#)qnx.m4 8.7 (Berkeley) 5/19/98')
+define(`QUEUE_DIR', /usr/spool/mqueue)dnl
+define(`HELP_FILE', /etc/sendmail.hf)dnl
+define(`LOCAL_MAILER_ARGS', `mail $u')dnl
+define(`LOCAL_MAILER_FLAGS', `Sh')dnl
+define(`LOCAL_MAILER_PATH', /usr/bin/mailx)dnl
+define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f $h!rmail ($u)')dnl
diff --git a/usr.sbin/sendmail/contrib/converting.sun.configs b/usr.sbin/sendmail/contrib/converting.sun.configs
index 0fcd9196730..e6a3a9e8bd9 100644
--- a/usr.sbin/sendmail/contrib/converting.sun.configs
+++ b/usr.sbin/sendmail/contrib/converting.sun.configs
@@ -353,7 +353,7 @@ out of my makefile:
# -DNDBM -DNEWDB -DYPCOMPAT -- use both plus YP compatility
# -DNIS -- include client NIS support
# The really old (V7) DBM library is no longer supported.
- # See READ_ME for a description of how these flags interact.
+ # See README for a description of how these flags interact.
#DBMDEF= -DNDBM -DNEWDB
DBMDEF= -DNDBM -DNIS
diff --git a/usr.sbin/sendmail/contrib/doublebounce.pl b/usr.sbin/sendmail/contrib/doublebounce.pl
new file mode 100644
index 00000000000..a853ec14f37
--- /dev/null
+++ b/usr.sbin/sendmail/contrib/doublebounce.pl
@@ -0,0 +1,232 @@
+#!/usr/bin/perl
+# doublebounce.pl
+# attempt to return a doubly-bounced email to a postmaster
+# jr@terra.net, 12/4/97
+#
+# invoke by creating an mail alias such as:
+# doublebounce: "|/usr/local/sbin/doublebounce"
+# then adding this line to your sendmail.cf:
+# O DoubleBounceAddress=doublebounce
+#
+# optionally, add a "-d" flag in the aliases file, to send a
+# debug trace to your own postmaster showing what is going on
+#
+# this allows the "postmaster" address to still go to a human being,
+# while bounce messages can go to this script, which will bounce them
+# back to the postmaster at the sending site.
+#
+# the algorithm is to scan the double-bounce error report generated
+# by sendmail on stdin, for the original message (it starts after the
+# second "Orignal message follows" marker), look for From, Sender, and
+# Received headers from the point closest to the sender back to the point
+# closest to us, and try to deliver a double-bounce report back to a
+# postmaster at one of these sites in the hope that they can
+# return the message to the original sender, or do something about
+# the fact that that sender's return address is not valid.
+
+
+use Socket;
+
+# look for debug flag
+#
+$dflag = 0;
+$dflag = 1 if ($ARGV[0] eq "-d");
+
+# get local host name
+# you may need to edit these two lines for however your system does this
+#
+$host = `hostname`; chop($host);
+$domain = `dnsdomainname`; chop($domain);
+
+# get temp file name
+$tmp = "/tmp/doubb$$";
+
+# save message from STDIN to a file
+# I thought about reading it into a buffer here, but some messages
+# are 10+Mb so a buffer may not be a good idea
+#
+if (! open(MSG, "+> $tmp")) {
+ # can't open temp file -- send message to local postmaster
+ # open(MAIL, "| /usr/sbin/sendmail -oeq postmaster");
+ print MAIL <STDIN>;
+ close(MAIL);
+ exit(1);
+}
+print MSG <STDIN>;
+
+# scan message for list of possible sender sites
+# note that original message appears after the second
+# "Original message follows" marker
+# look for From, Sender, and Reply-To and try them, too
+#
+$inhdr = 0;
+$hdrs = 0;
+$skip = 0;
+seek(MSG, 0, 0);
+while (<MSG>) {
+ chop;
+ if (/^ ----- Original message follows -----$/
+ || /^ ----Unsent message follows----$/) {
+ $i = 0;
+ $inhdr = 1;
+ $hdrs++;
+ $skip = 1;
+ next;
+ }
+ if ($skip) {
+ $skip--;
+ next;
+ }
+ if (/^$/) {
+ last if ($hdrs >= 2);
+ $inhdr = 0;
+ next;
+ }
+ if (! $inhdr) {
+ next;
+ }
+ if (! /^[ \t]/) { $hdr[$i++] = $_ }
+ else {
+ $i--;
+ $hdr[$i++] .= $_;
+ }
+}
+$rcvd = 0;
+for ($j = 0; $j < $i; $j++) {
+ print STDERR "DEBUG hdr[$j] = $hdr[$j]\n";
+ if ($hdr[$j] =~ /^received:/i) {
+ ($addr[$rcvd++]) = $hdr[$j] =~ m/.*\sby\s([^\s]+)\s.*/;
+ }
+ if ($hdr[$j] =~ /^reply-to:/i) {
+ ($addr1{"reply-to"} = $hdr[$j]) =~ s/^reply-to: *//i;
+ }
+ if ($hdr[$j] =~ /^sender:/i) {
+ ($addr1{"sender"} = $hdr[$j]) =~ s/^sender: *//i;
+ }
+ if ($hdr[$j] =~ /^from:/i) {
+ ($addr1{"from"} = $hdr[$j]) =~ s/^from: *//i;
+ }
+}
+
+# %addr and %addr1 arrays now contain lists of possible sites (or From headers).
+# Go through them parsing for the site name, and attempting to send
+# to the named person or postmaster@ each site in turn until successful
+#
+if ($dflag) {
+ open(DEBUG, "|/usr/sbin/sendmail postmaster");
+ print DEBUG "Subject: double bounce dialog\n";
+}
+$sent = 0;
+# foreach $x ("from", "sender", "reply-to") {
+foreach $x ("from", "sender") {
+ $y = &parseaddr($addr1{$x});
+ if ($y) {
+ print DEBUG "Trying $y\n" if ($dflag);
+ if (&sendbounce("$y")) {
+ $sent++;
+ last;
+ }
+ $y =~ s/.*@//;
+ print DEBUG "Trying postmaster\@$y\n" if ($dflag);
+ if (&sendbounce("postmaster\@$y")) {
+ $sent++;
+ last;
+ }
+ }
+}
+if (! $sent) {
+ $rcvd--;
+ for ($i = $rcvd; $i >= 0; $i--) {
+ $y = &parseaddr($addr[$i]);
+ $y =~ s/.*@//;
+ if ($y) {
+ print DEBUG "Trying postmaster\@$y\n" if ($dflag);
+ if (&sendbounce("postmaster\@$y")) {
+ $sent++;
+ last;
+ }
+ }
+ }
+}
+if (! $sent) {
+ # queer things are happening to me
+ # $addr[0] should be own domain, so we should have just
+ # tried postmaster@our.domain. theoretically, we should
+ # not get here...
+ if ($dflag) {
+ print DEBUG "queer things are happening to me\n";
+ print DEBUG "Trying postmaster\n";
+ }
+ &sendbounce("postmaster");
+}
+
+# clean up and get out
+#
+if ($dflag) {
+ seek(MSG, 0, 0);
+ print DEBUG "\n---\n"; print DEBUG <MSG>;
+ close(DEBUG);
+}
+close(MSG);
+unlink("$tmp");
+exit(0);
+
+
+
+
+
+# parseaddr()
+# parse hostname from From: header
+#
+sub parseaddr {
+ local($hdr) = @_;
+ local($addr);
+
+ if ($hdr =~ /<.*>/) {
+ ($addr) = $hdr =~ m/<(.*)>/;
+ return $addr;
+ }
+ if ($addr =~ /\s*\(/) {
+ ($addr) = $hdr =~ m/\s*(.*)\s*\(/;
+ return $addr;
+ }
+ ($addr) = $hdr =~ m/\s*(.*)\s*/;
+ return $addr;
+}
+
+
+# sendbounce()
+# send bounce to postmaster
+#
+# this re-invokes sendmail in immediate and quiet mode to try
+# to deliver to a postmaster. sendmail's exit status tells us
+# wether the delivery attempt really was successful.
+#
+sub sendbounce {
+ local($dest) = @_;
+ local($st);
+
+ open(MAIL, "| /usr/sbin/sendmail -ocn -odi -oeq $dest");
+ print MAIL <<EOT;
+From: Mail Delivery Subsystem <mail-router\@$domain>
+Subject: Postmaster notify: double bounce
+Reply-To: nobody\@$domain
+Errors-To: nobody\@$domain
+Precedence: junk
+Auto-Submitted: auto-generated (postmaster notification)
+
+The following message was received at $host.$domain for an invalid
+recipient. The sender's address was also invalid. Since the message
+originated at or transited through your mailer, this notification is being
+sent to you in the hope that you will determine the real originator and
+have them correct their From or Sender address.
+
+The invalid sender address was: $addr1{"from"}.
+
+ ----- The following is a double bounce at $host.$domain -----
+
+EOT
+ seek(MSG, 0, 0);
+ print MAIL <MSG>;
+ return close(MAIL);
+}
diff --git a/usr.sbin/sendmail/contrib/mail.local.linux b/usr.sbin/sendmail/contrib/mail.local.linux
new file mode 100644
index 00000000000..42d2c3c3d9c
--- /dev/null
+++ b/usr.sbin/sendmail/contrib/mail.local.linux
@@ -0,0 +1,205 @@
+From: Karl London <karl@borg.demon.co.uk>
+Message-Id: <199308111712.SAA05454@borg.demon.co.uk>
+Subject: Final port of mail.local to Linux
+To: eric@cs.berkeley.edu
+Date: Wed, 11 Aug 1993 18:12:27 +0100 (BST)
+X-Mailer: ELM [version 2.4 PL21]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Content-Length: 11415
+
+Hi,
+ Sorry about this.. This is a final version of mail.local for
+linux..
+
+This is what I would like to see distributed with 8.6 if poss...
+
+Karl
+
+--------------
+
+begin 600 mail.local.linux.tar.Z
+M'YV0;<*D8>."S9LQ8=B\`,"PH<.'$"-*G$BQHL6*(&C`N`$#!@@`($#$N%'#
+M(TB1)$V&7,D2A$<0-6C,D$%3QHT8+V/HI$$#9(V+0(,*'4HT8ITY=,+("0E@
+MC5(V12<ZE0,UJM6K6+-JW<KU:L"!!0\F?`$G#!TT;L*T*3/'!9JN<*WBA*%1
+M)<J2'T..Q'NRY0P;,6:$+`DC!@V:,VK(T#MCQDV0,.)*GFP4J5*F4ZMNS4RY
+ML^?/H#^_4-%"`0@5((:\@9-'3IHS:.B`0#$FA<@<.3Q205,&A)0R9\JXH3,'
+MQ!LS(,[VKN(FC9TR<N:DH9/'./(A"=.8>2.G>1@7IE$'8<,&A&O8Q,VSA?Z<
+M#/C3X7V7(9,&J6LQ=>BD>>,&1!@W9(!P5&]I]#?'&W7(,49O_P4H1H%*5;>=
+M'&W,P0((=TR'AG%+97@6@G3$U\8;])F1!D+Z\7>A4KW!`5T;T]$Q'PAPR/&&
+M'6F0,>-99B7'&PC;D?=&AFZ<`<(8_-&7HAMSQ,<B"&O1H4-\,;@@'WWVI8'?
+MDL4=!\*!"2YX)(F]M7&4;'*4D52!/C(HQHV](<G:>;'%MY(;;^BWX(5GU0<"
+M&_7)YB62`$ZW'Y/^`=@FD&\(2:216([!AD!KR?$>:C)8^1N6=-R7WZ'%L?E@
+M6G)(R%T;4)ZI7HTDUB&F<OZ]^=R8<[Y6YVDLX:EG&7RBX2>@2%DW9J%<)AH@
+MK$$:]"@(D4Z:1J4@L*F<G2&1<5`=:PUGUJ'&OL"=<<HM%9",KB54'*LXZAB@
+MAQO"RJFG2UX*P@Q6CE=>&&0\)X=^TA4)I5G0I6$NE,(M6:"19I1A5H)L<2C@
+M'+UYV6=Q!YI!QQTL4IMJL%C",6EUR#:J[,'^C;$&GG>P,5]PV4H97@*[^<DJ
+M&:[*5J"D=>A(\7$7/ZGC<P:YZ"#(/S+G''3246?=R]@!.J%W%PH!W1IEJ%Q=
+M@]&F1VBG6N;'75OQT6"E$V5H"-VB::TE+*Q&ZYMT=7@N!6O:#7LY77%;P_NU
+MQ@%5)T9O`Q[[!@C"61M=Q$NQ.J*,--I(\QCIZ>A:>T#:B.K$7_*,<9H:LPOB
+MERZ.H=V)C>_7H6MTR-B?BQ36)QU_E\9'!1))3`'"%$\80<4504A1!`BU@P"%
+M%$]8D00111`!@A!9@##[[[X?48035-@>A!/*#_$$]5(D(4055#PAA>U@@!&$
+M[;6?<`((UQ,1W_7-%X'%\$5,8;OXP#<!!1-))`\"[U*0PO6HT+\I7"@)3A@"
+M$ZI`!`0>(6K@`X$3GD`%$/"O"4F@@O_"=Z'GQ2<)^N.?_P`H0.H5$`2Y`T$3
+MBB"%(2!A@$$00A+X1X7FM0\$1LB@$^IG.R/@+PC"ZQT!AU`%)O1.>%60`A2>
+M,(4BO,]W(&C@%!08!!`FSTK`<X($GP""(EAA>A6<P@N9P`3G(0%Z19`>]>XG
+MA=1LCPK=^U[XQK>\W_$OADQP(JY\V$;X13$)OAL"%0Z(/4`609"$',+QP!@$
+M)EQH"E`X9!(:>2'Y%2&$O<O"A?"G/2<T,0I5`.,DF1`?(@2A"4&0GNU0@$`%
+M,M"!$*S@!"MXP0QN\`D7&MX3B.B[%5(/A4:X716$,`4"4@%\OSO"$YY`A"G$
+M!W]-E(+QAE"_'5B0B?<+9A6:>"%34B$(FVRC+G-8/6OB[WM30"`/LZC!`%8!
+M"@3<7@KB@X0G7,&++$Q-$+;IOQMNCWU.:-[SQ->\%-Y1AC34Y/_.^+PV(M"-
+MW`L"(F\'QR0(,CX'G6$&%8J_.5:0E0E<8`.=<`0)II%_:J0F"MM(P3-*X0JU
+M*X)M>E<[!V81H,WC71:>&<$4/@\$_`2F&8.'.]T!L`B5_*(6DQ#,(!#!>$U4
+MGD_/*#QL>D^C-01F?*90!1=&\92I+$+L3I,`(*!@!"DHRUGHUA8T)*`&+A`,
+M"J0F!ZI9S38Q>,%(7I"#&(3G!0H8P<W8D+/>\$"M:&BK#Q006!V9R`V]^0(4
+M@C"[+S!AEU307P)$\`(ZM`$.+S`(0@B"A=*:5@0*"(UJ5_L5@HAV+*T-RVA=
+M,(;5@F8N=<G+7>RR%[NP9"0PJ$$-!B.3FMBD(XSAR0T@8]OF#N5,E_D(9[@R
+M7>=:][K8E<QH2H,KU=0*/;.IS6URX[P?_28XP^D2<MC6'+=-ISI>:IIVN.,=
+M>=G+/+9*3YH@)H?VC!4UFPH4O+B%M0%%RT`(4A"#%#6J"#&*0A;"D(8<YKG\
+MB(A$HT/1H5:4)AJ]*$8S0E>.=H2&'H7,420CE))`Y:0.1VE*N*K2E03<M6)Y
+M"4P*'I..-H8F-0FD/[`*@ZSBM)K6Y%=CNCH1KWSTJT`)2\6&XD]QL';BD?FK
+M692"CKPR->,L;0E4!P9!@TOU8%29*5AIFIFK>A/D(=/*R.A!<IZ4W*LF!VM0
+M28HRHJC\HV0-B618?M;9I,4;C5EK#-@JV+;XTZUOY8DWX@)8N=AP+ANE:T;L
+M6M2[:GPH>=&+?>3Q3[Z@PR^2C2M@`VO9H4B6L(7MUV$&EIBO=F:QS96!;ZKJ
+MV,<6Y>=EA<%D*%,9&5A6,!BK`&:S;ERK('=@G.DL<[7V61F`MIH9B8%HRVDO
+MTMZ[-++*]VD"B]K4JE:&JRGJ;L/BVI:^)B^Q2;!LX4*;6B*VWJ)I.SK<CIN\
+MUZ+>K.&-/^KV6G3X%@:_`0YB@B,<@+Z&.&4OKD6.JUEQ)'>T`)G!<DRF=<\X
+MAZN55%@V<PA=ADOWK3N@3G4>;MT<7N>&_P[5=D7=7>]^%SQ=&@]YRF.>&=&H
+MQNH!-'MOC"/XQ$<^\Z%O"NK[^?L"VL7Y^<Y^*\W?_OJG/!(.L(")%"DLEQ?!
+M65H0A+94'@=W_L$04OU_O2LA`>LGU!6V\(74BR%6;8@]'.IPG7QD7Q"E,,0B
+M'A$*25QB$Y_X.RE2T8I$P.)#)]A%I89QC&7\:?3`R$:(5E2.1*_CU_&H1]3D
+MW8\-#.0@LQCZ0XZ^E8N,NR-O%TE%4K+IE]Q?)L,)T4^&TH2-+"5853F;5FJ=
+MI+'<(BW!KD&QXU)XQ./E)<$H5*X2TYC(!($RF>E,7$&3A=.LYC6AGD)^=I.R
+MX(SZ.#,X!7.V$9WJA#H"VRF%=\;3"?/$53WO^<4V#F&?4?TY"K7HQX%*H:#!
+ME%$)=2%7P%`N=5.=!$<2-7K%U#T7A2L"N%&TYU&]%U*O1%(F=00H-3TJA3\M
+MQ4(PU40SU3WIA($/Y4<ZQ5,5-%6_$U13152Y(W.^DU33`SQ-]50Q)57!]%."
+METX(M5%:A2M<Y56FA$K2<RF`%5C:`2!E@!R`,AP*,`8EMA1R`F>QL05=``(]
+MH``B8%9HE1I%1B>R01MXA1NZ85[`43#]QEY'@V]*$U_9`6[?P05NP`6F<5]B
+M6!S[Q1[SX0)T*`([$%B%HQT@,!H@H"M_4B"RH0))*%AFP(1.J(@*8!EZ<B13
+M^"5C,`;20098J(4@T(5GE0*Q]5H$,09OY0(V,!MT95?E9ALVH%<YP%<Q`(B"
+M6"C(88B(^(2+V(B#55@@P`-SD`=S0!9*H19NL5B"Y0;.9EC!.(R4>(Q*J(R$
+MM6/`*(PO<"`FHR;0F(S+^(O-^`(FHC+;V(O4"%GZ88XO4"#C*(V^6(US8!!G
+ML([=R`-F,`;#01!H@(SD:%CF2`9B((_3:%AP<`?ND8_1.(_ZL18`V8YUT!Q(
+M49#ZR([4"!W=\08+28T/N1\7R8QT0`:`\H\&R8T!Z8U<4R0;^8F(Q59N@5J-
+MU80%4@8)8`3@QP0)D`!^-0*.]9(),$LR^4TT"0.,I8@)H".`HB\@\`62A0(H
+MH(@7(H67H0(ID`*!:`=OD",)0)%'F91+.1Q-*66RX91+H0(7X@)D&953695D
+MD`!)9@9Y\"!F@!Q("05*"9:G898*()1(P1V1I95T"952J0!4:95'$0;!D95R
+MB0*!209VJ0!?X08HH!1G,`8<=@9V,$\)H(C^(0>1&8@)T)<J`)EV$(A[H`!7
+MB0?DTA^8N1KG2`:<60:F"1W]T9>J"9F<:1\U0R-AL'($>1H#R9F8*8478@9D
+M<"'3EA"<60<Y\@6R@9RL29I]>7%OT`:!2)K5Y@;PB`(B,(IBP08B<"&7=022
+MQ4+$(P7>^03@B4HS])>D"9VHT@,25$1,P)EWX"LJ,QNTL2'N&1QTH)J/J9F2
+MF9F4>2$B0`9FH`-RH`,B$)4@$`+N602Y8YD),`<>(H7W:1NC69,(`3$@<`)D
+M<`(Z4).&*`:_M@:;$R!(\EG;(@;UR8BD69-BD"9AL`:<V9FYV1LG8`8>VJ(9
+M:J-RX*$@BAHB:C(E.B8HJA\JVALL6I.7B1PHP)X0F@`L09$HT).OEYUUP`;Z
+MX3&]T0+(H9J@DJ`SF@#LZ8FSJ9EA^J(*(Z,Z6J,;^@,Y6I..%097ZC)*.IC!
+M@0)_69-]0)J0.08@T`+NZ:4`PIF@"0(K$*APL)K3N:2S$0*?J9F5V:)V6@9X
+MNJBC09JXD@3(,::(&')E(#HF,A\78F!S,V^5$YT@H)_P6"!X&BWU=FM0BAK,
+M^2]T((5L<2&/!AT9`C&CJJ&EJC9C"BMEH9O<87$#`:NX@B1RL%]PD&?^LI^+
+MPIS@$:N`E0"SFI]JPIR52IJ$B`(A,*8F8`*-VJ08AZUTL*J.J:!\P`>8NA(A
+M@`(#Z8GZ.9!I0Z[1J:Y\0"-WT`(^,)!?,*L,*B`Y$I4M.J;N":]W(*]J,I#:
+MRIP*^@/ZRJ_^2C<@H`.?^`,82XOK&2#NF9=I8J]MD*<3,AO%61[N"0/6]*B4
+M:4TKL`*@":$E"P)\X)Y$V89-.IRG\;*MB0?3@0(E^Y=[.HG[^;%.ZIR7J`+L
+M*9JDF4-Y=!IF``><F9!EH)S)80?&R:W#`20X6S4OR9E]20=N<"%/6`9;(`-T
+M@0-=L*A@ZXGV03-P@`*215E(8%F8I3]YVJTWZXEML`9(40:?A0)@JZ`]X)XM
+M$`,RFZ_O^K2>*)S5>;,">@<KD*`$6Y-22J6K)P(-*63U":W5F1Q^VZQRX&#A
+M6`9@2IJ(B98IT)!/N`:`ZP8BFR:4&KB+>KH#*[4H8`)T8+5LD*>TJYA/ZQK#
+M809-"@<":@085P+%@;S=>:IMT)2VB[NZNY@),+9;``-9Z)XGP`4P<`*<.;(^
+M.[:>&`/69`;Z.0<H,+87(AUZ4`;'<;XOF0+IVY$%(I46VJ+=2KW6JX782X<G
+M\*1<"UGA.Z-5HZ$76I/=^K^]$:Z)"%G5>[W8:P3KH\`A(`9C\+?H^XG&BZK+
+M6P.3JZ2]FU;Y,08H<`(^<`+!"0=Y2KG@>[(SNJ<U^<&_JXC"^[0"JKQB^[XS
+MVJT)LZS<,;P=G`!H&J.<&;0)8(B:2C`K1YB]@8B0E3(OZ;FMDQ8R@K.0-2/_
+M03BF&;I6DJ3=&@(%HB-XX+Z0=2'9ZP;]"Z$?#`<A/,+\>\)Y:HA/D!]J+!MA
+M<(AEX,2094VZLF2?JS3\-@=*/&4=EA#*TH>G4:UIO,9E;,)`@L*SFY@I\):$
+M-0=HX,.^R:0[;"-RX,,PNZQ3.I,"*B.?Q1VB>ZP8@CJ]09'<4;H)D"9TD"".
+M*9Q`RU@UJR^.>XCS9IF8*9Q>>[1TH[01VBFW28E?(@:U*<S,-JP2&B`JT)M8
+M^Y4P.L47T@9B()P7X@9R<,UW@*MO>2']=;6=>8EN:085<@9;,!==<"'X809;
+M@`,J@!,R0`/IC)MGL06H-#]RFT=.D+;4^994BV@VTLU_`C%EP+KJ6<0J@*FH
+M003U0<A#PBQ<JR\@,S@->3)#TA]L]:<M`#J?*C#ET5IO@@<-@Q#]\3<*#0(E
+M!B#"%F:P`C$`TEK^`2@U6ARC.ZV'S*U,^J[Q:J[TJA8H0#=16;^4Z\D\"<J?
+M6-$H@]'S9K$VC,MKD<*N#,LH$`-Y2L0?''+`2P?"BU@U/(Q-';>5A9Y,$'K7
+MG,N+VL6T$<TSXIZ4EA1T`*]F@0878@)S(`8*&J[M&A(H4-<N@!1?8)T%L@8+
+MZIZ&NZZW\P6UPP1.L`1[_8]^/2(Z$M0@4,!26M0^V=46N[HS,KK+BUA0G:W=
+M,=55S5@(?=*[`1UE<`)39AZ_UAN0MJ4;?3&#PRH+LG(-TR=N(-C*X3>/=B1J
+M308GC2S'BD4Q4QQK\1_%(=SU2=*(^#<"`MBYW8<*7:UX2\W"J85Y;1PNXIA<
+MC4)?$`10$$G8PP=/\`5#X#N41=Y?<`7$XP1,H%!3@-CM-P52P`?QG017L$U2
+MH*`\X!)"?95$34&6B]D@T-3=;1^JO,D4B2=V69-1'=I4/<2D_<TFZQ*<:8BF
+M9;%/L-U?@@8(P@8!XM`):P:BM08G0#+*70;61-`9X0(T0$R)=].,VJ0EC@+6
+MC;.7-01+\`7RHZ"4'>!4,."?B+Q,/0>='=?QFR8\K.#+RN!0K;L!W*)GD">#
+M(Z+-F0!$#-#'@1QL3="L>^,7`@.KUT1%L./30P2\"\E8+<,H,,[EW-5`4`(@
+M_H=EO19-F2!;?K=,2FEE4-"W+.:/5`1E_@5-1`6V,;BSL>7*F0*%^]^5:]0B
+M(,J@6\HJ4^3+B^!+[K--_@8-WLI03M@S.N70:N423IKS:<I*B<V>"*-D<,OK
+MG+YIL+[MN\Z2[0/^7;#?@@);[HDH:QW(T=_8K,=+`:B'N,V^;JCNZ09W\*1X
+MJ^R>:'+30:E@+F9U@!PKX.O7+`?\[=^3W:)#O<F67:5$7N!&?B$'WBD)KND5
+MV>DU*>J#(\S*&*8NW*VJWM\PX.B>+.21_KFD3&:C:^E)GNX+SNE_">]C\*$)
+M`,,&#S`V7LTXJ^5O^>0)$>583MJ7&JNWHR:+<M%G@S5G8"-U``=8A`2!PATG
+M0LAYH,X%`M-IIC!3G''^$2(8KS!2^"\#`=%%"1UY@$57L,2#8Q!%<C;6DG$K
+MLG+8@N(E9C.O>M(<'QV^`@<.PSHPLG)@=@>H;8G_$1S'\MH8DIO^H1ZYR6@C
+M:RT'<]('8M,L:N4?VJUC\-NVT:(P+(47W?#6'+']>@?_FB/FOJ]W_P5G,+"/
+MC+IF$(S*2/>*N0,_&D7\<0*R@3'3\6`"`@=D`#!;C,B0+"EO`#&&+Y6)GP2?
+M!2BBLYS6>1!K4/FDW<44#J%KV9;:(;QN/@=GD*</[IBI'XA!FY@*L/KC;..P
+M;YE]6<[`3(FD8YO,AHU.009D(`=?P";XDOS'O"U^NLN>6+C'+`>WZ>%]F[4J
+M@`902YK$#W)\J/TAYYM9JS)N<-8YW?R6TB]?8`9J,1!Y\-^&*#5?<JQ92XCC
+M_"7LH62'F"?^8;4#07.5`=-GP'+:7H-ZYHJ_V(%K0S>PTSA;7IB+#,`!R?6D
+M9E\.,X#<3V%]"*3``.<-=B)%V(\.4,!NIZ0JFX"#="`P\TD)<G?IT%VF&WCL
+MS@*V*!>6`-1?7RL0[>_]L8'JX)ZX'[]"`U]`_5$'%S&C*%B100$^T`<`0?4W
+MUVP@^V."*`T._,`O8/[.P%E(84X0!X(NV="QI*`/F`-?8`M*N!GWZUP""%!@
+M38IMD3XU@0*"@!%`;#N$`>V2'4<$CH``:0)A3G`1+JI&`@$<N#N!E^T3&3\U
+M`?"^A`O49.K.R<TH&5CQII=P8%N=POSQOMAGJ$3")9L-+HT,[*<F-<U@G]@2
+M#F'N0NPU9`9R2)_ZJTLF``JJ+_8EO-3?Y&()`<O\=;(_&.0@728<=:VO$&(Z
+M1`@#9QE@0DL*8%+A*05PH1Y=(,1<@"PX6"SM-%I`P!;@4LPK"PV(I4"67$#I
+M"EJ.*"L5$R(P!)#201I)P*@C0:9M-,!NC4AJ1U8K=&DFQ5*+2@1CP7W9$"EM
+MPV[X!12`E,),]<'])04VT)68Q%<Z6N2,#HRELB2(^)P]]&3YT"PDA.#4!NB`
+M+KM_<T`?@K/GU!`YD]7Z`F1`4K1#[4`,2=-%!!9TK/O%0T)'!;BA-TP`%]$R
+M[(O'1+R`1$/\2R.@''K$,/`%5.);"P..;".:`8_8C*[3=^)Q`80A"D3_D!-1
+M(DTL'"Q1S\V&A+@/81;/>FL13@'LJ>Q"%:NB5;R*6#$K:L6M*!&8X5AH`C'*
+M):D,KJ@5<`MR.0F]1;>DQ;[0$F2`3B`N,Z$F<(2<(`-L@&)@+F2QN4"7I2!=
+MGD)7J"YY,3`*1LDP`LI**`*+5&-TG2*YLHK(3?P3"7KE!L@BQJ)+CD`/2`!>
+MD0TH`%3B!'#`9<R,+@`HR9`)<@6<P&6T$7E"`8S&)L!,BD`/H`'"I0:H1@02
+M>GK`"Q@5C,4%[*-?)`;F@'M@%?%H;RV6P4@<BZ-Q/(Z",3.^`-"(`Y!C13"+
+MO"4EJ$7IR!97@@VP`3>`!@R&CF`#8*,,4`RI2"0TAL?@$IPC9=B+F,$O4A?U
+M:![;HWMD"'Y(!("A[Q(;PDL9(B^G33Z@E_0@:[)-&WH;PN+;T!>!`1[B(Z@I
+M#WE(/2A`Z18?%8"!##!>YE,PF@*CH=@$CA$36&/,F`H(<R$R3<G1$"#"07(!
+M^0C9,LRB"5N9J45\F-018BS-B-EZ)J;/B(P_XR^@#)<0D?+Q2;P8'"D2-,5\
+MH#%?1LH(BPM)9';,F>DQ:P+(_`@A`R?>C!CBD7=BSNP)F`<2GTR>*19\IC?T
+M&D!3'R1%EK$4/)++0,B`4RQ$!83P=Z>"QZR*B/,JEJ2;J4)/TD!&R5U19XI#
+ME<0SQ`+,9$E&@6*N3)=T%M""T-P:.5DMKD7+.)&-9BGDJDA#+CQ:I;D1+U+"
+MG`5-`R0E9,OAD9_FON`+?5%J_,6IF33&K6"L&G_1:E[9J_D6L:;>^(F*L7$&
+MY8AD"4>26=0'CU%P>,V,]#7`9D@(&V(S'*9$?$0V,H--V@R)U#!8I:V!:-1&
+M:(@9;`-4[@V`/`XX,@$(R.X0;I;'N+$:QL+?I!N]$1T*Y*MT-V3#;,B-'T&Q
+M^F.S_(_YYEO\JKJ!'-!-WJ@Q>X-0_@N#\S!VQ.`H'`PGZEF./`%QEDWD"!B4
+M(U@E&V.9,>3EQ^%HH(ITU`C3<<I`S.KX,%0/=N!('CD[8)!1F3G`PW;8G$62
+M<P0*59D\:T3_)""A,T>*SOG(F$FG??!(/R(_Z`?W<2AF9X2DG:M3/[+.!7H@
+M7$>64)"O@T&*C_,X/A[$0(*0J2,S`PC-S"8JA(6X$!CR@[+*#2$G.P3J?)Z]
+MTW>,B#@)/$S$B1A(C&EXC`CB43Q:A/'@DU\B1AI)Y/F8:83R1)V1Z3V&#AT1
+M`G9DD@B!/,(C/P_3*3T3A38:DKR90%)/((0DDN3U6!),\G]H3R>Q/:(D]QC(
+M(A165HGON9G!Q^O4$I\Y=G2)\O$E*RB8.)]BDD&BS_1I)CSR^D@3BZ)]+@OW
+MT2;<Y*M\$]HS?LI)U$$_41-]4`_QY'Z2@#SAD?,'G]@?_--/ZLX_Z3]GA*`(
+ME0A40PB0`<HG#V5D+J!'4E$NBH$DGAREC5`@D.)*1DI)V2$:*`FDE-_A@1I*
+M")(I[(,$V903Q'12D(%\`CUE!U$5%Z0^+:8,0BJ-IP8Q%?:!@_(/"ZHJ]N.J
+M)!2M8B"'$!+X*D9(K$S,7^F%1)%`<"W;R07@@`1@`Q2H*KJ6K2@CO`";,!D;
+MI`L@`@$B""S,\F`3+D0,P`U^Y8+*!K'F`G)<(P$!.,!!/H$FX0*FP(9P`J=$
+M:SH!,W-`94M"<)!.($!XK#)Q0,-,'0-I;P`/.$@7>CNRP`2!`NG$F;B`&6KS
+M$.AH4:%0SPB4!^00!)8">W*05;1>4D.R-$0W!/*8(MT#GMA.)X!#4058!`ND
+M2`&PNN3V(RP#@%`*`:)`S+'(EQP&QQ4K'"W@.'`I4X8U<.)V(P.A0C9`*YJ'
+M!K#H4IB&&XJ%0H$?>D`50$U3`*?-D&I1QJ0JG%L=TUTY0HLZM0'H(*$`'("D
+M/\)+"<DGX?5ZS1SPE4*@/+2`I&`D6D"&T(0;`@_(TBOJ`I*`;)"B0()]6%'+
+MH0"F@,AA2XLB$T('U;9)"V01T(PNP),J@"10*-)%'9AX,.V/!3*6]B.`*!Y(
+MD3CO642[H9$H",=GH0X*`'SU&FMS-198;_@;?\\--`=_D6E:6DDR$N4C@Z$*
+M]0$>@`CXVAH_!NGUABSA+^(IQE$?O6*?%HYA6APH5A]-#H+&$*J%3QHLR\`?
+MM9>$X]=LB%J&V@)$-&4+R9"3`A$5]1\$&_CR$WYTH"8<0HK$,FH]355J30ZL
+MTI2&]4(7Y#@;**!\E+#^%2TJC4,5J74T452'CZHDRP1&56(*X-35/"1QI1Q$
+MF0@48;$_C*PZYD]15=*I63""7)C3`JE,\R-,&UV"+)7A`9PA'8#&3EV#ZV+"
+M.$@L8$5+'`B0`4&5/O'0FP=2X<!#=0^=]),>,5A1/L99TE&`_,]/S#YR.E:7
+M0OEB#QU0;0@&%J``8$7^6Y!+P4^LI30P([P$14T3%K6&QE50.BB9:&8,AOH!
+M4"@-UX1N/`*CF0.NHK9%&*SA`SP"(;JC2\XX9*($`39:Z(:8'L:CO6%.!YE*
+M_Q0K_5.O=%)^L8+A(&UI%[$#SD,+*(`J@'!R*L00I$O2K=J(A0DP$*K:T`/\
+M(6+T5.?*%I+"9S&FR)2(,JWZ05M5Z6UUI3EB4G:6SQ):$JAI,2U_ZD25!<C1
+M6V7#(BU$G@6TD"(7<%Y+2V'E=^I00APK%NI;W^L+2(?+\8"^@&D8#/D+,;6F
+MLC)-0`[ND`<<Y#'MHK=#T+$/)H`[^FH3%0D@@+#2UZ6`!S(AAM6P9!5(F-7%
+M`&+]JII0@(&U-PQ6"WNB`)ELP`$9UL)F0IB60ETK"*`=Q82@*``@`EI9QW%=
+M&DN4AJ+1[:0`D&"#>$)&`L&R.I+A]:Q>J/%Z,.VQQC\%$%)91!QU`UA4-MB!
+M&P`"P(/7$U8VXN.IA3)Z8<'#>SRS:#;-JMDURV;;K)M]LW`VSLK9.4MGZZR=
+HO;-X-L_JV3W+9_NLG_VS@#;0"MI!2V@+K:$]M(@VT2K:1<MH&^UD`$MG
+`
+end
diff --git a/usr.sbin/sendmail/doc/changes/changes.ps b/usr.sbin/sendmail/doc/changes/changes.ps
new file mode 100644
index 00000000000..041948ab023
--- /dev/null
+++ b/usr.sbin/sendmail/doc/changes/changes.ps
@@ -0,0 +1,1129 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.10
+%%CreationDate: Tue May 19 16:37:14 1998
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Symbol
+%%DocumentSuppliedResources: procset grops 1.10 0
+%%Pages: 11
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.10 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/FL{
+currentgray exch setgray fill setgray
+}bind def
+/BL/fill load def
+/LW/setlinewidth load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Symbol
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Bold@0 ENC0/Times-Bold RE/Times-Italic@0 ENC0/Times-Italic RE
+/Times-Roman@0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 14/Times-Roman@0 SF(Changes in Sendmail V)196.615 141 Q(ersion 8*)
+-1.554 E/F1 10/Times-Roman@0 SF(Eric Allman)263.42 165 Q/F2 10
+/Times-Italic@0 SF(Univer)220.2 183 Q(sity of California, Berk)-.1 E
+(ele)-.1 E(y)-.3 E(Mammoth Pr)251.98 195 Q(oject)-.45 E F1(ABSTRA)
+262.085 227.4 Q(CT)-.4 E -1.11(Ve)112 243.6 S 1.709(rsion 8 of)1.11 F F2
+(sendmail)4.209 E F1 1.709(includes a number of major changes from pre)
+4.209 F 1.71(vious v)-.25 F(ersions.)-.15 E .701(This paper gi)112 255.6
+R -.15(ve)-.25 G 3.201(sav).15 G .701(ery short history of)-3.351 F F2
+(sendmail)3.201 E F1 3.201(,as)C .7(ummary of the major dif)-3.201 F
+(ferences)-.25 E .953(between v)112 267.6 R .954
+(ersion 5 \(the last publically a)-.15 F -.25(va)-.2 G .954(ilable v).25
+F .954(ersion\) and v)-.15 F .954(ersion 8, and some dis-)-.15 F
+(cussion of future directions.)112 279.6 Q .48
+(In 1987, the author stopped major w)97 324 R .48(ork on)-.1 F F2
+(sendmail)2.98 E F1 .48(due to other time committments, only to return)
+2.98 F(to acti)72 336 Q .3 -.15(ve w)-.25 H(ork in 1991.).05 E
+(This paper e)5 E(xplores wh)-.15 E 2.5(yw)-.05 G
+(ork resumed and what changes ha)-2.6 E .3 -.15(ve b)-.2 H(een made.).15
+E .58(Section 1 gi)97 352.2 R -.15(ve)-.25 G 3.08(sas).15 G .58
+(hort history of)-3.08 F F2(sendmail)3.08 E F1 .58(through v)3.08 F .58
+(ersion 5 and the moti)-.15 F -.25(va)-.25 G .58(tion behind w).25 F .58
+(orking on)-.1 F -.15(ve)72 364.2 S .126(rsion 8.).15 F .126(Section 2 has a rather detailed description of what has changed between v)
+5.126 F .125(ersion 5 and v)-.15 F .125(ersion 8.)-.15 F
+(The paper \214nishes of)72 376.2 Q 2.5(fw)-.25 G
+(ith some thoughts about what still needs to be done.)-2.5 E/F3 10
+/Times-Bold@0 SF 2.5(1. HIST)72 400.2 R(OR)-.18 E(Y)-.35 E F1 .151
+(As discussed else)112 416.4 R .151
+(where, [Allman83a, Allman83b, Allman&Amos85] sendmail has e)-.25 F .151
+(xisted in v)-.15 F(ar)-.25 E(-)-.2 E .405(ious forms since 1980.)87
+428.4 R .405(It w)5.405 F .405(as released under the name)-.1 F F2
+(delivermail)2.905 E F1 .404(in 4BSD and 4.1BSD, and as)2.905 F F2
+(send-)2.904 E(mail)87 440.4 Q F1(in 4.2BSD.)2.5 E
+(It quickly became the dominant mail system for netw)5 E(ork)-.1 E
+(ed UNIX systems.)-.1 E 1.569(Prior the release of 4.3BSD in No)112
+456.6 R -.15(ve)-.15 G 1.569(mber 1986, the author had left the Uni).15
+F -.15(ve)-.25 G 1.57(rsity for pri).15 F -.25(va)-.25 G(te).25 E
+(industry)87 468.6 Q 3.347(,b)-.65 G .847(ut continued to do some w)
+-3.547 F .847(ork on)-.1 F F2(sendmail)3.347 E F1 .847(with acti)3.347 F
+.846(vity slo)-.25 F .846(wly trailing of)-.25 F 3.346(fu)-.25 G .846
+(ntil ef)-3.346 F(fecti)-.25 E -.15(ve)-.25 G(ly).15 E .255
+(stopping after February 1987.)87 480.6 R .255(There w)5.255 F .255
+(as minimal support done by man)-.1 F 2.756(yp)-.15 G .256(eople for se)
+-2.756 F -.15(ve)-.25 G .256(ral years, until).15 F
+(July of 1991 when the original author)87 492.6 Q 2.5(,w)-.4 G
+(ho had returned the Uni)-2.5 E -.15(ve)-.25 G(rsity).15 E 2.5(,s)-.65 G
+(tarted acti)-2.5 E .3 -.15(ve w)-.25 H(ork on it ag).05 E(ain.)-.05 E
+1.271(There were se)112 508.8 R -.15(ve)-.25 G 1.271
+(ral reasons for rene).15 F 1.271(wed w)-.25 F 1.271(ork on)-.1 F F2
+(sendmail)3.771 E F1 6.271(.T)C 1.271(here w)-6.271 F 1.27
+(as a desire at Berk)-.1 F(ele)-.1 E 3.77(yt)-.15 G(o)-3.77 E(con)87
+520.8 Q -.15(ve)-.4 G .097(rt to a subdomained structure so that indi)
+.15 F .098(viduals were identi\214ed by their subdomain rather than by)
+-.25 F 1.758(their indi)87 532.8 R 1.758(vidual w)-.25 F 1.758(orkstation; although possible in the old code, there were some problems, and the)
+-.1 F .66(author w)87 544.8 R .66(as the ob)-.1 F .66
+(vious person to address them.)-.15 F .66
+(The Computer Systems Research Group \(CSRG\), the)5.66 F 1.89
+(group that produced the Berk)87 556.8 R(ele)-.1 E 4.39(yS)-.15 G(oftw)
+-4.39 E 1.89(are Distrib)-.1 F 1.89(utions, w)-.2 F 1.89(as w)-.1 F 1.89
+(orking on 4.4BSD, and w)-.1 F 1.89(anted an)-.1 F .053
+(update to the mail system.)87 568.8 R .053(Bryan Costales w)5.053 F
+.053(as w)-.1 F .053(orking on a book on)-.1 F F2(sendmail)2.553 E F1
+.053(that w)2.553 F .053(as being re)-.1 F(vie)-.25 E(wed)-.25 E .923
+(by the author)87 580.8 R 3.423(,w)-.4 G .923
+(hich encouraged him to mak)-3.423 F 3.422(es)-.1 G .922(ome re)-3.422 F
+3.422(visions. And)-.25 F .922(the author w)3.422 F .922
+(anted to try to unify)-.1 F(some of the disparate v)87 592.8 Q
+(ersions of)-.15 E F2(sendmail)2.5 E F1
+(that had been permitted to proliferate.)2.5 E .023
+(During the 1987\25591 f)112 609 R(allo)-.1 E 2.523(wp)-.25 G .023
+(eriod, man)-2.523 F 2.523(yv)-.15 G .023(endors and outside v)-2.673 F
+.023(olunteers had produced v)-.2 F .024(ariants of)-.25 F F2(sendmail)
+87 621 Q F1 5.518(.P)C .517(erhaps the best kno)-5.518 F .517
+(wn is the ID)-.25 F 3.017(Av)-.4 G .517(ersion [ID)-3.167 F 3.017
+(A87]. Originally)-.4 F .517(intended to be a ne)3.017 F 3.017(ws)-.25 G
+.517(et of)-3.017 F .268(con\214guration \214les, ID)87 633 R 2.768(Ae)
+-.4 G .269(xpanded into a f)-2.918 F .269(airly lar)-.1 F .269
+(ge set of patches for the code.)-.18 F .269(Originally produced in)
+5.269 F .471(Sweden, ID)87 645 R 2.971(Ad)-.4 G -2.15 -.25(ev e)-2.971 H
+.471(lopment passed to the Uni).25 F -.15(ve)-.25 G .471
+(rsity of Illinois, and w).15 F .47(as widely used by the f)-.1 F .47
+(airly lar)-.1 F(ge)-.18 E .077
+(set of people who prefer to get and compile their o)87 657 R .077
+(wn source code rather than use v)-.25 F(endor)-.15 E .078
+(-supplied bina-)-.2 F(ries.)87 669 Q .32 LW 76 678.6 72 678.6 DL 80
+678.6 76 678.6 DL 84 678.6 80 678.6 DL 88 678.6 84 678.6 DL 92 678.6 88
+678.6 DL 96 678.6 92 678.6 DL 100 678.6 96 678.6 DL 104 678.6 100 678.6
+DL 108 678.6 104 678.6 DL 112 678.6 108 678.6 DL 116 678.6 112 678.6 DL
+120 678.6 116 678.6 DL 124 678.6 120 678.6 DL 128 678.6 124 678.6 DL 132
+678.6 128 678.6 DL 136 678.6 132 678.6 DL 140 678.6 136 678.6 DL 144
+678.6 140 678.6 DL 148 678.6 144 678.6 DL 152 678.6 148 678.6 DL 156
+678.6 152 678.6 DL 160 678.6 156 678.6 DL 164 678.6 160 678.6 DL 168
+678.6 164 678.6 DL 172 678.6 168 678.6 DL 176 678.6 172 678.6 DL 180
+678.6 176 678.6 DL 184 678.6 180 678.6 DL 188 678.6 184 678.6 DL 192
+678.6 188 678.6 DL 196 678.6 192 678.6 DL 200 678.6 196 678.6 DL 204
+678.6 200 678.6 DL 208 678.6 204 678.6 DL 212 678.6 208 678.6 DL 216
+678.6 212 678.6 DL/F4 8/Times-Roman@0 SF .045(*An earlier v)93.6 690.6 R
+.045(ersion of this paper w)-.12 F .044
+(as printed in the Proceedings of the 1994 A)-.08 F .044
+(UUG Queensland Summer T)-.44 F .044(echnical Conference,)-.56 F(Gate)72
+700.2 Q -.08(wa)-.2 G 2(yH).08 G(otel, Brisbane, March 1994.)-2 E F3
+(Changes in Sendmail V)72 756 Q(ersion 8)-1 E(1)294.65 E EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 294.65(2C)72 60 S(hanges in Sendmail V)-294.65 E
+(ersion 8)-1 E/F1 10/Times-Roman@0 SF .151
+(In about the same time frame, attempts were made to clean up and e)112
+96 R .151(xtend the Simple Mail T)-.15 F(rans-)-.35 E .468
+(port Protocol \(SMTP\) [RFC821].)87 108 R .468(This in)5.468 F -.2(vo)
+-.4 G(lv).2 E .469
+(ed clari\214cations of some ambiguities in the protocol, and)-.15 F
+.085(correction of some problem areas [RFC1123], as well as e)87 120 R
+.084(xtensions for additional functionality \(dubbed)-.15 F 1.052
+(Extended Simple Mail T)87 132 R 1.053
+(ransport Protocol, or ESMTP\) [RFC1425, RFC1426, RFC1427] and a richer)
+-.35 F 1.376(set of semantics in the body of messages \(the Multipurpose Internet Mail Extensions, a.k.a. MIME\))
+87 144 R .497([RFC1521, RFC1344].)87 156 R .497(Neither the ID)5.497 F
+2.998(Ag)-.4 G .498(roup nor most v)-2.998 F .498(endors were modifying)
+-.15 F/F2 10/Times-Italic@0 SF(sendmail)2.998 E F1 .498(to conform)2.998
+F 1.7(to these ne)87 168 R 4.2(ws)-.25 G 4.2(tandards. It)-4.2 F 1.699
+(seemed clear that these were `)4.2 F 1.699(`good things')-.74 F 4.199
+('t)-.74 G 1.699(hat should be encouraged.)-4.199 F(Ho)87 180 Q(we)-.25
+E -.15(ve)-.25 G 1.635 -.4(r, s).15 H .835(ince no one w).4 F .835(as w)
+-.1 F .835(orking on a publically a)-.1 F -.25(va)-.2 G .835(ilable v)
+.25 F .836(ersion of)-.15 F F2(sendmail)3.336 E F1 .836
+(with these updates,)3.336 F(the)87 192 Q 2.5(yw)-.15 G(ere unlik)-2.5 E
+(ely to be widely deplo)-.1 E(yed an)-.1 E 2.5(yt)-.15 G
+(ime in the near future.)-2.5 E .466
+(There are, of course, other mail transport agents a)112 208.2 R -.25
+(va)-.2 G .465(ilable, such as).25 F F2 .465(MMDF zmailer smail)2.965 F
+F1(and)2.965 E F2(PP)2.965 E F1(Ho)87 220.2 Q(we)-.25 E -.15(ve)-.25 G
+.842 -.4(r, n).15 H .042(one of these seemed to be g).4 F .043
+(aining the prominence of)-.05 F F2(sendmail)2.543 E F1 2.543(;i)C 2.543
+(ta)-2.543 G .043(ppeared that most compa-)-2.543 F .238(nies w)87 232.2
+R .238(ould not con)-.1 F -.15(ve)-.4 G .238
+(rt to another mail transport agent an).15 F 2.737(yt)-.15 G .237
+(ime in the forseeable future.)-2.737 F(Ho)5.237 E(we)-.25 E -.15(ve)
+-.25 G 1.037 -.4(r, t).15 H(he).4 E(y)-.15 E(might be persuaded to con)
+87 244.2 Q -.15(ve)-.4 G(rt to a ne).15 E(wer v)-.25 E(ersion of)-.15 E
+F2(sendmail)2.5 E F1(.)A .841(All of these con)112 260.4 R .841
+(vinced the author to w)-.4 F .841(ork on a updated v)-.1 F .841
+(ersion of)-.15 F F2(sendmail)3.342 E F1 .842(for public distrib)3.342 F
+(u-)-.2 E(tion.)87 272.4 Q 1.024(The ne)112 288.6 R 3.524(wv)-.25 G
+1.023(ersion of)-3.674 F F2(sendmail)3.523 E F1 1.023
+(is referred to as v)3.523 F 1.023(ersion eight \(V8\).)-.15 F -1.11(Ve)
+6.023 G 1.023(rsions six and se)1.11 F -.15(ve)-.25 G 3.523(nw).15 G
+(ere)-3.523 E 1.281
+(skipped because of an agreement that all \214les in 4.4BSD w)87 300.6 R
+1.281(ould be numbered as \2318.1\232.)-.1 F 1.282(Rather than)6.282 F
+(ha)87 312.6 Q 2.05 -.15(ve a)-.2 H 4.25(ne).15 G 1.75(xternal v)-4.4 F
+1.75(ersion number that dif)-.15 F 1.75(fered from the \214le v)-.25 F
+1.75(ersion numbers,)-.15 F F2(sendmail)4.25 E F1 1.75(just jumped)4.25
+F(directly to V8.)87 324.6 Q F0 2.5(2. CHANGES)72 348.6 R
+(IN VERSION EIGHT)2.5 E F1 .138(The follo)112 364.8 R .139
+(wing is a summary of the changes between the last commonly a)-.25 F
+-.25(va)-.2 G .139(ilable v).25 F .139(ersion of send-)-.15 F
+(mail from Berk)87 376.8 Q(ele)-.1 E 2.5(y\()-.15 G
+(5.67\) and the latest v)-2.5 E(ersion \(8.6.6\).)-.15 E(Man)112 393 Q
+2.5(yo)-.15 G 2.5(ft)-2.5 G(hese are ideas that had been tried in ID)
+-2.5 E(A, b)-.4 E(ut man)-.2 E 2.5(yo)-.15 G 2.5(ft)-2.5 G
+(hem were generalized in V8.)-2.5 E F0 2.5(2.1. P)87 417 R(erf)-.2 E
+(ormance Enhancements)-.25 E F1 .549
+(Instead of closing SMTP connections immediately)127 433.2 R 3.049(,o)
+-.65 G .549(pen connections are cached for possible)-3.049 F .029
+(future use.)102 445.2 R .029(There is a limit to the number of simultaneous open connections and the idle time of an)
+5.029 F(y)-.15 E(indi)102 457.2 Q(vidual connection.)-.25 E 1.219(This is of best help during queue processing \(since there is the potential of man)
+127 473.4 R 3.719(yd)-.15 G(if)-3.719 E(ferent)-.25 E 1.113(messages going to one site\), although it can also help when processing MX records which aren')
+102 485.4 R(t)-.18 E(handled by MX Piggybacking.)102 497.4 Q 1.258
+(If tw)127 513.6 R 3.757(oh)-.1 G 1.257(osts with dif)-3.757 F 1.257
+(ferent names in a single message happen to ha)-.25 F 1.557 -.15(ve t)
+-.2 H 1.257(he same set of MX).15 F .94(hosts, the)102 525.6 R 3.44(yc)
+-.15 G .94(an be sent in the same transaction.)-3.44 F -1.11(Ve)5.94 G
+.94(rsion 8 notices this and tries to batch the mes-)1.11 F(sages.)102
+537.6 Q -.15(Fo)127 553.8 S 3.638(re).15 G 1.138(xample, if tw)-3.788 F
+3.637(os)-.1 G 1.137(ites `)-3.637 F(`foo.com')-.74 E 3.637('a)-.74 G
+1.137(nd `)-3.637 F(`bar)-.74 E(.com')-.55 E 3.637('a)-.74 G 1.137
+(re both serv)-3.637 F 1.137(ed by UUNET)-.15 F 3.637(,t)-.74 G(he)
+-3.637 E 3.637(yw)-.15 G(ill)-3.637 E(ha)102 565.8 Q .557 -.15(ve t)-.2
+H .257(he same set of MX hosts and will be sent in one transaction.).15
+F .258(UUNET will then split the mes-)5.258 F
+(sage and send it to the tw)102 577.8 Q 2.5(oi)-.1 G(ndi)-2.5 E
+(vidual hosts.)-.25 E F0 2.5(2.2. RFC)87 601.8 R(1123 Changes)2.5 E F1
+2.607(An)127 618 S .107(umber of changes ha)-2.607 F .407 -.15(ve b)-.2
+H .106(een made to mak).15 F 2.606(es)-.1 G .106(endmail `)-2.606 F .106
+(`conditionally compliant')-.74 F 2.606('\()-.74 G .106(that is, it)
+-2.606 F(satis\214es all of the MUST clauses and most b)102 630 Q
+(ut not all of the SHOULD clauses in RFC 1123\).)-.2 E(The major areas of change are \(numbers are RFC 1123 section numbers\):)
+127 646.2 Q 26.5(\2475.2.7 Response)102 662.4 R .565
+(to RCPT command is f)3.065 F 3.065(ast. Pre)-.1 F(viously)-.25 E 3.065
+(,s)-.65 G .565(endmail e)-3.065 F .565(xpanded all aliases as f)-.15 F
+(ar)-.1 E .686(as it could \212 this could tak)156 674.4 R 3.186(eav)-.1
+G .685(ery long time, particularly if there were name serv)-3.336 F(er)
+-.15 E 3.891(delays. V)156 686.4 R 1.391(ersion 8 only checks for the e)
+-1.11 F 1.392(xistence of an alias and does the e)-.15 F(xpansion)-.15 E
+(later)156 698.4 Q 5.176(.I)-.55 G 2.676(td)-5.176 G .176
+(oes still do a DNS lookup if there is an e)-2.676 F .175
+(xplicit host name in the RCPT com-)-.15 F(mand, b)156 710.4 Q
+(ut this time is bounded.)-.2 E EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(3)
+294.65 E/F1 10/Times-Roman@0 SF 26.5(\2475.2.8 Numeric)102 96 R .612
+(IP addresses are logged in Recei)3.112 F -.15(ve)-.25 G .613(d: lines.)
+.15 F .613(This helps tracing spoofed mes-)5.613 F(sages.)156 108 Q 21.5
+(\2475.2.17 Self)102 124.2 R .127(domain literal is properly handled.)
+2.627 F(Pre)5.126 E(viously)-.25 E 2.626(,i)-.65 G 2.626(fs)-2.626 G
+.126(omeone sent to user@[1.2.3.4],)-2.626 F .12
+(where 1.2.3.4 is your IP address, the mail w)156 136.2 R .12
+(ould probably be rejected with a `)-.1 F(`con\214gu-)-.74 E
+(ration error')156 148.2 Q 2.5('. V)-.74 F
+(ersion 8 can handle these addresses.)-1.11 E 26.5(\2475.3.2 Better)102
+164.4 R 1.189(control o)3.69 F -.15(ve)-.15 G 3.689(ri).15 G(ndi)-3.689
+E 1.189(vidual timeouts.)-.25 F 1.189(RFC 821 speci\214ed no timeouts.)
+6.189 F 1.189(Older v)6.189 F(er)-.15 E(-)-.2 E .002
+(sions of sendmail had a single timeout, typically set to tw)156 176.4 R
+2.502(oh)-.1 G 2.502(ours. V)-2.502 F .002(ersion 8 allo)-1.11 F .002
+(ws the)-.25 F(con\214guration \214le to set timeouts for v)156 188.4 Q
+(arious SMTP commands indi)-.25 E(vidually)-.25 E(.)-.65 E 26.5
+(\2475.3.3 Error)102 204.6 R 1.06(messages are sent as From:<>.)3.56 F
+1.059(This w)6.059 F 1.059(as ur)-.1 F 1.059
+(ged by RFC 821 and reiterated by)-.18 F .237(RFC 1123, b)156 216.6 R
+.237(ut older v)-.2 F .237(ersions of sendmail ne)-.15 F -.15(ve)-.25 G
+2.737(rr).15 G .237(eally did it properly)-2.737 F 5.237(.V)-.65 G .238
+(ersion 8 does.)-6.347 F(Ho)156 228.6 Q(we)-.25 E -.15(ve)-.25 G 1.934
+-.4(r, s).15 H 1.134(ome systems cannot handle this perfectly le).4 F
+-.05(ga)-.15 G 3.633(la).05 G 1.133(ddress; if necessary)-3.633 F 3.633
+(,y)-.65 G(ou)-3.633 E
+(can create a special mailer that uses the `g' \215ag to disable this.)
+156 240.6 Q 26.5(\2475.3.3 Error)102 256.8 R 3.212(messages are ne)5.712
+F -.15(ve)-.25 G 5.712(rs).15 G 3.212(ent to <>.)-5.712 F(Pre)8.213 E
+(viously)-.25 E 5.713(,s)-.65 G 3.213(endmail w)-5.713 F 3.213(as happ)
+-.1 F 5.713(yt)-.1 G 5.713(os)-5.713 G(end)-5.713 E 6(responses-to-responses which sometimes resulted in responses-to-responses-to-)
+156 268.8 R(responses which resulted in ....)156 280.8 Q
+(you get the idea.)5 E 26.5(\2475.3.3 Route-addrs)102 297 R .111
+(\(the ugly `)2.611 F(`<@hosta,@hostb:user@hostc>')-.74 E 2.611('s)-.74
+G .111(yntax\) are pruned.)-2.611 F .112(RFC 821)5.112 F(ur)156 309 Q
+1.001(ged the use of this bletcherous syntax.)-.18 F 1
+(RFC 1123 has seen the light and of)6.001 F(\214cially)-.25 E 1.124
+(deprecates them, further ur)156 321 R 1.125
+(ging that you eliminate all b)-.18 F 1.125(ut `)-.2 F(`user@hostc')-.74
+E 3.625('s)-.74 G 1.125(hould you)-3.625 F(recei)156 333 Q 1.698 -.15
+(ve o)-.25 H 1.398(ne of these things.).15 F -1.11(Ve)6.398 G 1.398
+(rsion 8 is slightly more generous than the standards)1.11 F .753
+(suggest; instead of stripping of)156 345 R 3.253(fa)-.25 G .753
+(ll the route addressees, it only strips hosts of)-3.253 F 3.254(fu)-.25
+G 3.254(pt)-3.254 G(o)-3.254 E 1.29(the one before the last one kno)156
+357 R 1.289(wn to DNS, thus allo)-.25 F 1.289(wing you to ha)-.25 F
+1.589 -.15(ve p)-.2 H(seudo-hosts).15 E(such as foo.BITNET)156 369 Q 5
+(.T)-.74 G(he `R' option will turn this of)-5 E(f.)-.25 E
+(The areas in which sendmail is not `)102 385.2 Q
+(`unconditionally compliant')-.74 E 2.5('a)-.74 G(re:)-2.5 E 26.5
+(\2475.2.6 Sendmail)102 401.4 R(does do header munging.)2.5 E 21.5
+(\2475.2.10 Sendmail)102 417.6 R(doesn')3.2 E 3.2(ta)-.18 G -.1(lwa)-3.2
+G .7(ys use the e).1 F .701(xact SMTP message te)-.15 F .701
+(xt from RFC 821.)-.15 F .701(This is a)5.701 F
+(rather silly requirement.)156 429.6 Q 19(\2475.3.1.1 Sendmail)102 445.8
+R(doesn')3.512 E 3.512(tg)-.18 G 1.012
+(uarantee only one connect for each host on queue runs.)-3.512 F
+(Connec-)6.011 E(tion caching gi)156 457.8 Q -.15(ve)-.25 G 2.5(sy).15 G
+(ou most of this, b)-2.5 E(ut it does not pro)-.2 E(vide a guarantee.)
+-.15 E 19(\2475.3.1.1 Sendmail)102 474 R(doesn')2.843 E 2.843(ta)-.18 G
+-.1(lwa)-2.843 G .343(ys pro).1 F .343
+(vide an adequate limit on concurrenc)-.15 F 4.144 -.65(y. T)-.15 H .344
+(hat is, there can).65 F .757(be se)156 486 R -.15(ve)-.25 G .757
+(ral independent sendmails running at once.).15 F .757
+(My feeling is that doing an abso-)5.757 F 1.047(lute limit w)156 498 R
+1.047(ould be a mistak)-.1 F 3.547(e\()-.1 G 1.048
+(it might result in lost mail\).)-3.547 F(Ho)6.048 E(we)-.25 E -.15(ve)
+-.25 G 1.848 -.4(r, i).15 H 3.548(fy).4 G 1.048(ou use the)-3.548 F .801
+(XLA contrib)156 510 R .801(uted softw)-.2 F .801
+(are, most of this will be guaranteed \(b)-.1 F .801(ut I don')-.2 F 3.3
+(tg)-.18 G .8(uarantee the)-3.3 F(guarantee\).)156 522 Q F0 2.5
+(2.3. Extended)87 546 R(SMTP Support)2.5 E F1 -1.11(Ve)127 562.2 S .154
+(rsion 8 includes both sending and recei)1.11 F .155
+(ving support for Extended SMTP support as de\214ned)-.25 F .229(by RFC 1425 \(basic\) and RFC 1427 \(SIZE\); and limited support for RFC 1426 \(BOD)
+102 574.2 R 2.729(Y\). The)-.55 F(body)2.729 E .275(support is minimal because the \2318BITMIME\232 body type is not currently adv)
+102 586.2 R 2.776(ertised. Although)-.15 F(such)2.776 E 3.076(ab)102
+598.2 S .576(ody type will be accepted, it will not be correctly con)
+-3.076 F -.15(ve)-.4 G .576(rted to 7 bits if speaking to a non-8-bit-)
+.15 F(MIME a)102 610.2 Q -.1(wa)-.15 G(re SMTP serv).1 E(er)-.15 E(.)
+-.55 E/F2 10/Times-Italic@0 SF(Sendmail)127 626.4 Q F1 .287
+(tries to speak ESMTP if you ha)2.787 F .588 -.15(ve t)-.2 H .288
+(he `a' \215ag set in the \215ags for the mailer descrip-).15 F(tor)102
+638.4 Q 3.322(,o)-.4 G 3.322(ri)-3.322 G 3.322(ft)-3.322 G .822
+(he other end adv)-3.322 F .822(ertises the f)-.15 F .822
+(act that it speaks ESMTP)-.1 F 5.822(.T)-1.11 G .821
+(his is a non-standard adv)-5.822 F(ertise-)-.15 E(ment:)102 650.4 Q F2
+(sendmail)2.98 E F1 .48(announces \231ESMTP spok)2.98 F .48
+(en here\232 during the initial connection message, and client)-.1 F
+.587(sendmails search for this message.)102 662.4 R .586
+(This creates some problems for some PC-based mailers, which)5.586 F
+(do not understand tw)102 674.4 Q
+(o-line greeting messages as required by RFC 821.)-.1 E EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 294.65(4C)72 60 S(hanges in Sendmail V)-294.65 E
+(ersion 8)-1 E 2.5(2.4. Eight-Bit)87 96 R(Clean)2.5 E/F1 10
+/Times-Roman@0 SF(Pre)127 112.2 Q 1.263(vious v)-.25 F 1.263
+(ersions of sendmail used the 0200 bit for quoting.)-.15 F 1.264(This v)
+6.264 F 1.264(ersion a)-.15 F -.2(vo)-.2 G 1.264(ids that use.).2 F(Ho)
+102 124.2 Q(we)-.25 E -.15(ve)-.25 G 1.119 -.4(r, y).15 H .318
+(ou can set option `7' to get se).4 F -.15(ve)-.25 G 2.818(nb).15 G .318
+(it stripping for compatibility with RFC 821, which is)-2.818 F 2.5(a7)
+102 136.2 S(-bit protocol.)-2.5 E(This option says `)5 E
+(`strip to 7 bits on input')-.74 E('.)-.74 E(Indi)127 152.4 Q .375
+(vidual mailers can still produce se)-.25 F -.15(ve)-.25 G 2.875(nb).15
+G .376(it out put using the `7' mailer \215ag.)-2.875 F .376
+(This \215ag says)5.376 F -.74(``)102 164.4 S
+(strip to 7 bits on output').74 E('.)-.74 E F0 2.5(2.5. User)87 188.4 R
+(Database)2.5 E F1 1.926(The User Database \(UDB\) is an as-yet e)127
+204.6 R 1.926(xperimental attempt to pro)-.15 F 1.925
+(vide uni\214ed lar)-.15 F(ge-site)-.18 E .396(name support.)102 216.6 R
+1.996 -.8(We a)5.396 H .396(re installing it at Berk).8 F(ele)-.1 E .396
+(y; future v)-.15 F .396(ersions may sho)-.15 F 2.897(ws)-.25 G .397
+(igni\214cant modi\214cations.)-2.897 F(Brie\215y)102 228.6 Q 3.583(,U)
+-.65 G 1.083
+(DB contains a database that is intended to contain all the per)-3.583 F
+1.082(-user information for your)-.2 F -.1(wo)102 240.6 S .172
+(rkgroup, such as people').1 F 2.673(sf)-.55 G .173(ull names, their .plan information, their outgoing mail name, and their)
+-2.673 F(mail drop.)102 252.6 Q .438(The user database allo)127 268.8 R
+.438(ws you to map both incoming and outgoing addresses, much lik)-.25 F
+2.937(eI)-.1 G -.4(DA)-2.937 G(.).4 E(Ho)102 280.8 Q(we)-.25 E -.15(ve)
+-.25 G 1.799 -.4(r, t).15 H .999(he interf).4 F .999
+(ace is still better with ID)-.1 F .999(A; in particular)-.4 F 3.499(,t)
+-.4 G 1(he alias \214le with incoming/outgoing)-3.499 F(marks pro)102
+292.8 Q(vides better locality of information.)-.15 E F0 2.5(2.6. Impr)87
+316.8 R -.1(ove)-.18 G 2.5(dB).1 G(IND Support)-2.5 E F1 .262
+(The BIND support, particularly for MX records, had a number of anno)127
+333 R .261(ying `)-.1 F(`features')-.74 E 2.761('w)-.74 G(hich)-2.761 E
+(ha)102 345 Q 1.212 -.15(ve b)-.2 H .912(een remo).15 F -.15(ve)-.15 G
+3.412(di).15 G 3.412(nt)-3.412 G .912(his release.)-3.412 F .912
+(In particular)5.912 F 3.412(,t)-.4 G .912
+(hese more tightly bind \(pun intended\) the name)-3.412 F(serv)102 357
+Q(er to sendmail, so that the name serv)-.15 E
+(er resolution rules are incorporated directly into sendmail.)-.15 E
+.688(The major change has been that the $[ ... $] operator didn')127
+373.2 R 3.188(tf)-.18 G .688(ully qualify names that were in)-3.188 F
+(DNS as A or MX records.)102 385.2 Q -1.11(Ve)5 G
+(rsion 8 does this quali\214cation.)1.11 E .429(This has pro)127 401.4 R
+-.15(ve)-.15 G 2.929(nt).15 G 2.929(ob)-2.929 G 2.929(ea)-2.929 G 2.929
+(na)-2.929 G(nno)-2.929 E .43
+(yance in Sun shops, who often still run without BIND support.)-.1 F(Ho)
+102 413.4 Q(we)-.25 E -.15(ve)-.25 G 1.001 -.4(r, i).15 H 2.701(ti).4 G
+2.701(sr)-2.701 G .201
+(eally critical that this be supported, since MX records are mandatory)
+-2.701 F 5.2(.I)-.65 G 2.7(nS)-5.2 G .2(unOS you)-2.7 F .101
+(can choose either MX support or NIS support, b)102 425.4 R .101
+(ut not both.)-.2 F .101(This is \214x)5.101 F .101
+(ed in Solaris, and some)-.15 F/F2 10/Times-Italic@0 SF(send-)2.602 E
+(mail)102 437.4 Q F1(support to allo)2.5 E 2.5(wt)-.25 G
+(his in SunOS should be forthcoming in a future release.)-2.5 E F0 2.5
+(2.7. K)87 461.4 R(ey)-.25 E(ed Files)-.1 E F1 .242(Generalized k)127
+477.6 R -.15(ey)-.1 G .242(ed \214les is an idea tak).15 F .241
+(en directly from ID)-.1 F 2.741(As)-.4 G .241
+(endmail \(albeit with a completely)-2.741 F(dif)102 489.6 Q
+(ferent implementation\).)-.25 E(The)5 E 2.5(yc)-.15 G
+(an be useful on lar)-2.5 E(ge sites.)-.18 E -1.11(Ve)127 505.8 S
+(rsion 8 includes the follo)1.11 E(wing b)-.25 E(uilt-in map classes:)
+-.2 E 33.72(dbm Support)102 522 R(for the ndbm\(3\) library)2.5 E(.)-.65
+E 33.17(hash Support)102 538.2 R 1.229(for the `)3.729 F(`Hash')-.74 E
+3.729('t)-.74 G 1.229(ype from the ne)-3.729 F 3.729(wB)-.25 G(erk)
+-3.729 E(ele)-.1 E 3.729(yd)-.15 G 1.229(b\(3\) library)-3.729 F 6.23
+(.t)-.65 G 1.23(his library pro-)-6.23 F 4.094(vides substantially better database support than ndbm\(3\), including in-memory)
+156 550.2 R(caching, arbitrarily long k)156 562.2 Q -.15(ey)-.1 G 2.5
+(sa).15 G(nd v)-2.5 E(alues, and better disk utilization.)-.25 E 31.51
+(btree Support)102 578.4 R .547(for the `)3.047 F(`B-T)-.74 E(ree')-.35
+E 3.047('t)-.74 G .547(ype from the ne)-3.047 F 3.048(wB)-.25 G(erk)
+-3.048 E(ele)-.1 E 3.048(yd)-.15 G .548(b\(3\) library)-3.048 F 5.548
+(.B)-.65 G(-T)-5.548 E .548(rees pro)-.35 F(vide)-.15 E .521(better clustering than Hashed \214les if you are fetching lots of records that ha)
+156 590.4 R .821 -.15(ve s)-.2 H(imilar).15 E -.1(ke)156 602.4 S
+(ys, such as searching a dictionary for w)-.05 E(ords be)-.1 E
+(ginning with `)-.15 E(`detr')-.74 E('.)-.74 E 39.83(nis Support)102
+618.6 R(for NIS \(a.k.a. YP\) maps.)2.5 E
+(NIS+ is not supported in this v)5 E(ersion.)-.15 E 34.83(host Support)
+102 634.8 R(for DNS lookups.)2.5 E 19.84(dequote A)102 651 R -.74(``)
+2.642 G(pseudo-map').74 E 2.642('\()-.74 G .142
+(that is, once that does not ha)-2.642 F .442 -.15(ve a)-.2 H .442 -.15
+(ny ex).15 H .142(ternal data\) that allo).15 F .142(ws a con-)-.25 F
+.099(\214guration \214le to break apart a quoted string in the address.)
+156 663 R .098(This is necessary primarily)5.098 F .726
+(for DECnet addresses, which often ha)156 675 R 1.026 -.15(ve q)-.2 H
+.726(uoted addresses that need to be unwrapped).15 F(on g)156 687 Q(ate)
+-.05 E -.1(wa)-.25 G(ys.).1 E EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(5)
+294.65 E 2.5(2.8. Multi-W)87 96 R(ord Classes & Macr)-.75 E
+(os in Classes)-.18 E/F1 10/Times-Roman@0 SF(Classes can no)127 112.2 Q
+2.5(wb)-.25 G 2.5(em)-2.5 G(ultiple w)-2.5 E 2.5(ords. F)-.1 F(or e)-.15
+E(xample,)-.15 E(CShofmann.CS.Berk)142 128.4 Q(ele)-.1 E -.65(y.)-.15 G
+(EDU).65 E(allo)102 144.6 Q 2.395(ws you to match the entire string `)
+-.25 F(`hofmann.CS.Berk)-.74 E(ele)-.1 E -.65(y.)-.15 G(EDU').65 E 4.894
+('u)-.74 G 2.394(sing the single construct)-4.894 F -.74(``)102 156.6 S
+($=S').74 E('.)-.74 E(Class de\214nitions are no)127 172.8 Q 2.5(wa)-.25
+G(llo)-2.5 E(wed to include macros \212 for e)-.25 E(xample:)-.15 E
+(Cw$k)142 189 Q(is le)102 205.2 Q -.05(ga)-.15 G(l.).05 E F0 2.5
+(2.9. IDENT)87 229.2 R(Pr)2.5 E(otocol Support)-.18 E F1 .633
+(The IDENT protocol as de\214ned in RFC 1413 [RFC1413] is supported.)127
+245.4 R(Ho)5.633 E(we)-.25 E -.15(ve)-.25 G 1.433 -.4(r, m).15 H(an).4 E
+3.134(ys)-.15 G(ys-)-3.134 E .909(tems ha)102 257.4 R 1.209 -.15(ve a T)
+-.2 H .909(CP/IP b).15 F .908
+(ug that renders this useless, and the feature must be turned of)-.2 F
+3.408(f. Roughly)-.25 F 3.408(,i)-.65 G(f)-3.408 E 8.538
+(one of these system recei)102 269.4 R -.15(ve)-.25 G 11.038(sa\231).15
+G 8.539(No route to host\232 message \(ICMP message)-11.038 F
+(ICMP_UNREA)102 281.4 Q .829(CH_HOST\) on)-.4 F/F2 10/Times-Italic@0 SF
+(any)3.329 E F1 .828
+(connection, all connections to that host are closed.)3.329 F .828
+(Some \214re-)5.828 F -.1(wa)102 293.4 S .087(lls return this error if you try to connect to the IDENT port, so you can')
+.1 F 2.587(tr)-.18 G(ecei)-2.587 E .387 -.15(ve e)-.25 H .087
+(mail from these).15 F 1.712(hosts on these systems.)102 305.4 R(It')
+6.712 E 4.212(sp)-.55 G 1.712(ossible that if the \214re)-4.212 F -.1
+(wa)-.25 G 1.712(ll used a more speci\214c message \(such as).1 F
+(ICMP_UNREA)102 317.4 Q(CH_PR)-.4 E -1.88 -.4(OT O)-.4 H 4.316
+(COL, ICMP_UNREA).4 F(CH_POR)-.4 E 6.817(To)-.6 G 6.817(rI)-6.817 G
+(CMP_UNREA)-6.817 E(CH_NET_PR)-.4 E(O-)-.4 E(HIB\) it w)102 329.4 Q
+(ould w)-.1 E(ork, b)-.1 E(ut this hasn')-.2 E 2.5(tb)-.18 G(een v)-2.5
+E(eri\214ed.)-.15 E .678(IDENT protocol support cannot be used on 4.3BSD, Apollo DomainOS, Apple A/UX, Con-)
+127 345.6 R -.15(vex)102 357.6 S .949
+(OS, Data General DG/UX, HP-UX, Sequent Dynix, or Ultrix 4.x, x).15 F/F3
+10/Symbol SF<a3>3.449 E F1 3.449(3. It)3.449 F .949(seems to w)3.449 F
+.949(ork on)-.1 F
+(4.4BSD, IBM AIX 3.x, OSF/1, SGI IRIX, Solaris, SunOS, and Ultrix 4.4.)
+102 369.6 Q F0 2.5(2.10. Separate)87 393.6 R(En)2.5 E -.1(ve)-.4 G
+(lope/Header Pr).1 E(ocessing)-.18 E F1 .854
+(Since the From: line is passed in separately from the en)127 409.8 R
+-.15(ve)-.4 G .854(lope sender).15 F 3.354(,t)-.4 G .854(hese ha)-3.354
+F 1.154 -.15(ve b)-.2 H .854(oth been).15 F .427
+(made visible; the $g macro is set to the en)102 421.8 R -.15(ve)-.4 G
+.428(lope sender during processing of mailer ar).15 F .428(gument v)-.18
+F(ec-)-.15 E(tors and the header sender during processing of headers.)
+102 433.8 Q .085(It is also possible to specify separate per)127 450 R
+.085(-mailer en)-.2 F -.15(ve)-.4 G .084(lope and header processing.).15
+F .084(The Sender)5.084 F(-)-.2 E -.55(RW)102 462 S 1.085
+(Set and RecipientR).55 F 1.085(Wset ar)-.55 F 1.085
+(guments for mailers can be speci\214ed as `)-.18 F(`en)-.74 E -.15(ve)
+-.4 G(lope/header').15 E 3.585('t)-.74 G 3.585(og)-3.585 G -2.15 -.25
+(iv e)-3.585 H(dif)102 474 Q(ferent re)-.25 E(writings for en)-.25 E
+-.15(ve)-.4 G(lope v).15 E(ersus header addresses.)-.15 E F0 2.5
+(2.11. Owner)87 498 R(-List Pr)-.37 E(opagates to En)-.18 E -.1(ve)-.4 G
+(lope).1 E F1 1.168(When an alias has an associated o)127 514.2 R(wner)
+-.25 E 1.168(-list name, that alias is used to change the en)-.2 F -.15
+(ve)-.4 G(lope).15 E(sender address.)102 526.2 Q(This will cause do)5 E
+(wnstream errors to be returned to that o)-.25 E(wner)-.25 E(.)-.55 E
+1.813(Some people \214nd this confusing because the en)127 542.4 R -.15
+(ve)-.4 G 1.813(lope sender is what appears in the \214rst).15 F -.74
+(``)102 554.4 S(From_').74 E 3.127('l)-.74 G .627
+(ine in UNIX messages \(that is, the line be)-3.127 F .627(ginning `)
+-.15 F(`From<space>')-.74 E 3.127('i)-.74 G .627(nstead of `)-3.127 F
+(`From:')-.74 E(';)-.74 E .502(the latter is the header from, which)102
+566.4 R F2(does)3.002 E F1 .503(indicate the sender of the message\).)
+3.002 F .503(In pre)5.503 F .503(vious v)-.25 F(ersions,)-.15 E F2
+(sendmail)102 578.4 Q F1 .057(has tried to a)2.557 F -.2(vo)-.2 G .057
+(id changing the en).2 F -.15(ve)-.4 G .056
+(lope sender for back compatibility with UNIX con).15 F -.15(ve)-.4 G
+(n-).15 E .177
+(tion; at this point that back compatibility is creating too man)102
+590.4 R 2.678(yp)-.15 G .178(roblems, and it is necessary to mo)-2.678 F
+-.15(ve)-.15 G(forw)102 602.4 Q(ard into the 1980s.)-.1 E F0 2.5
+(2.12. Command)87 626.4 R(Line Flags)2.5 E F1(The)127 642.6 Q F0<ad42>
+2.5 E F1(\215ag has been added to pass in body type information.)2.5 E
+(The)127 658.8 Q F0<ad70>3.057 E F1 .557
+(\215ag has been added to pass in protocol information that w)3.057 F
+.557(as pre)-.1 F .556(viously passed in by)-.25 F(de\214ning the)102
+670.8 Q F0($r)2.5 E F1(and)2.5 E F0($s)2.5 E F1(macros.)2.5 E(The)127
+687 Q F0<ad58>2.6 E F1 .1(\215ag has been added to allo)2.6 F 2.6(wl)
+-.25 G .1(ogging of all protocol in and out of sendmail for deb)-2.6 F
+(ug-)-.2 E 2.732(ging. Y)102 699 R .232(ou can set \231\255X \214lename\232 and a complete transcript will be logged in that \214le.)
+-1.1 F .231(This gets big)5.231 F -.1(fa)102 711 S
+(st: the option is only for deb).1 E(ugging.)-.2 E EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 294.65(6C)72 60 S(hanges in Sendmail V)-294.65 E
+(ersion 8)-1 E/F1 10/Times-Roman@0 SF(The)127 96 Q F0<ad71>4.006 E F1
+1.507(\215ag can limit limit a queue run to speci\214c recipients, senders, or queue ids using)
+4.006 F(\255qRsubstring, \255qSsubstring, or \255qIsubstring respecti)
+102 108 Q -.15(ve)-.25 G(ly).15 E(.)-.65 E F0 2.5(2.13. New)87 132 R
+(Con\214guration Line T)2.5 E(ypes)-.74 E F1 .674(The `T' \(T)127 148.2
+R .674(rusted users\) con\214guration line has been deleted.)-.35 F .674
+(It will still be accepted b)5.674 F .674(ut will)-.2 F(be ignored.)102
+160.2 Q(The `K' line has been added to declare database maps.)127 176.4
+Q(The `V' line has been added to declare the con\214guration v)127 192.6
+Q(ersion le)-.15 E -.15(ve)-.25 G(l.).15 E(The `M' \(mailer\) line tak)
+127 208.8 Q(es a D= \214eld to specify e)-.1 E -.15(xe)-.15 G
+(cution directory).15 E(.)-.65 E F0 2.5(2.14. New)87 232.8 R
+(and Extended Options)2.5 E F1(Se)127 249 Q -.15(ve)-.25 G .9(ral ne).15
+F 3.4(wo)-.25 G .9(ptions ha)-3.4 F 1.2 -.15(ve b)-.2 H .9
+(een added, man).15 F 3.4(yt)-.15 G 3.4(os)-3.4 G .9(upport ne)-3.4 F
+3.4(wf)-.25 G .9(eatures, others to allo)-3.4 F 3.4(wt)-.25 G(uning)-3.4
+E(that w)102 261 Q(as pre)-.1 E(viously a)-.25 E -.25(va)-.2 G
+(ilable only by recompiling.).25 E(Brie\215y:)5 E 28.78(AT)102 277.2 S
+.099(he alias \214le speci\214cation can no)-28.78 F 2.599(wb)-.25 G
+2.599(eal)-2.599 G .099(ist of alias \214les.)-2.599 F .098
+(Also, the con\214guration can spec-)5.099 F(ify a class of \214le.)138
+289.2 Q -.15(Fo)5 G 2.5(re).15 G
+(xample, to search the NIS aliases, use \231O)-2.65 E
+(Anis:mail.aliases\232.)-.35 E 31(bI)102 305.4 S
+(nsist on a minimum number of disk blocks.)-31 E 29.33(CD)102 321.6 S
+(eli)-29.33 E -.15(ve)-.25 G .24(ry checkpoint interv).15 F 2.74
+(al. Checkpoint)-.25 F .24(the queue \(to a)2.74 F -.2(vo)-.2 G .24
+(id duplicate deli).2 F -.15(ve)-.25 G .24(ries\) e).15 F -.15(ve)-.25 G
+.24(ry C).15 F(addresses.)138 333.6 Q 29.89(ED)102 349.8 S(ef)-29.89 E
+.712(ault error message.)-.1 F .711
+(This message \(or the contents of the indicated \214le\) are prepended)
+5.712 F(to error messages.)138 361.8 Q 28.78(GE)102 378 S .785
+(nable GECOS matching.)-28.78 F .785(If you can')5.785 F 3.285<748c>-.18
+G .786(nd a local user name and this option is enabled,)-3.285 F .59
+(do a sequential scan of the passwd \214le to match ag)138 390 R .589
+(ainst full names.)-.05 F(Pre)5.589 E .589(viously a compile)-.25 F
+(option.)138 402 Q 31(hM)102 418.2 S(aximum hop count.)-31 E(Pre)5 E
+(viously this w)-.25 E(as compiled in.)-.1 E 32.67(IT)102 434.4 S
+(his option has been e)-32.67 E(xtended to allo)-.15 E 2.5(ws)-.25 G
+(etting of resolv)-2.5 E(er parameters.)-.15 E 33.22(jS)102 450.6 S
+(end errors in MIME-encapsulated format.)-33.22 E 32.11(JF)102 466.8 S
+(orw)-32.26 E(ard \214le path.)-.1 E(Where to search for .forw)5 E
+(ard \214les \212 def)-.1 E(aults to $HOME/.forw)-.1 E(ard.)-.1 E 31(kC)
+102 483 S .05(onnection cache size.)-31 F .05
+(The total number of connections that will be k)5.05 F .05
+(ept open at an)-.1 F 2.55(yt)-.15 G(ime.)-2.55 E 28.78(KC)102 499.2 S
+1.395(onnection cache lifetime.)-28.78 F 1.395(The amount of time an)
+6.395 F 3.895(yc)-.15 G 1.394(onnection will be permitted to sit)-3.895
+F(idle.)138 511.2 Q 33.22(lE)102 527.4 S .333(nable Errors-T)-33.22 F
+.333(o: header)-.8 F 5.334(.T)-.55 G .334
+(hese headers violate RFC 1123; this option is included to pro-)-5.334 F
+(vide back compatibility with old v)138 539.4 Q(ersions of sendmail.)
+-.15 E 28.78(OI)102 555.6 S
+(ncoming daemon options \(e.g., use alternate SMTP port\).)-28.78 E 31
+(pP)102 571.8 S(ri)-31 E -.25(va)-.25 G .3 -.15(cy o).25 H 2.5
+(ptions. These).15 F(can be used to mak)2.5 E 2.5(ey)-.1 G
+(our SMTP serv)-2.5 E(er less friendly)-.15 E(.)-.65 E 32.67(rT)102 588
+S .67(his option has been e)-32.67 F .67(xtended to allo)-.15 F 3.17
+<778c>-.25 G .67(ner grained control o)-3.17 F -.15(ve)-.15 G 3.17(rt)
+.15 G 3.17(imeouts. F)-3.17 F .67(or e)-.15 F(xample,)-.15 E
+(you can set the timeout for SMTP commands indi)138 600 Q(vidually)-.25
+E(.)-.65 E 29.33(RD)102 616.2 S(on')-29.33 E 11.797(tp)-.18 G 9.297
+(rune route-addrs.)-11.797 F(Normally)14.297 E 11.797(,i)-.65 G 11.797
+(fv)-11.797 G 9.297(ersion 8 sees an address lik)-11.947 F(e)-.1 E 1.256
+("<@hostA,@hostB:user@hostC>, sendmail will try to strip of)138 628.2 R
+3.755(fa)-.25 G 3.755(sm)-3.755 G 1.255(uch as it can \(up to)-3.755 F
+(user@hostC\) as suggested by RFC 1123.)138 640.2 Q
+(This option disables that beha)5 E(viour)-.2 E(.)-.55 E 29.89(TT)102
+656.4 S 1.485(he \231Return T)-29.89 F 3.985(oS)-.8 G 1.485
+(ender\232 timeout has been e)-3.985 F 1.485(xtended to allo)-.15 F
+3.986(ws)-.25 G 1.486(peci\214cation of a w)-3.986 F(arning)-.1 E .789
+(message interv)138 668.4 R .789
+(al, typically something on the order of four hours.)-.25 F .788
+(If a message cannot be)5.788 F(deli)138 680.4 Q -.15(ve)-.25 G 1.245
+(red in that interv).15 F 1.245(al, a w)-.25 F 1.245
+(arning message is sent back to the sender b)-.1 F 1.246(ut the message)
+-.2 F(continues to be tried.)138 692.4 Q 28.78(UU)102 708.6 S
+(ser database spec.)-28.78 E(This is still e)5 E(xperimental.)-.15 E EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(7)
+294.65 E/F1 10/Times-Roman@0 SF 28.78(VF)102 96 S .758(allback `)-28.93
+F(`MX')-.74 E 3.258('h)-.74 G 3.258(ost. This)-3.258 F .757
+(can be thought of as an MX host that applies to all addresses)3.258 F
+(that has a v)138 108 Q(ery high preference v)-.15 E
+(alue \(that is, use it only if e)-.25 E -.15(ve)-.25 G(rything else f)
+.15 E(ails\).)-.1 E 28.78(wI)102 124.2 S 3.066(fs)-28.78 G .566(et, assume that if you are the best MX host for a host, you should send directly to that)
+-3.066 F 3.213(host. This)138 136.2 R .713
+(is intended for compatibility with UIUC sendmail, and may ha)3.213 F
+1.013 -.15(ve s)-.2 H .712(ome use on).15 F(\214re)138 148.2 Q -.1(wa)
+-.25 G(lls.).1 E 31(7D)102 164.4 S 2.758(on)-31 G .258
+(ot run eight bit clean.)-2.758 F -.7(Te)5.258 G(chnically).7 E 2.758
+(,y)-.65 G .258(ou ha)-2.758 F .558 -.15(ve t)-.2 H 2.758(oa).15 G .259
+(ssert this option to be RFC 821 com-)-2.758 F(patible.)138 176.4 Q F0
+2.5(2.15. New)87 200.4 R(Mailer De\214nitions)2.5 E F1 21.75(L= Set)102
+216.6 R .93(the allo)3.43 F -.1(wa)-.25 G .93(ble line length.).1 F .93
+(In V5, the L mailer \215ag implied a line length limit of 990)5.93 F
+(characters; this is no)138 228.6 Q 2.5(ws)-.25 G
+(ettable to an arbitrary v)-2.5 E(alue.)-.25 E 17.86(F=a T)102 244.8 R
+(ry to use ESMTP)-.35 E 5(.I)-1.11 G 2.5(tw)-5 G(ill f)-2.5 E
+(all back to SMTP if the initial EHLO pack)-.1 E(et is rejected.)-.1 E
+17.3(F=b Ensure)102 261 R 2.5(ab)2.5 G
+(lank line at the end of messages.)-2.5 E(Useful on the *\214le* mailer)
+5 E(.)-.55 E 17.86(F=c Strip)102 277.2 R .68(all comments from addresses; this should only be used as a last resort when dealing)
+3.18 F(with crank)138 289.2 Q 2.5(ym)-.15 G(ailers.)-2.5 E 17.3(F=g Ne)
+102 305.4 R -.15(ve)-.25 G 2.88(ru).15 G .38
+(se the null sender as the en)-2.88 F -.15(ve)-.4 G .379(lope sender).15
+F 2.879(,e)-.4 G -.15(ve)-3.129 G 2.879(nw).15 G .379(hen running SMTP)
+-2.879 F 5.379(.T)-1.11 G .379(his violates)-5.379 F(RFC 1123.)138 317.4
+Q 17.3(F=7 Strip)102 333.6 R(all output to this mailer to 7 bits.)2.5 E
+16.19(F=L Used)102 349.8 R .198
+(to set the line limit to 990 bytes for SMTP compatibility)2.697 F 5.198
+(.I)-.65 G 2.698(tn)-5.198 G .698 -.25(ow d)-2.698 H .198
+(oes that only if the).25 F(L= k)138 361.8 Q -.15(ey)-.1 G
+(letter is not speci\214ed.).15 E
+(This \215ag is obsolete and should not be used.)5 E F0 2.5(2.16. New)87
+385.8 R(or Changed Pr)2.5 E(e-De\214ned Macr)-.18 E(os)-.18 E F1 23.5
+($k UUCP)102 402 R(node name from uname\(2\).)2.5 E 20.72($m Domain)102
+418.2 R(part of our full hostname.)2.5 E 23.5($_ RFC)102 434.4 R
+(1413-pro)2.5 E(vided sender address.)-.15 E 21.28($w Pre)102 450.6 R
+.148(viously w)-.25 F .148
+(as sometimes the full domain name, sometimes just the \214rst w)-.1 F
+2.647(ord. No)-.1 F 2.647(wg)-.25 G(uar)-2.647 E(-)-.2 E
+(anteed to be the \214rst w)138 462.6 Q
+(ord of the domain name \(i.e., the host name\).)-.1 E 25.72($j Pre)102
+478.8 R .193(viously had to be de\214ned \212 it is no)-.25 F 2.693(wp)
+-.25 G .194(rede\214ned to be the full domain name, if that can)-2.693 F
+(be determined.)138 490.8 Q(That is, it is equi)5 E -.25(va)-.25 G
+(lent to $w).25 E(.$m.)-.65 E F0 2.5(2.17. New)87 514.8 R
+(and Changed Classes)2.5 E F1 17.86($=k Initialized)102 531 R
+(to contain $k.)2.5 E 15.64($=w No)102 547.2 R 3.069(wi)-.25 G .569
+(ncludes \231[1.2.3.4]\232 \(where 1.2.3.4 is your IP address\) to allo)
+-3.069 F 3.068(wt)-.25 G .568(he con\214guration \214le)-3.068 F
+(to recognize your o)138 559.2 Q(wn IP address.)-.25 E F0 2.5(2.18. New)
+87 583.2 R(Rewriting T)2.5 E(ok)-.92 E(ens)-.1 E F1(The)127 599.4 Q F0
+($&)3.25 E F1 .75(construct has been adopted from ID)3.25 F 3.25(At)-.4
+G 3.25(od)-3.25 G .75(efer macro e)-3.25 F -.25(va)-.25 G 3.25
+(luation. Normally).25 F 3.25(,m)-.65 G(acros)-3.25 E .476
+(in rulesets are bound when the rule is \214rst parsed during startup.)
+102 611.4 R .476(Some macros change during pro-)5.476 F .046
+(cessing and are uninteresting during startup.)102 623.4 R(Ho)5.046 E
+(we)-.25 E -.15(ve)-.25 G .846 -.4(r, t).15 H .047
+(hat macro can be referenced using \231$&x\232 to).4 F(defer the e)102
+635.4 Q -.25(va)-.25 G(ulation of $x until the rule is processed.).25 E
+(The tok)127 651.6 Q(ens)-.1 E F0($\()2.5 E F1(and)2.5 E F0($\))2.5 E F1
+(ha)2.5 E .3 -.15(ve b)-.2 H(een added to allo).15 E 2.5(ws)-.25 G
+(peci\214cation of map re)-2.5 E(writing.)-.25 E -1.11(Ve)127 667.8 S
+1.499(rsion 8 allo)1.11 F(ws)-.25 E F0($@)3.999 E F1 1.499
+(on the Left Hand Side of an `R' line to match zero tok)3.999 F 3.998
+(ens. This)-.1 F(is)3.998 E
+(intended to be used to match the null input.)102 679.8 Q EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 294.65(8C)72 60 S(hanges in Sendmail V)-294.65 E
+(ersion 8)-1 E 2.5(2.19. Bigger)87 96 R(Defaults)2.5 E/F1 10
+/Times-Roman@0 SF -1.11(Ve)127 112.2 S 1.283(rsion 8 allo)1.11 F 1.284
+(ws up to 100 rulesets instead of 30.)-.25 F 1.284
+(It is recommended that rulesets 0\2559 be)6.284 F(reserv)102 124.2 Q
+(ed for sendmail')-.15 E 2.5(sd)-.55 G(edicated use in future releases.)
+-2.5 E
+(The total number of MX records that can be used has been raised to 20.)
+127 140.4 Q .335(The number of queued messages that can be handled at one time has been raised from 600 to)
+127 156.6 R(1000.)102 168.6 Q F0 2.5(2.20. Differ)87 192.6 R
+(ent Default T)-.18 E(uning P)-.92 E(arameters)-.1 E F1 -1.11(Ve)127
+208.8 S .8(rsion 8 has changed the def)1.11 F .8
+(ault parameters for tuning queue costs to mak)-.1 F 3.3(et)-.1 G .8
+(he number of)-3.3 F .712(recipients more important than the size of the message \(for small messages\).)
+102 220.8 R .712(This is reasonable if)5.712 F
+(you are connected with reasonably f)102 232.8 Q(ast links.)-.1 E F0 2.5
+(2.21. A)87 256.8 R(uto-Quoting in Addr)-.5 E(esses)-.18 E F1(Pre)127
+273 Q(viously)-.25 E 3.2(,t)-.65 G .701(he `)-3.2 F .701
+(`Full Name <email address>')-.74 F 3.201('s)-.74 G .701(yntax w)-3.201
+F .701(ould generate incorrect protocol out-)-.1 F .006(put if `)102 285
+R .006(`Full Name')-.74 F 2.506('h)-.74 G .006
+(ad special characters such as dot.)-2.506 F .005(This v)5.006 F .005
+(ersion puts quotes around such names.)-.15 F F0 2.5(2.22. Symbolic)87
+309 R(Names On Err)2.5 E(or Mailer)-.18 E F1(Se)127 325.2 Q -.15(ve)-.25
+G(ral names ha).15 E .3 -.15(ve b)-.2 H(een b).15 E
+(uilt in to the $@ portion of the $#error mailer)-.2 E 5(.F)-.55 G(or e)
+-5.15 E(xample:)-.15 E($#error $@NOHOST $: Host unkno)142 341.4 Q(wn)
+-.25 E(Prints the indicated message and sets the e)102 357.6 Q
+(xit status of)-.15 E/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1(to)2.5 E
+/F3 9/Times-Roman@0 SF(EX_NOHOST)2.5 E F1(.)A F0 2.5(2.23. New)87 381.6
+R(Built-In Mailers)2.5 E F1 -1 -.8(Tw o)127 397.8 T(ne)3.901 E 3.101(wm)
+-.25 G .601(ailers, *\214le* and *include*, are included to de\214ne options when mailing to a \214le)
+-3.101 F(or a :include: \214le respecti)102 409.8 Q -.15(ve)-.25 G(ly)
+.15 E 5(.P)-.65 G(re)-5 E(viously these were o)-.25 E -.15(ve)-.15 G
+(rloaded on the local mailer).15 E(.)-.55 E F0 2.5(2.24. SMTP)87 433.8 R
+(VRFY Doesn't Expand)2.5 E F1(Pre)127 450 Q 1.438(vious v)-.25 F 1.438
+(ersions of sendmail treated VRFY and EXPN the same.)-.15 F 1.437
+(In this v)6.437 F 1.437(ersion, VRFY)-.15 F(doesn')102 462 Q 2.5(te)
+-.18 G(xpand aliases or follo)-2.65 E 2.5(w.)-.25 G(forw)-2.5 E
+(ard \214les.)-.1 E .663(As an optimization, if you run with your def)
+127 478.2 R .664(ault deli)-.1 F -.15(ve)-.25 G .664
+(ry mode being queue-only).15 F 3.164(,t)-.65 G .664(he RCPT)-3.164 F
+1.09(command will also not chase aliases and .forw)102 490.2 R 1.09
+(ard \214les.)-.1 F 1.09(It will chase them when it processes the)6.09 F
+2.5(queue. This)102 502.2 R(speeds up RCPT processing.)2.5 E F0 2.5
+(2.25. [IPC])87 526.2 R(Mailers Allo)2.5 E 2.5(wM)-.1 G(ultiple Hosts)
+-2.5 E F1 .099(When an address resolv)127 542.4 R .099
+(es to a mailer that has `)-.15 F(`[IPC]')-.74 E 2.599('a)-.74 G 2.6(si)
+-2.599 G .1(ts `)-2.6 F(`P)-.74 E(ath')-.15 E .1
+(', the $@ part \(host name\))-.74 F .138
+(can be a colon-separated list of hosts instead of a single hostname.)
+102 554.4 R .137(This asks sendmail to search the)5.137 F .16
+(list for the \214rst entry that is a)102 566.4 R -.25(va)-.2 G .16
+(ilable e).25 F .161(xactly as though it were an MX record.)-.15 F .161
+(The intent is to route)5.161 F .738(internal traf)102 578.4 R .738
+(\214c through internal netw)-.25 F .738
+(orks without publishing an MX record to the net.)-.1 F .737(MX e)5.737
+F(xpan-)-.15 E(sion is still done on the indi)102 590.4 Q(vidual items.)
+-.25 E F0 2.5(2.26. Aliases)87 614.4 R(Extended)2.5 E F1 .298
+(The implementation has been mer)127 630.6 R .298(ged with maps.)-.18 F
+.299(Among other things, this supports multiple)5.298 F
+(alias \214les and NIS-based aliases.)102 642.6 Q -.15(Fo)5 G 2.5(re).15
+G(xample:)-2.65 E -.35(OA)142 658.8 S(/etc/aliases,nis:mail.aliases).35
+E(will search \214rst the local database \231/etc/aliases\232 follo)102
+675 Q(wed by the NIS map)-.25 E EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(9)
+294.65 E 2.5(2.27. P)87 96 R(ortability and Security Enhancements)-.2 E
+/F1 10/Times-Roman@0 SF 2.5(An)127 112.2 S(umber of internal changes ha)
+-2.5 E .3 -.15(ve b)-.2 H(een made to enhance portability).15 E(.)-.65 E
+(Se)127 128.4 Q -.15(ve)-.25 G(ral \214x).15 E(es ha)-.15 E .3 -.15
+(ve b)-.2 H(een made to increase the paranoia f).15 E(actor)-.1 E(.)-.55
+E .46(In particular)127 144.6 R 2.96(,t)-.4 G .46
+(he permissions required for .forw)-2.96 F .46
+(ard and :include: \214les ha)-.1 F .76 -.15(ve b)-.2 H .46
+(een tightened up).15 F(considerably)102 156.6 Q 5.182(.V)-.65 G 2.683
+(5w)-5.182 G .183(ould pretty much read an)-2.783 F 2.683<798c>-.15 G
+.183(le it could get to as root, which e)-2.683 F .183
+(xposed some secu-)-.15 F 1.02(rity holes.)102 168.6 R 1.02
+(V8 insists that all directories leading up to the .forw)6.02 F 1.02
+(ard or :include: \214le be searchable)-.1 F .334
+(\("x" permission\) by the controlling user" \(de\214ned belo)102 180.6
+R .335(w\), that the \214le itself be readable by the con-)-.25 F
+(trolling user)102 192.6 Q 2.5(,a)-.4 G(nd that .forw)-2.5 E
+(ard \214les be o)-.1 E(wned by the user who is being forw)-.25 E
+(arded to or root.)-.1 E .565(The "controlling user" is the user on whose behalf the mail is being deli)
+127 208.8 R -.15(ve)-.25 G 3.065(red. F).15 F .565(or e)-.15 F(xample,)
+-.15 E .459
+(if you mail to "user1" then the controlling user for ~user1/.forw)102
+220.8 R .46(ard and an)-.1 F 2.96(ym)-.15 G .46(ailers in)-2.96 F -.2
+(vo)-.4 G -.1(ke).2 G 2.96(db).1 G 2.96(yt)-2.96 G(hat)-2.96 E(.forw)102
+232.8 Q(ard \214le, including :include: \214les.)-.1 E(Pre)127 249 Q
+(viously)-.25 E 2.816(,a)-.65 G -.15(ny)-2.816 G .316
+(one who had a home directory could create a .forw).15 F .316
+(ard could forw)-.1 F .316(ard to a pro-)-.1 F 2.965(gram. No)102 261 R
+1.765 -.65(w, s)-.25 H .466(endmail checks to mak).65 F 2.966(es)-.1 G
+.466(ure that the)-2.966 F 2.966(yh)-.15 G -2.25 -.2(av e)-2.966 H .466
+(an "appro)3.166 F -.15(ve)-.15 G 2.966(ds).15 G .466
+(hell", that is, a shell listed)-2.966 F(in the /etc/shells \214le.)102
+273 Q F0 2.5(2.28. Miscellaneous)87 297 R(Fixes and Enhancements)2.5 E
+F1 4.03(An)127 313.2 S 1.53(umber of small b)-4.03 F 1.53(ugs ha)-.2 F
+1.53(ving to do with things lik)-.2 F 4.03(eb)-.1 G 1.53
+(ackslash-escaped quotes inside of)-4.03 F(comments ha)102 325.2 Q .3
+-.15(ve b)-.2 H(een \214x).15 E(ed.)-.15 E 1.552(The \214x)127 341.4 R
+1.552(ed size limit on header lines \(such as \231T)-.15 F 1.553
+(o:\232 and \231Cc:\232\) has been eliminated; those)-.8 F -.2(bu)102
+353.4 S -.25(ff).2 G(ers are dynamically allocated no).25 E -.65(w.)-.25
+G .289(Sendmail writes a /etc/sendmail.pid \214le with the current process id and the current in)
+127 369.6 R -.2(vo)-.4 G(cation).2 E(\215ags.)102 381.6 Q -1 -.8(Tw o)
+127 397.8 T .218
+(people using the same program \(e.g., submit\) are considered "dif)
+3.518 F .219(ferent" so that duplicate)-.25 F .508(elimination doesn')
+102 409.8 R 3.008(td)-.18 G .508(elete one of them.)-3.008 F -.15(Fo)
+5.508 G 3.008(re).15 G .508(xample, tw)-3.158 F 3.008(op)-.1 G .508
+(eople forw)-3.008 F .508(arding their email to |submit)-.1 F
+(will be treated as tw)102 421.8 Q 2.5(or)-.1 G(ecipients.)-2.5 E .721(The mailstats program prints mailer names and gets the location of the sendmail.st \214le from)
+127 438 R(/etc/sendmail.cf.)102 450 Q(Man)127 466.2 Q 2.5(ym)-.15 G
+(inor b)-2.5 E(ugs ha)-.2 E .3 -.15(ve b)-.2 H(een \214x).15 E
+(ed, such as handling of backslashes inside of quotes.)-.15 E 2.5(Ah)127
+482.4 S(ook has been added to allo)-2.5 E 2.5(wr)-.25 G -.25(ew)-2.5 G
+(riting of local addresses after aliasing.).25 E F0 2.5(3. FUTURE)72
+506.4 R -.1(WO)2.5 G(RK).1 E F1 1.719(The pre)112 522.6 R 1.719
+(vious section describes)-.25 F/F2 10/Times-Italic@0 SF(sendmail)4.219 E
+F1 1.719(as of v)4.219 F 1.719(ersion 8.6.6.)-.15 F 1.718
+(There is still much to be done.)6.719 F
+(Some high points are described belo)87 534.6 Q 3.8 -.65(w. T)-.25 H
+(his list is by no means e).65 E(xhausti)-.15 E -.15(ve)-.25 G(.).15 E
+F0 2.5(3.1. Full)87 558.6 R(MIME Support)2.5 E F1(Currently)127 574.8 Q
+F2(sendmail)3.305 E F1 .805(only supports se)3.305 F -.15(ve)-.25 G
+3.305(nb).15 G .805(it MIME messages.)-3.305 F .806
+(Although it can pass eight bit)5.805 F .371
+(MIME messages, it cannot adv)102 586.8 R .371(ertise that f)-.15 F .37
+(act because the standards say that the mail agent must be)-.1 F .26
+(able to do 8- to 7-bit con)102 598.8 R -.15(ve)-.4 G .26(rsion to ha)
+.15 F .561 -.15(ve f)-.2 H .261(ull 8-bit support.).15 F .261
+(This requires f)5.261 F .261(ar more e)-.1 F(xtensi)-.15 E .561 -.15
+(ve m)-.25 H(odi\214-).15 E
+(cation of the message body than is currently supported.)102 610.8 Q
+.464(The best w)127 627 R .464(ay to do this w)-.1 F .463
+(ould be to support the general concept of an e)-.1 F .463(xternal `)
+-.15 F .463(`message \214l-)-.74 F(ter')102 639 Q 3.319('t)-.74 G .819
+(hat could do arbitrary modi\214cations of the message.)-3.319 F .819
+(This w)5.819 F .82(ould allo)-.1 F 3.32(wM)-.25 G .82(IME con)-3.32 F
+-.15(ve)-.4 G .82(rsion as).15 F .63
+(well as such things as automatic encryption of messages sent o)102 651
+R -.15(ve)-.15 G 3.129(re).15 G .629(xternal links.)-3.279 F .629
+(This is probably)5.629 F(an e)102 663 Q(xtremely non-tri)-.15 E
+(vial change.)-.25 E F0 2.5(3.2. Ser)87 687 R(vice Switch Abstraction)
+-.1 E F1 .369(Most modern systems include some concept of a \231service switch\232 \212 for e)
+127 703.2 R .37(xample, to look up)-.15 F .984
+(host names you can try DNS, NIS, NIS+, te)102 715.2 R .984
+(xt tables, NetInfo, or other services in some arbitrary)-.15 F EP
+%%Page: 10 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 287.15(10 Changes)72 60 R(in Sendmail V)2.5 E
+(ersion 8)-1 E/F1 10/Times-Roman@0 SF(order)102 96 Q 5.174(.T)-.55 G
+.174(his is currently v)-5.174 F .174(ery clumsy in)-.15 F/F2 10
+/Times-Italic@0 SF(sendmail)2.674 E F1 2.674(,w)C .174
+(ith only limited control of the services pro)-2.674 F(vided.)-.15 E F0
+2.5(3.3. Mor)87 120 R 2.5(eC)-.18 G(ontr)-2.5 E(ol of Local Addr)-.18 E
+(esses)-.18 E F1 .943(Currently some addresses are declared as \231local\232 and are handled specially \212 for e)
+127 136.2 R(xample,)-.15 E(the)102 148.2 Q 3.455(ym)-.15 G .955(ay ha)
+-3.455 F 1.255 -.15(ve .)-.2 H(forw).15 E .956
+(ard \214les, may be translated into program calls or \214le deli)-.1 F
+-.15(ve)-.25 G .956(ries, and so forth.).15 F .311(These should be brok)
+102 160.2 R .311(en out into separate \215ags to allo)-.1 F 2.811(wt)
+-.25 G .31(he local system administrator to ha)-2.811 F .61 -.15(ve m)
+-.2 H(ore).15 E(\214ne-grained control o)102 172.2 Q -.15(ve)-.15 G 2.5
+(ro).15 G(perations.)-2.5 E F0 2.5(3.4. Mor)87 196.2 R 2.5(eR)-.18 G
+(un-T)-2.5 E(ime Con\214guration Options)-.18 E F1 .016(There are man)
+127 212.4 R 2.516(yo)-.15 G .016(ptions that are con\214gured at compile time, such as the method of \214le locking)
+-2.516 F .719(and the use of the IDENT protocol [RFC1413].)102 224.4 R
+.719(These should be transfered to run time by adding)5.719 F(ne)102
+236.4 Q 2.5(wo)-.25 G(ptions.)-2.5 E(Similarly)127 252.6 Q 3.413(,s)-.65
+G .913(ome options are currently o)-3.413 F -.15(ve)-.15 G .913
+(rloaded, that is, a single option controls more than).15 F(one thing.)
+102 264.6 Q(These should probably be brok)5 E
+(en out into separate options.)-.1 E
+(This implies that options will change from single characters to w)127
+280.8 Q(ords.)-.1 E F0 2.5(3.5. Mor)87 304.8 R 2.5(eC)-.18 G
+(on\214guration Contr)-2.5 E(ol Ov)-.18 E(er Err)-.1 E(ors)-.18 E F1
+(Currently)127 321 Q 3.649(,t)-.65 G 1.148(he con\214guration \214le can generate an error message during parsing.)
+-3.649 F(Ho)6.148 E(we)-.25 E -.15(ve)-.25 G 1.948 -.4(r, i).15 H(t).4 E
+.569(cannot tweak other operations, such as issuing a w)102 333 R .57
+(arning message to the system postmaster)-.1 F 5.57(.S)-.55 G(imi-)-5.57
+E(larly)102 345 Q 2.558(,s)-.65 G .057
+(ome errors should not be triggered if the)-2.558 F 2.557(ya)-.15 G .057
+(re in aliases during an alias \214le reb)-2.557 F .057(uild, b)-.2 F
+.057(ut should)-.2 F(be triggered if that alias is actually used.)102
+357 Q F0 2.5(3.6. Long)87 381 R -.92(Te)2.5 G(rm Host State).92 E F1
+(Currently)127 397.2 Q(,)-.65 E F2(sendmail)3.731 E F1 1.231
+(only remembers host status during a single queue run.)3.731 F 1.232
+(This should be)6.232 F(con)102 409.2 Q -.15(ve)-.4 G .492(rted to long term status stored on disk so it can be shared between instantiations of)
+.15 F F2(sendmail)2.991 E F1(.)A .866(Entries will ha)102 421.2 R 1.167
+-.15(ve t)-.2 H 3.367(ob).15 G 3.367(et)-3.367 G .867(imestamped so the)
+-3.367 F 3.367(yc)-.15 G .867(an time out.)-3.367 F .867(This will allo)
+5.867 F(w)-.25 E F2(sendmail)3.367 E F1 .867(to implement)3.367 F -.15
+(ex)102 433.2 S(ponential back).15 E(of)-.1 E 2.5(fo)-.25 G 2.5(nq)-2.5
+G(ueue runs on a per)-2.5 E(-host basis.)-.2 E F0 2.5(3.7. Connection)87
+457.2 R(Contr)2.5 E(ol)-.18 E F1 .819(Modern netw)127 473.4 R .819
+(orks ha)-.1 F 1.119 -.15(ve d)-.2 H(if).15 E .819
+(ferent types of connecti)-.25 F .818(vity than the past.)-.25 F .818
+(In particular)5.818 F 3.318(,t)-.4 G .818(he rising)-3.318 F .636(prominence of dialup IP has created certain challenges for automated serv)
+102 485.4 R 3.136(ers. It)-.15 F .636(is not uncommon)3.136 F .732
+(to try to mak)102 497.4 R 3.232(eac)-.1 G .732
+(onnection to a host and ha)-3.232 F 1.032 -.15(ve i)-.2 H 3.232(tf).15
+G .732(ail, e)-3.332 F -.15(ve)-.25 G 3.232(nt).15 G .732
+(hough if you tried ag)-3.232 F .732(ain it w)-.05 F .731(ould suc-)-.1
+F 2.5(ceed. The)102 509.4 R(connection management could be a bit cle)2.5
+E -.15(ve)-.25 G(rer to try to adapt to such situations.).15 E F0 2.5
+(3.8. Other)87 533.4 R(Caching)2.5 E F1 .074
+(When you do an MX record lookup, the name serv)127 549.6 R .075
+(er automatically returns the IP addresses of)-.15 F .518
+(the associated MX serv)102 561.6 R 3.018(ers. This)-.15 F .518
+(information is currently ignored, and another query is done to get)
+3.018 F(this information.)102 573.6 Q(It should be cached to a)5 E -.2
+(vo)-.2 G(id e).2 E(xcess name serv)-.15 E(er traf)-.15 E(\214c.)-.25 E
+F0 2.5(4. REFERENCES)72 597.6 R F1([Allman83a])87 613.8 Q .137
+(\231Sendmail \212 An Internetw)123 625.8 R .137(ork Mail Router)-.1 F
+4.037 -.7(.\232 E)-.55 H 2.638(.A).7 G 2.638(llman. In)-2.638 F F2 .138
+(Unix Pr)2.638 F -.1(og)-.45 G -.15(ra).1 G(mmer).15 E(s')-.1 E 2.638
+(sM)-.4 G(anual,)-2.638 E F1(4.2)2.638 E(Berk)123 637.8 Q(ele)-.1 E 2.5
+(yS)-.15 G(oftw)-2.5 E(are Distrib)-.1 E(ution, v)-.2 E(olume 2C.)-.2 E
+(August 1983.)5 E([Allman83b])87 654 Q .384
+(\231Mail Systems and Addressing in 4.2BSD.)123 666 R 5.384<9a45>-.7 G
+2.884(.A)-5.384 G .383(llman In)-2.884 F F2 .383(UNICOM Confer)2.883 F
+.383(ence Pr)-.37 F(oceedings.)-.45 E F1(San Die)123 678 Q
+(go, California.)-.15 E(January 1983.)5 E([Allman&Amos85])87 694.2 Q
+-.74(``)123 706.2 S 1.145(Sendmail Re).74 F(visited.)-.25 E 5.125 -.74
+('' E)-.7 H 3.645(.A).74 G 1.145(llman and M. Amos.)-3.645 F(In)6.145 E
+F2 1.145(Usenix Summer 1985 Confer)3.645 F 1.145(ence Pr)-.37 F(o-)-.45
+E(ceedings.)123 718.2 Q F1(Portland, Ore)5 E 2.5(gon. June)-.15 F(1985.)
+2.5 E EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Changes in Sendmail V)72 60 Q(ersion 8)-1 E(11)
+289.65 E/F1 10/Times-Roman@0 SF([ID)87 96 Q(A87])-.4 E/F2 10
+/Times-Italic@0 SF(Electr)1.97 E .983(onic Mail Addr)-.45 F .983
+(essing in Theory and Pr)-.37 F .982(actice with the ID)-.15 F 3.482(AS)
+-.35 G .982(endmail Enhancement Kit)-3.482 F .563(\(or The P)123 108 R
+(ostmaster')-.8 E 3.063(sL)-.4 G .563(ast W)-3.063 F .564(ill and T)-.55
+F(estament\).)-.92 E F1 .564(Lennart Lo)5.564 F -.5(..)-5 -6 O 3.064
+(vstrand. Department)1 6 N .564(of Computer)3.064 F 1.267
+(and Information Science, Uni)123 120 R -.15(ve)-.25 G 1.267
+(rsity of Link).15 F(o)-.1 E -.5(..)-5 -6 O 1.266
+(ping, Sweden, Report no. LiTH-ID)1 6 N(A-Ex-8715.)-.4 E(May 1987.)123
+132 Q([RFC821])87 148.2 Q F2(Simple Mail T)123 160.2 Q -.15(ra)-.55 G
+(nsport Pr).15 E(otocol.)-.45 E F1(J. Postel.)5 E(August 1982.)5 E
+([RFC1123])87 176.4 Q F2(Requir)123 188.4 Q .163
+(ements for Internet Hosts \212 Application and Support.)-.37 F F1 .164
+(Internet Engineering T)5.164 F .164(ask F)-.8 F(orce,)-.15 E
+(R. Braden, Editor)123 200.4 Q 5(.O)-.55 G(ctober 1989.)-5 E([RFC1344])
+87 216.6 Q F2(Implications of MIME for Internet Mail Gate)123 228.6 Q
+(ways.)-.15 E F1(N. Borenstein.)5 E(June 1992.)5 E([RFC1413])87 244.8 Q
+F2(Identi\214cation Pr)123 256.8 Q(otocol.)-.45 E F1(M. St. Johns.)5 E
+(February 1993.)5 E([RFC1425])87 273 Q F2 2.352
+(SMTP Service Extensions.)123 285 R F1 2.352
+(J. Klensin, N. Freed, M. Rose, E. Stef)7.352 F 2.351
+(ferud, and D. Crock)-.25 F(er)-.1 E(.)-.55 E(February 1993.)123 297 Q
+([RFC1426])87 313.2 Q F2 .12(SMTP Service Extension for 8bit-MIMEtr)123
+325.2 R(ansport.)-.15 E F1 .12(J. Klensin, N. Freed, M. Rose, E. Stef)
+5.12 F(ferud,)-.25 E(and D. Crock)123 337.2 Q(er)-.1 E 5(.F)-.55 G
+(ebruary 1993.)-5 E([RFC1427])87 353.4 Q F2 .813
+(SMTP Service Extension for Messa)123 365.4 R 1.013 -.1(ge S)-.1 H .813
+(ize Declar).1 F(ation.)-.15 E F1 .813
+(J. Klensin, N. Freed, and K. Moore.)5.813 F(February 1993.)123 377.4 Q
+([RFC1521])87 393.6 Q F2 2.033
+(MIME \(Multipurpose Internet Mail Extensions\) P)123 405.6 R 2.033
+(art One: Mec)-.8 F 2.033(hanisms for Specifying and)-.15 F .933
+(Describing the F)123 417.6 R .933(ormat of Internet Messa)-1.05 F 1.133
+-.1(ge B)-.1 H(odies.).1 E F1 .932(N. Borenstein and N. Freed.)5.932 F
+(September)5.932 E(1993.)123 429.6 Q EP
+%%Trailer
+end
+%%EOF
diff --git a/usr.sbin/sendmail/doc/intro/intro.me b/usr.sbin/sendmail/doc/intro/intro.me
index 0406bb1fdd6..5bb5e8947a0 100644
--- a/usr.sbin/sendmail/doc/intro/intro.me
+++ b/usr.sbin/sendmail/doc/intro/intro.me
@@ -1,36 +1,14 @@
-.\" Copyright (c) 1983 Eric P. Allman
+.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+.\" Copyright (c) 1983 Eric P. Allman. All rights reserved.
.\" Copyright (c) 1988, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
+.\" By using this file, you agree to the terms and conditions set
+.\" forth in the LICENSE file which can be found at the top level of
+.\" the sendmail distribution.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
.\"
-.\" @(#)intro.me 8.2 (Berkeley) 11/27/93
+.\" @(#)intro.me 8.7 (Berkeley) 5/19/98
.\"
.\" pic -Pxx intro.me | ditroff -me -Pxx
.eh 'SMM:9-%''SENDMAIL \*- An Internetwork Mail Router'
diff --git a/usr.sbin/sendmail/doc/intro/intro.ps b/usr.sbin/sendmail/doc/intro/intro.ps
new file mode 100644
index 00000000000..c1031c48e40
--- /dev/null
+++ b/usr.sbin/sendmail/doc/intro/intro.ps
@@ -0,0 +1,1338 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.10
+%%CreationDate: Tue May 19 16:37:12 1998
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%DocumentSuppliedResources: procset grops 1.10 0
+%%Pages: 13
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.10 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/FL{
+currentgray exch setgray fill setgray
+}bind def
+/BL/fill load def
+/LW/setlinewidth load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Times-Bold
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Bold@0 ENC0/Times-Bold RE/Times-Italic@0 ENC0/Times-Italic RE
+/Times-Roman@0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 14/Times-Roman@0 SF(SENDMAIL \212 An Internetw)159.172 141 Q
+(ork Mail Router)-.14 E/F1 10/Times-Roman@0 SF(Eric Allman*)260.92 165 Q
+/F2 10/Times-Italic@0 SF(Univer)220.2 183 Q(sity of California, Berk)-.1
+E(ele)-.1 E(y)-.3 E(Mammoth Pr)251.98 195 Q(oject)-.45 E F1(ABSTRA)
+262.085 227.4 Q(CT)-.4 E 1.41
+(Routing mail through a heterogenous internet presents man)112 243.6 R
+3.91(yn)-.15 G 1.91 -.25(ew p)-3.91 H 3.91(roblems. Among).25 F .297
+(the w)112 255.6 R .297(orst of these is that of address mapping.)-.1 F
+(Historically)5.297 E 2.797(,t)-.65 G .298(his has been handled on an)
+-2.797 F F2(ad hoc)112 267.6 Q F1 2.5(basis. Ho)2.5 F(we)-.25 E -.15(ve)
+-.25 G .8 -.4(r, t).15 H
+(his approach has become unmanageable as internets gro).4 E -.65(w.)-.25
+G .15(Sendmail acts a uni\214ed "post of)112 283.8 R .15
+(\214ce" to which all mail can be submitted.)-.25 F .15(Address inter)
+5.15 F(-)-.2 E .426(pretation is controlled by a production system, which can parse both domain-based ad-)
+112 295.8 R .423(dressing and old-style)112 307.8 R F2 .423(ad hoc)2.923
+F F1 2.923(addresses. The)2.923 F .422(production system is po)2.922 F
+.422(werful enough to)-.25 F(re)112 319.8 Q 1.357(write addresses in the message header to conform to the standards of a number of)
+-.25 F 1.15(common tar)112 331.8 R 1.15(get netw)-.18 F 1.15
+(orks, including old \(NCP/RFC733\) Arpanet, ne)-.1 F 3.65(w\()-.25 G
+(TCP/RFC822\))-3.65 E 1.119(Arpanet, UUCP)112 343.8 R 3.619(,a)-1.11 G
+1.119(nd Phonenet.)-3.619 F 1.119(Sendmail also implements an SMTP serv)
+6.119 F(er)-.15 E 3.619(,m)-.4 G(essage)-3.619 E
+(queueing, and aliasing.)112 355.8 Q F2(Sendmail)97 400.2 Q F1 .501
+(implements a general internetw)3 F .501(ork mail routing f)-.1 F
+(acility)-.1 E 3.001(,f)-.65 G .501(eaturing aliasing and forw)-3.001 F
+(arding,)-.1 E(automatic routing to netw)72 412.2 Q(ork g)-.1 E(ate)-.05
+E -.1(wa)-.25 G(ys, and \215e).1 E(xible con\214guration.)-.15 E .624
+(In a simple netw)97 428.4 R .624(ork, each node has an address, and resources can be identi\214ed with a host-resource)
+-.1 F .374(pair; in particular)72 440.4 R 2.874(,t)-.4 G .374
+(he mail system can refer to users using a host-username pair)-2.874 F
+5.374(.H)-.55 G .375(ost names and numbers)-5.374 F(ha)72 452.4 Q .3
+-.15(ve t)-.2 H 2.5(ob).15 G 2.5(ea)-2.5 G
+(dministered by a central authority)-2.5 E 2.5(,b)-.65 G
+(ut usernames can be assigned locally to each host.)-2.7 E .649
+(In an internet, multiple netw)97 468.6 R .649(orks with dif)-.1 F .649
+(ferent characterstics and managements must communicate.)-.25 F .389
+(In particular)72 480.6 R 2.889(,t)-.4 G .389
+(he syntax and semantics of resource identi\214cation change.)-2.889 F
+.39(Certain special cases can be han-)5.389 F 1.033(dled tri)72 492.6 R
+1.033(vially by)-.25 F F2 1.033(ad hoc)3.533 F F1 1.032
+(techniques, such as pro)3.533 F 1.032(viding netw)-.15 F 1.032
+(ork names that appear local to hosts on other)-.1 F(netw)72 504.6 Q
+1.454(orks, as with the Ethernet at Xerox P)-.1 F 3.955(ARC. Ho)-.92 F
+(we)-.25 E -.15(ve)-.25 G 4.755 -.4(r, t).15 H 1.455
+(he general case is e).4 F 1.455(xtremely comple)-.15 F 3.955(x. F)-.15
+F(or)-.15 E -.15(ex)72 516.6 S .192(ample, some netw).15 F .192(orks require point-to-point routing, which simpli\214es the database update problem since)
+-.1 F .618(only adjacent hosts must be entered into the system tables, while others use end-to-end addressing.)
+72 528.6 R(Some)5.618 E(netw)72 540.6 Q .123(orks use a left-associati)
+-.1 F .423 -.15(ve s)-.25 H .123(yntax and others use a right-associati)
+.15 F .423 -.15(ve s)-.25 H .123(yntax, causing ambiguity in mix).15 F
+(ed)-.15 E(addresses.)72 552.6 Q .678
+(Internet standards seek to eliminate these problems.)97 568.8 R
+(Initially)5.678 E 3.178(,t)-.65 G .679(hese proposed e)-3.178 F .679
+(xpanding the address)-.15 F .65
+(pairs to address triples, consisting of {netw)72 580.8 R .649
+(ork, host, resource} triples.)-.1 F(Netw)5.649 E .649
+(ork numbers must be uni)-.1 F -.15(ve)-.25 G -.2(r-).15 G 1.452
+(sally agreed upon, and hosts can be assigned locally on each netw)72
+592.8 R 3.952(ork. The)-.1 F(user)3.952 E(-le)-.2 E -.15(ve)-.25 G 3.952
+(lp).15 G 1.452(resentation w)-3.952 F(as)-.1 E 2.352(quickly e)72 604.8
+R 2.352(xpanded to address domains, comprised of a local resource identi\214cation and a hierarchical)
+-.15 F .256(domain speci\214cation with a common static root.)72 616.8 R
+.257(The domain technique separates the issue of ph)5.257 F .257
+(ysical v)-.05 F(er)-.15 E(-)-.2 E .807(sus logical addressing.)72 628.8
+R -.15(Fo)5.807 G 3.307(re).15 G .807
+(xample, an address of the form \231eric@a.cc.berk)-3.457 F(ele)-.1 E
+-.65(y.)-.15 G .807(arpa\232 describes only the).65 F(logical or)72
+640.8 Q -.05(ga)-.18 G(nization of the address space.).05 E F2(Sendmail)
+97 657 Q F1 .493(is intended to help bridge the g)2.992 F .493
+(ap between the totally)-.05 F F2 .493(ad hoc)2.993 F F1 -.1(wo)2.993 G
+.493(rld of netw).1 F .493(orks that kno)-.1 F(w)-.25 E .855
+(nothing of each other and the clean, tightly-coupled w)72 669 R .854
+(orld of unique netw)-.1 F .854(ork numbers.)-.1 F .854
+(It can accept old)5.854 F .32 LW 76 678.6 72 678.6 DL 80 678.6 76 678.6
+DL 84 678.6 80 678.6 DL 88 678.6 84 678.6 DL 92 678.6 88 678.6 DL 96
+678.6 92 678.6 DL 100 678.6 96 678.6 DL 104 678.6 100 678.6 DL 108 678.6
+104 678.6 DL 112 678.6 108 678.6 DL 116 678.6 112 678.6 DL 120 678.6 116
+678.6 DL 124 678.6 120 678.6 DL 128 678.6 124 678.6 DL 132 678.6 128
+678.6 DL 136 678.6 132 678.6 DL 140 678.6 136 678.6 DL 144 678.6 140
+678.6 DL 148 678.6 144 678.6 DL 152 678.6 148 678.6 DL 156 678.6 152
+678.6 DL 160 678.6 156 678.6 DL 164 678.6 160 678.6 DL 168 678.6 164
+678.6 DL 172 678.6 168 678.6 DL 176 678.6 172 678.6 DL 180 678.6 176
+678.6 DL 184 678.6 180 678.6 DL 188 678.6 184 678.6 DL 192 678.6 188
+678.6 DL 196 678.6 192 678.6 DL 200 678.6 196 678.6 DL 204 678.6 200
+678.6 DL 208 678.6 204 678.6 DL 212 678.6 208 678.6 DL 216 678.6 212
+678.6 DL/F3 8/Times-Roman@0 SF .557(*A considerable part of this w)93.6
+690.6 R .557(ork w)-.08 F .557(as done while under the emplo)-.08 F
+2.557(yo)-.08 G 2.556(ft)-2.557 G .556(he INGRES Project at the Uni)
+-2.556 F -.12(ve)-.2 G .556(rsity of California at).12 F(Berk)72 700.2 Q
+(ele)-.08 E 2(ya)-.12 G(nd at Britton Lee.)-2 E/F4 10/Times-Bold@0 SF
+(SENDMAIL \212 An Inter)72 756 Q(netw)-.15 E(ork Mail Router)-.1 E
+(SMM:9-1)194.78 E EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-2 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E/F1 10
+/Times-Roman@0 SF .632(arbitrary address syntax)72 96 R .633(es, resolving ambiguities using heuristics speci\214ed by the system administrator)
+-.15 F 3.133(,a)-.4 G(s)-3.133 E .348(well as domain-based addressing.)
+72 108 R .347(It helps guide the con)5.347 F -.15(ve)-.4 G .347
+(rsion of message formats between disparate net-).15 F -.1(wo)72 120 S
+3.394(rks. In).1 F(short,)3.394 E/F2 10/Times-Italic@0 SF(sendmail)3.394
+E F1 .894
+(is designed to assist a graceful transition to consistent internetw)
+3.394 F .895(ork addressing)-.1 F(schemes.)72 132 Q .153
+(Section 1 discusses the design goals for)97 160.2 R F2(sendmail)2.653 E
+F1 5.153(.S)C .152(ection 2 gi)-5.153 F -.15(ve)-.25 G 2.652(sa).15 G
+2.652(no)-2.652 G -.15(ve)-2.802 G(rvie).15 E 2.652(wo)-.25 G 2.652(ft)
+-2.652 G .152(he basic functions)-2.652 F .644(of the system.)72 172.2 R
+.644(In section 3, details of usage are discussed.)5.644 F .644
+(Section 4 compares)5.644 F F2(sendmail)3.144 E F1 .645
+(to other internet)3.144 F(mail routers, and an e)72 184.2 Q -.25(va)
+-.25 G(luation of).25 E F2(sendmail)2.5 E F1(is gi)2.5 E -.15(ve)-.25 G
+2.5(ni).15 G 2.5(ns)-2.5 G(ection 5, including future plans.)-2.5 E F0
+2.5(1. DESIGN)72 208.2 R(GO)2.5 E(ALS)-.4 E F1(Design goals for)112
+224.4 Q F2(sendmail)2.5 E F1(include:)2.5 E 12.5(\(1\) Compatibility)92
+240.6 R 1.363(with the e)3.864 F 1.363
+(xisting mail programs, including Bell v)-.15 F 1.363
+(ersion 6 mail, Bell v)-.15 F 1.363(ersion 7)-.15 F 1.202
+(mail [UNIX83], Berk)118.66 252.6 R(ele)-.1 E(y)-.15 E F2(Mail)3.702 E
+F1 1.202([Shoens79], BerkNet mail [Schmidt79], and hopefully UUCP)3.702
+F(mail [No)118.66 264.6 Q(witz78a, No)-.25 E 2.5(witz78b]. ARP)-.25 F
+(ANET mail [Crock)-.92 E(er77a, Postel77] w)-.1 E(as also required.)-.1
+E 12.5(\(2\) Reliability)92 280.8 R 4.003(,i)-.65 G 4.003(nt)-4.003 G
+1.502(he sense of guaranteeing that e)-4.003 F -.15(ve)-.25 G 1.502
+(ry message is correctly deli).15 F -.15(ve)-.25 G 1.502
+(red or at least).15 F .368(brought to the attention of a human for correct disposal; no message should e)
+118.66 292.8 R -.15(ve)-.25 G 2.868(rb).15 G 2.868(ec)-2.868 G
+(ompletely)-2.868 E 2.541(lost. This)118.66 304.8 R .041(goal w)2.541 F
+.041(as considered essential because of the emphasis on mail in our en)
+-.1 F 2.54(vironment. It)-.4 F 1.754
+(has turned out to be one of the hardest goals to satisfy)118.66 316.8 R
+4.255(,e)-.65 G 1.755(specially in the f)-4.255 F 1.755(ace of the man)
+-.1 F(y)-.15 E .978(anomalous message formats produced by v)118.66 328.8
+R .977(arious ARP)-.25 F .977(ANET sites.)-.92 F -.15(Fo)5.977 G 3.477
+(re).15 G .977(xample, certain sites)-3.627 F .069
+(generate improperly formated addresses, occasionally causing error)
+118.66 340.8 R .069(-message loops.)-.2 F .069(Some hosts)5.069 F .063(use blanks in names, causing problems with UNIX mail programs that assume that an address is)
+118.66 352.8 R .111(one w)118.66 364.8 R 2.611(ord. The)-.1 F .111
+(semantics of some \214elds are interpreted slightly dif)2.611 F .112
+(ferently by dif)-.25 F .112(ferent sites.)-.25 F(In)5.112 E(summary)
+118.66 376.8 Q 3.023(,t)-.65 G .523(he obscure features of the ARP)
+-3.023 F .523(ANET mail protocol really)-.92 F F2(ar)3.023 E(e)-.37 E F1
+.522(used and are dif)3.023 F(\214cult)-.25 E(to support, b)118.66 388.8
+Q(ut must be supported.)-.2 E 12.5(\(3\) Existing)92 405 R(softw)2.938 E
+.438(are to do actual deli)-.1 F -.15(ve)-.25 G .439
+(ry should be used whene).15 F -.15(ve)-.25 G 2.939(rp).15 G 2.939
+(ossible. This)-2.939 F .439(goal deri)2.939 F -.15(ve)-.25 G 2.939(sa)
+.15 G(s)-2.939 E
+(much from political and practical considerations as technical.)118.66
+417 Q 12.5(\(4\) Easy)92 433.2 R -.15(ex)2.899 G .399(pansion to f).15 F
+.399(airly comple)-.1 F 2.898(xe)-.15 G -.4(nv)-2.898 G .398
+(ironments, including multiple connections to a single net-).4 F -.1(wo)
+118.66 445.2 S .115
+(rk type \(such as with multiple UUCP or Ether nets [Metcalfe76]\).).1 F
+.115(This goal requires consid-)5.115 F .587(eration of the contents of an address as well as its syntax in order to determine which g)
+118.66 457.2 R(ate)-.05 E -.1(wa)-.25 G(y).1 E 1.018(to use.)118.66
+469.2 R -.15(Fo)6.018 G 3.518(re).15 G 1.018(xample, the ARP)-3.668 F
+1.019(ANET is bringing up the TCP protocol to replace the old NCP)-.92 F
+4.791(protocol. No)118.66 481.2 R 2.291(host at Berk)4.791 F(ele)-.1 E
+4.791(yr)-.15 G 2.291(uns both TCP and NCP)-4.791 F 4.791(,s)-1.11 G
+4.79(oi)-4.791 G 4.79(ti)-4.79 G 4.79(sn)-4.79 G 2.29
+(ecessary to look at the)-4.79 F(ARP)118.66 493.2 Q .016
+(ANET host name to determine whether to route mail to an NCP g)-.92 F
+(ate)-.05 E -.1(wa)-.25 G 2.517(yo).1 G 2.517(raT)-2.517 G .017(CP g)
+-2.517 F(ate)-.05 E -.1(wa)-.25 G -.65(y.).1 G 12.5
+(\(5\) Con\214guration)92 509.4 R .145
+(should not be compiled into the code.)2.645 F 2.645(As)5.145 G .145
+(ingle compiled program should be able)-2.645 F .91(to run as is at an)
+118.66 521.4 R 3.41(ys)-.15 G .91(ite \(barring such basic changes as the CPU type or the operating system\).)
+-3.41 F 2.61 -.8(We h)118.66 533.4 T -2.25 -.2(av e).8 H 1.009
+(found this seemingly unimportant goal to be critical in real life.)3.71
+F 1.009(Besides the simple)6.009 F .66(problems that occur when an)
+118.66 545.4 R 3.16(yp)-.15 G .66(rogram gets recompiled in a dif)-3.16
+F .66(ferent en)-.25 F .66(vironment, man)-.4 F 3.16(ys)-.15 G(ites)
+-3.16 E(lik)118.66 557.4 Q 2.5(et)-.1 G 2.5<6f99>-2.5 G
+(\214ddle\232 with an)-2.5 E(ything that the)-.15 E 2.5(yw)-.15 G
+(ill be recompiling an)-2.5 E(yw)-.15 E(ay)-.1 E(.)-.65 E(\(6\))92 573.6
+Q F2(Sendmail)15 E F1 .184(must be able to let v)2.684 F .184
+(arious groups maintain their o)-.25 F .184
+(wn mailing lists, and let indi)-.25 F(viduals)-.25 E(specify their o)
+118.66 585.6 Q(wn forw)-.25 E
+(arding, without modifying the system alias \214le.)-.1 E 12.5
+(\(7\) Each)92 601.8 R .313
+(user should be able to specify which mailer to e)2.813 F -.15(xe)-.15 G
+.313(cute to process mail being deli).15 F -.15(ve)-.25 G .314(red for)
+.15 F 3.098(him. This)118.66 613.8 R .598(feature allo)3.098 F .598
+(ws users who are using specialized mailers that use a dif)-.25 F .598
+(ferent format to)-.25 F -.2(bu)118.66 625.8 S .25(ild their en).2 F .25
+(vironment without changing the system, and f)-.4 F .25
+(acilitates specialized functions \(such)-.1 F
+(as returning an \231I am on v)118.66 637.8 Q(acation\232 message\).)
+-.25 E 12.5(\(8\) Netw)92 654 R 1.553(ork traf)-.1 F 1.552(\214c should be minimized by batching addresses to a single host where possible,)
+-.25 F(without assistance from the user)118.66 666 Q(.)-.55 E .374
+(These goals moti)112 682.2 R -.25(va)-.25 G .374
+(ted the architecture illustrated in \214gure 1.).25 F .375
+(The user interacts with a mail gen-)5.375 F .491
+(erating and sending program.)87 694.2 R .491
+(When the mail is created, the generator calls)5.491 F F2(sendmail)2.99
+E F1 2.99(,w)C .49(hich routes the)-2.99 F .84
+(message to the correct mailer\(s\).)87 706.2 R .841
+(Since some of the senders may be netw)5.84 F .841(ork serv)-.1 F .841
+(ers and some of the)-.15 F(mailers may be netw)87 718.2 Q(ork clients,)
+-.1 E F2(sendmail)2.5 E F1(may be used as an internet mail g)2.5 E(ate)
+-.05 E -.1(wa)-.25 G -.65(y.).1 G EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
+(ork Mail Router)-.1 E(SMM:9-3)194.78 E .4 LW 77 108 72 108 DL 79 108 74
+108 DL 84 108 79 108 DL 89 108 84 108 DL 94 108 89 108 DL 99 108 94 108
+DL 104 108 99 108 DL 109 108 104 108 DL 114 108 109 108 DL 119 108 114
+108 DL 124 108 119 108 DL 129 108 124 108 DL 134 108 129 108 DL 139 108
+134 108 DL 144 108 139 108 DL 149 108 144 108 DL 154 108 149 108 DL 159
+108 154 108 DL 164 108 159 108 DL 169 108 164 108 DL 174 108 169 108 DL
+179 108 174 108 DL 184 108 179 108 DL 189 108 184 108 DL 194 108 189 108
+DL 199 108 194 108 DL 204 108 199 108 DL 209 108 204 108 DL 214 108 209
+108 DL 219 108 214 108 DL 224 108 219 108 DL 229 108 224 108 DL 234 108
+229 108 DL 239 108 234 108 DL 244 108 239 108 DL 249 108 244 108 DL 254
+108 249 108 DL 259 108 254 108 DL 264 108 259 108 DL 269 108 264 108 DL
+274 108 269 108 DL 279 108 274 108 DL 284 108 279 108 DL 289 108 284 108
+DL 294 108 289 108 DL 299 108 294 108 DL 304 108 299 108 DL 309 108 304
+108 DL 314 108 309 108 DL 319 108 314 108 DL 324 108 319 108 DL 329 108
+324 108 DL 334 108 329 108 DL 339 108 334 108 DL 344 108 339 108 DL 349
+108 344 108 DL 354 108 349 108 DL 359 108 354 108 DL 364 108 359 108 DL
+369 108 364 108 DL 374 108 369 108 DL 379 108 374 108 DL 384 108 379 108
+DL 389 108 384 108 DL 394 108 389 108 DL 399 108 394 108 DL 404 108 399
+108 DL 409 108 404 108 DL 414 108 409 108 DL 419 108 414 108 DL 424 108
+419 108 DL 429 108 424 108 DL 434 108 429 108 DL 439 108 434 108 DL 444
+108 439 108 DL 449 108 444 108 DL 454 108 449 108 DL 459 108 454 108 DL
+464 108 459 108 DL 469 108 464 108 DL 474 108 469 108 DL 479 108 474 108
+DL 484 108 479 108 DL 489 108 484 108 DL 494 108 489 108 DL 499 108 494
+108 DL 504 108 499 108 DL 216 171.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+/F1 10/Times-Roman@0 SF(sender1)164.45 155.8 Q 324 171.6 MT 0 -36 RL -72
+0 RL 0 36 RL CL ST(sender2)272.45 155.8 Q 432 171.6 MT 0 -36 RL -72 0 RL
+0 36 RL CL ST(sender3)380.45 155.8 Q 288 207.6 288 171.6 DL 288 207.6 MT
+-1.8 -7.2 RL 3.6 0 RL CL BL 288 207.6 MT -1.8 -7.2 RL 3.6 0 RL CL ST 360
+243.6 MT 0 -36 RL -144 0 RL 0 36 RL CL ST(sendmail)269.945 227.8 Q 288
+279.6 288 243.6 DL 288 279.6 MT -1.8 -7.2 RL 3.6 0 RL CL BL 288 279.6 MT
+-1.8 -7.2 RL 3.6 0 RL CL ST 216 315.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+(mailer1)164.725 299.8 Q 324 315.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+(mailer2)272.725 299.8 Q 432 315.6 MT 0 -36 RL -72 0 RL 0 36 RL CL ST
+(mailer3)380.725 299.8 Q 252 207.6 180 171.6 DL 252 207.6 MT -7.272
+-1.584 RL 1.584 -3.24 RL CL BL 252 207.6 MT -7.272 -1.584 RL 1.584 -3.24
+RL CL ST 324 207.6 396 171.6 DL 324 207.6 MT 5.616 -4.824 RL 1.584 3.24
+RL CL BL 324 207.6 MT 5.616 -4.824 RL 1.584 3.24 RL CL ST 180 279.6 252
+243.6 DL 180 279.6 MT 5.616 -4.824 RL 1.584 3.24 RL CL BL 180 279.6 MT
+5.616 -4.824 RL 1.584 3.24 RL CL ST 396 279.6 324 243.6 DL 396 279.6 MT
+-7.272 -1.584 RL 1.584 -3.24 RL CL BL 396 279.6 MT -7.272 -1.584 RL
+1.584 -3.24 RL CL ST(Figure 1 \212 Sendmail System Structure.)208 346.8
+Q 77 358.8 72 358.8 DL 79 358.8 74 358.8 DL 84 358.8 79 358.8 DL 89
+358.8 84 358.8 DL 94 358.8 89 358.8 DL 99 358.8 94 358.8 DL 104 358.8 99
+358.8 DL 109 358.8 104 358.8 DL 114 358.8 109 358.8 DL 119 358.8 114
+358.8 DL 124 358.8 119 358.8 DL 129 358.8 124 358.8 DL 134 358.8 129
+358.8 DL 139 358.8 134 358.8 DL 144 358.8 139 358.8 DL 149 358.8 144
+358.8 DL 154 358.8 149 358.8 DL 159 358.8 154 358.8 DL 164 358.8 159
+358.8 DL 169 358.8 164 358.8 DL 174 358.8 169 358.8 DL 179 358.8 174
+358.8 DL 184 358.8 179 358.8 DL 189 358.8 184 358.8 DL 194 358.8 189
+358.8 DL 199 358.8 194 358.8 DL 204 358.8 199 358.8 DL 209 358.8 204
+358.8 DL 214 358.8 209 358.8 DL 219 358.8 214 358.8 DL 224 358.8 219
+358.8 DL 229 358.8 224 358.8 DL 234 358.8 229 358.8 DL 239 358.8 234
+358.8 DL 244 358.8 239 358.8 DL 249 358.8 244 358.8 DL 254 358.8 249
+358.8 DL 259 358.8 254 358.8 DL 264 358.8 259 358.8 DL 269 358.8 264
+358.8 DL 274 358.8 269 358.8 DL 279 358.8 274 358.8 DL 284 358.8 279
+358.8 DL 289 358.8 284 358.8 DL 294 358.8 289 358.8 DL 299 358.8 294
+358.8 DL 304 358.8 299 358.8 DL 309 358.8 304 358.8 DL 314 358.8 309
+358.8 DL 319 358.8 314 358.8 DL 324 358.8 319 358.8 DL 329 358.8 324
+358.8 DL 334 358.8 329 358.8 DL 339 358.8 334 358.8 DL 344 358.8 339
+358.8 DL 349 358.8 344 358.8 DL 354 358.8 349 358.8 DL 359 358.8 354
+358.8 DL 364 358.8 359 358.8 DL 369 358.8 364 358.8 DL 374 358.8 369
+358.8 DL 379 358.8 374 358.8 DL 384 358.8 379 358.8 DL 389 358.8 384
+358.8 DL 394 358.8 389 358.8 DL 399 358.8 394 358.8 DL 404 358.8 399
+358.8 DL 409 358.8 404 358.8 DL 414 358.8 409 358.8 DL 419 358.8 414
+358.8 DL 424 358.8 419 358.8 DL 429 358.8 424 358.8 DL 434 358.8 429
+358.8 DL 439 358.8 434 358.8 DL 444 358.8 439 358.8 DL 449 358.8 444
+358.8 DL 454 358.8 449 358.8 DL 459 358.8 454 358.8 DL 464 358.8 459
+358.8 DL 469 358.8 464 358.8 DL 474 358.8 469 358.8 DL 479 358.8 474
+358.8 DL 484 358.8 479 358.8 DL 489 358.8 484 358.8 DL 494 358.8 489
+358.8 DL 499 358.8 494 358.8 DL 504 358.8 499 358.8 DL F0 2.5(2. O)72
+394.8 R(VER)-.5 E(VIEW)-.55 E 2.5(2.1. System)87 418.8 R(Or)2.5 E
+(ganization)-.1 E/F2 10/Times-Italic@0 SF(Sendmail)127 435 Q F1 .874
+(neither interf)3.374 F .874
+(aces with the user nor does actual mail deli)-.1 F -.15(ve)-.25 G(ry)
+.15 E 5.873(.R)-.65 G(ather)-5.873 E 3.373(,i)-.4 G 3.373(tc)-3.373 G
+.873(ollects a)-3.373 F .619(message generated by a user interf)102 447
+R .619(ace program \(UIP\) such as Berk)-.1 F(ele)-.1 E(y)-.15 E F2
+(Mail)3.12 E F1 3.12(,M)C 3.12(S[)-3.12 G(Crock)-3.12 E .62(er77b], or)
+-.1 F 1.428
+(MH [Borden79], edits the message as required by the destination netw)
+102 459 R 1.427(ork, and calls appropriate)-.1 F .28
+(mailers to do mail deli)102 473 R -.15(ve)-.25 G .281
+(ry or queueing for netw).15 F .281(ork transmission)-.1 F/F3 7
+/Times-Roman@0 SF(1)-4 I F1 5.281(.T)4 K .281(his discipline allo)-5.281
+F .281(ws the inser)-.25 F(-)-.2 E 1.354(tion of ne)102 485 R 3.854(wm)
+-.25 G 1.354(ailers at minimum cost.)-3.854 F 1.354(In this sense)6.354
+F F2(sendmail)3.853 E F1 1.353(resembles the Message Processing)3.853 F
+(Module \(MPM\) of [Postel79b].)102 497 Q F0 2.5(2.2. Interfaces)87 521
+R(to the Outside W)2.5 E(orld)-.75 E F1 .041(There are three w)127 537.2
+R(ays)-.1 E F2(sendmail)2.541 E F1 .041
+(can communicate with the outside w)2.541 F .042(orld, both in recei)-.1
+F .042(ving and)-.25 F 1.195(in sending mail.)102 549.2 R 1.194
+(These are using the con)6.194 F -.15(ve)-.4 G 1.194(ntional UNIX ar).15
+F 1.194(gument v)-.18 F 1.194(ector/return status, speaking)-.15 F
+(SMTP o)102 561.2 Q -.15(ve)-.15 G 2.5(rap).15 G
+(air of UNIX pipes, and speaking SMTP o)-2.5 E -.15(ve)-.15 G 2.5(ra).15
+G 2.5(ni)-2.5 G(nterprocess\(or\) channel.)-2.5 E F0 2.5(2.2.1. Ar)102
+585.2 R(gument v)-.1 E(ector/exit status)-.1 E F1 .52(This technique is the standard UNIX method for communicating with the process.)
+142 601.4 R 3.02(Al)5.52 G(ist)-3.02 E .442
+(of recipients is sent in the ar)117 613.4 R .441(gument v)-.18 F(ector)
+-.15 E 2.941(,a)-.4 G .441
+(nd the message body is sent on the standard input.)-2.941 F(An)117
+625.4 Q .351(ything that the mailer prints is simply collected and sent back to the sender if there were an)
+-.15 F(y)-.15 E 2.621(problems. The)117 637.4 R -.15(ex)2.621 G .121(it status from the mailer is collected after the message is sent, and a diagnostic)
+.15 F(is printed if appropriate.)117 649.4 Q .32 LW 76 678.8 72 678.8 DL
+80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8
+88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100
+678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112
+678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 678.8 DL 128 678.8 124
+678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 678.8 136
+678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 678.8 148
+678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 678.8 160
+678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8 172
+678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184
+678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196
+678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208
+678.8 DL 216 678.8 212 678.8 DL/F4 5/Times-Roman@0 SF(1)93.6 689.2 Q/F5
+8/Times-Roman@0 SF -.12(ex)3.2 K(cept when mailing to a \214le, when).12
+E/F6 8/Times-Italic@0 SF(sendmail)2 E F5(does the deli)2 E -.12(ve)-.2 G
+(ry directly).12 E(.)-.52 E EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-4 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E 2.5
+(2.2.2. SMTP)102 96 R -.1(ove)2.5 G 2.5(rp).1 G(ipes)-2.5 E/F1 10
+/Times-Roman@0 SF .774
+(The SMTP protocol [Postel82] can be used to run an interacti)142 112.2
+R 1.074 -.15(ve l)-.25 H .774(ock-step interf).15 F .774(ace with)-.1 F
+.507(the mailer)117 124.2 R 5.507(.A)-.55 G .506
+(subprocess is still created, b)-2.5 F .506
+(ut no recipient addresses are passed to the mailer via)-.2 F .075
+(the ar)117 136.2 R .075(gument list.)-.18 F .075(Instead, the)5.075 F
+2.575(ya)-.15 G .075
+(re passed one at a time in commands sent to the processes stan-)-2.575
+F .19(dard input.)117 148.2 R(An)5.19 E .19(ything appearing on the standard output must be a reply code in a special format.)
+-.15 F F0 2.5(2.2.3. SMTP)102 172.2 R -.1(ove)2.5 G 2.5(ra).1 G 2.5(nI)
+-2.5 G(PC connection)-2.5 E F1 .366
+(This technique is similar to the pre)142 188.4 R .366
+(vious technique, e)-.25 F .366(xcept that it uses a 4.2bsd IPC chan-)
+-.15 F .953(nel [UNIX83].)117 200.4 R .953(This method is e)5.953 F .953
+(xceptionally \215e)-.15 F .952
+(xible in that the mailer need not reside on the)-.15 F(same machine.)
+117 212.4 Q(It is normally used to connect to a sendmail process on another machine.)
+5 E F0 2.5(2.3. Operational)87 236.4 R(Description)2.5 E F1 .228
+(When a sender w)127 252.6 R .228
+(ants to send a message, it issues a request to)-.1 F/F2 10
+/Times-Italic@0 SF(sendmail)2.729 E F1 .229(using one of the three)2.729
+F 1.028(methods described abo)102 264.6 R -.15(ve)-.15 G(.).15 E F2
+(Sendmail)6.028 E F1 1.028(operates in tw)3.528 F 3.528(od)-.1 G 1.028
+(istinct phases.)-3.528 F 1.028(In the \214rst phase, it collects)6.028
+F .612(and stores the message.)102 276.6 R .612
+(In the second phase, message deli)5.612 F -.15(ve)-.25 G .612
+(ry occurs.).15 F .612(If there were errors during)5.612 F 1.59
+(processing during the second phase,)102 288.6 R F2(sendmail)4.09 E F1
+1.59(creates and returns a ne)4.09 F 4.09(wm)-.25 G 1.59
+(essage describing the)-4.09 F
+(error and/or returns an status code telling what went wrong.)102 300.6
+Q F0 2.5(2.3.1. Ar)102 324.6 R(gument pr)-.1 E(ocessing and addr)-.18 E
+(ess parsing)-.18 E F1(If)142 340.8 Q F2(sendmail)3.321 E F1 .821
+(is called using one of the tw)3.321 F 3.322(os)-.1 G .822
+(ubprocess techniques, the ar)-3.322 F .822(guments are \214rst)-.18 F
+.797(scanned and option speci\214cations are processed.)117 352.8 R .796
+(Recipient addresses are then collected, either)5.796 F .717(from the command line or from the SMTP RCPT command, and a list of recipients is created.)
+117 364.8 R .347(Aliases are e)117 376.8 R .347
+(xpanded at this step, including mailing lists.)-.15 F .347(As much v)
+5.347 F .346(alidation as possible of the)-.25 F 1.001
+(addresses is done at this step: syntax is check)117 388.8 R 1.002
+(ed, and local addresses are v)-.1 F 1.002(eri\214ed, b)-.15 F 1.002
+(ut detailed)-.2 F .709
+(checking of host names and addresses is deferred until deli)117 400.8 R
+-.15(ve)-.25 G(ry).15 E 5.708(.F)-.65 G(orw)-5.858 E .708
+(arding is also performed)-.1 F(as the local addresses are v)117 412.8 Q
+(eri\214ed.)-.15 E F2(Sendmail)142 429 Q F1 .307
+(appends each address to the recipient list after parsing.)2.807 F .307
+(When a name is aliased)5.307 F .322(or forw)117 441 R .322(arded, the old name is retained in the list, and a \215ag is set that tells the deli)
+-.1 F -.15(ve)-.25 G .322(ry phase to).15 F .479(ignore this recipient.)
+117 453 R .479(This list is k)5.479 F .479
+(ept free from duplicates, pre)-.1 F -.15(ve)-.25 G .48
+(nting alias loops and duplicate).15 F(messages deli)117 465 Q -.15(ve)
+-.25 G(rd to the same recipient, as might occur if a person is in tw).15
+E 2.5(og)-.1 G(roups.)-2.5 E F0 2.5(2.3.2. Message)102 489 R(collection)
+2.5 E F2(Sendmail)142 505.2 Q F1 .454(then collects the message.)2.954 F
+.454(The message should ha)5.454 F .754 -.15(ve a h)-.2 H .453
+(eader at the be).15 F(ginning.)-.15 E .778
+(No formatting requirements are imposed on the message e)117 517.2 R
+.778(xcept that the)-.15 F 3.278(ym)-.15 G .778(ust be lines of te)
+-3.278 F(xt)-.15 E .78(\(i.e., binary data is not allo)117 529.2 R 3.28
+(wed\). The)-.25 F .779(header is parsed and stored in memory)3.28 F
+3.279(,a)-.65 G .779(nd the body of)-3.279 F(the message is sa)117 541.2
+Q -.15(ve)-.2 G 2.5(di).15 G 2.5(nat)-2.5 G(emporary \214le.)-2.5 E
+3.227 -.8(To s)142 557.4 T 1.627(implify the program interf).8 F 1.628
+(ace, the message is collected e)-.1 F -.15(ve)-.25 G 4.128(ni).15 G
+4.128(fn)-4.128 G 4.128(oa)-4.128 G 1.628(ddresses were)-4.128 F -.25
+(va)117 569.4 S 2.5(lid. The).25 F
+(message will be returned with an error)2.5 E(.)-.55 E F0 2.5
+(2.3.3. Message)102 593.4 R(deli)2.5 E -.1(ve)-.1 G(ry).1 E F1 -.15(Fo)
+142 609.6 S 2.618(re).15 G .117
+(ach unique mailer and host in the recipient list,)-2.618 F F2(sendmail)
+2.617 E F1 .117(calls the appropriate mailer)2.617 F(.)-.55 E .619
+(Each mailer in)117 621.6 R -.2(vo)-.4 G .619
+(cation sends to all users recei).2 F .619
+(ving the message on one host.)-.25 F .62(Mailers that only)5.62 F
+(accept one recipient at a time are handled properly)117 633.6 Q(.)-.65
+E .47
+(The message is sent to the mailer using one of the same three interf)
+142 649.8 R .47(aces used to submit a)-.1 F 1.465(message to sendmail.)
+117 661.8 R 1.465(Each cop)6.465 F 3.965(yo)-.1 G 3.965(ft)-3.965 G
+1.465(he message is prepended by a customized header)-3.965 F 6.465(.T)
+-.55 G(he)-6.465 E 1.455(mailer status code is caught and check)117
+673.8 R 1.455(ed, and a suitable error message gi)-.1 F -.15(ve)-.25 G
+3.955(na).15 G 3.955(sa)-3.955 G(ppropriate.)-3.955 E .589(The e)117
+685.8 R .589(xit code must conform to a system standard or a generic message \(\231Service una)
+-.15 F -.25(va)-.2 G(ilable\232\)).25 E(is gi)117 697.8 Q -.15(ve)-.25 G
+(n.).15 E EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
+(ork Mail Router)-.1 E(SMM:9-5)194.78 E 2.5(2.3.4. Queueing)102 96 R
+-.25(fo)2.5 G 2.5(rr).25 G(etransmission)-2.68 E/F1 10/Times-Roman@0 SF
+.209(If the mailer returned an status that indicated that it might be able to handle the mail later)
+142 112.2 R(,)-.4 E/F2 10/Times-Italic@0 SF(sendmail)117 124.2 Q F1
+(will queue the mail and try ag)2.5 E(ain later)-.05 E(.)-.55 E F0 2.5
+(2.3.5. Retur)102 148.2 R 2.5(nt)-.15 G 2.5(os)-2.5 G(ender)-2.5 E F1
+.588(If errors occur during processing,)142 164.4 R F2(sendmail)3.088 E
+F1 .589(returns the message to the sender for retrans-)3.088 F 3.133
+(mission. The)117 176.4 R .632(letter can be mailed back or written in the \214le \231dead.letter\232 in the sender')
+3.133 F 3.132(sh)-.55 G(ome)-3.132 E(directory)117 190.4 Q/F3 7
+/Times-Roman@0 SF(2)-4 I F1(.)4 I F0 2.5(2.4. Message)87 214.4 R
+(Header Editing)2.5 E F1 1.756
+(Certain editing of the message header occurs automatically)127 230.6 R
+6.756(.H)-.65 G 1.756(eader lines can be inserted)-6.756 F .41
+(under control of the con\214guration \214le.)102 242.6 R .41
+(Some lines can be mer)5.41 F .41(ged; for e)-.18 F .41
+(xample, a \231From:\232 line and)-.15 F 2.5<6199>102 254.6 S
+(Full-name:\232 line can be mer)-2.5 E(ged under certain circumstances.)
+-.18 E F0 2.5(2.5. Con\214guration)87 278.6 R(File)2.5 E F1 .798(Almost all con\214guration information is read at runtime from an ASCII \214le, encoding macro)
+127 294.8 R .679(de\214nitions \(de\214ning the v)102 306.8 R .678(alue of macros used internally\), header declarations \(telling sendmail the)
+-.25 F 1.009(format of header lines that it will process specially)102
+318.8 R 3.509(,i)-.65 G 1.009
+(.e., lines that it will add or reformat\), mailer)-3.509 F .478
+(de\214nitions \(gi)102 330.8 R .478(ving information such as the location and characteristics of each mailer\), and address)
+-.25 F(re)102 342.8 Q .428
+(writing rules \(a limited production system to re)-.25 F .429
+(write addresses which is used to parse and re)-.25 F(write)-.25 E
+(the addresses\).)102 354.8 Q 2.828 -.8(To i)127 371 T(mpro).8 E 1.528
+-.15(ve p)-.15 H 1.228(erformance when reading the con\214guration \214le, a memory image can be pro-)
+.15 F 2.5(vided. This)102 383 R(pro)2.5 E
+(vides a \231compiled\232 form of the con\214guration \214le.)-.15 E F0
+2.5(3. USA)72 407 R(GE AND IMPLEMENT)-.55 E -.95(AT)-.9 G(ION).95 E 2.5
+(3.1. Ar)87 431 R(guments)-.1 E F1(Ar)127 447.2 Q .376
+(guments may be \215ags and addresses.)-.18 F .377(Flags set v)5.377 F
+.377(arious processing options.)-.25 F -.15(Fo)5.377 G(llo).15 E .377
+(wing \215ag)-.25 F(ar)102 459.2 Q .281(guments, address ar)-.18 F .281
+(guments may be gi)-.18 F -.15(ve)-.25 G .281
+(n, unless we are running in SMTP mode.).15 F .28(Addresses fol-)5.28 F
+(lo)102 471.2 Q 2.5(wt)-.25 G(he syntax in RFC822 [Crock)-2.5 E
+(er82] for ARP)-.1 E(ANET address formats.)-.92 E
+(In brief, the format is:)5 E 12.5(\(1\) An)107 487.4 R
+(ything in parentheses is thro)-.15 E(wn a)-.25 E -.1(wa)-.15 G 2.5(y\()
+.1 G(as a comment\).)-2.5 E 12.5(\(2\) An)107 503.6 R .051
+(ything in angle brack)-.15 F .051(ets \(\231<)-.1 F .051
+(>\232\) is preferred o)1.666 F -.15(ve)-.15 G 2.551(ra).15 G -.15(ny)
+-2.551 G .051(thing else.).15 F .051(This rule implements the)5.051 F
+(ARP)133.66 515.6 Q(ANET standard that addresses of the form)-.92 E
+(user name <machine-address>)173.66 531.8 Q(will send to the electronic \231machine-address\232 rather than the human \231user name.)
+133.66 548 Q<9a>-.7 E 12.5(\(3\) Double)107 564.2 R 2.246(quotes \()
+4.746 F -2.754 2.5("\) q)2.5 H 2.246
+(uote phrases; backslashes quote characters.)-2.5 F 2.246
+(Backslashes are more)7.246 F(po)133.66 576.2 Q .654(werful in that the)
+-.25 F 3.154(yw)-.15 G .655(ill cause otherwise equi)-3.154 F -.25(va)
+-.25 G .655(lent phrases to compare dif).25 F .655(ferently \212 for)
+-.25 F -.15(ex)133.66 588.2 S(ample,).15 E F2(user)2.5 E F1(and)2.5 E F2
+("user")2.5 E F1(are equi)2.5 E -.25(va)-.25 G(lent, b).25 E(ut)-.2 E F2
+(\\user)2.5 E F1(is dif)2.5 E(ferent from either of them.)-.25 E -.15
+(Pa)127 604.4 S 1.12(rentheses, angle brack).15 F 1.12
+(ets, and double quotes must be properly balanced and nested.)-.1 F(The)
+6.12 E(re)102 618.4 Q(writing rules control remaining parsing)-.25 E F3
+(3)-4 I F1(.)4 I .32 LW 76 646 72 646 DL 80 646 76 646 DL 84 646 80 646
+DL 88 646 84 646 DL 92 646 88 646 DL 96 646 92 646 DL 100 646 96 646 DL
+104 646 100 646 DL 108 646 104 646 DL 112 646 108 646 DL 116 646 112 646
+DL 120 646 116 646 DL 124 646 120 646 DL 128 646 124 646 DL 132 646 128
+646 DL 136 646 132 646 DL 140 646 136 646 DL 144 646 140 646 DL 148 646
+144 646 DL 152 646 148 646 DL 156 646 152 646 DL 160 646 156 646 DL 164
+646 160 646 DL 168 646 164 646 DL 172 646 168 646 DL 176 646 172 646 DL
+180 646 176 646 DL 184 646 180 646 DL 188 646 184 646 DL 192 646 188 646
+DL 196 646 192 646 DL 200 646 196 646 DL 204 646 200 646 DL 208 646 204
+646 DL 212 646 208 646 DL 216 646 212 646 DL/F4 5/Times-Roman@0 SF(2)
+93.6 656.4 Q/F5 8/Times-Roman@0 SF(Ob)3.2 I(viously)-.12 E 2.226(,i)-.52
+G 2.226(ft)-2.226 G .226(he site gi)-2.226 F .226(ving the error is not the originating site, the only reasonable option is to mail back to the sender)
+-.2 F 4.227(.A)-.44 G(lso,)-4.227 E .191(there are man)72 669.2 R 2.191
+(ym)-.12 G .19(ore error disposition options, b)-2.191 F .19(ut the)-.16
+F 2.19(yo)-.12 G .19(nly ef)-2.19 F .19(fect the error message \212 the \231return to sender\232 function is al)
+-.2 F -.08(wa)-.08 G .19(ys han-).08 F(dled in one of these tw)72 678.8
+Q 2(ow)-.08 G(ays.)-2.08 E F4(3)93.6 689.2 Q F5
+(Disclaimer: Some special processing is done after re)3.2 I
+(writing local names; see belo)-.2 E -.52(w.)-.2 G EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-6 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E 2.5
+(3.2. Mail)87 96 R(to Files and Pr)2.5 E(ograms)-.18 E/F1 10
+/Times-Roman@0 SF .609(Files and programs are le)127 112.2 R .609
+(gitimate message recipients.)-.15 F .609(Files pro)5.609 F .609
+(vide archi)-.15 F -.25(va)-.25 G 3.109(ls).25 G .61(torage of mes-)
+-3.109 F .124(sages, useful for project administration and history)102
+124.2 R 5.124(.P)-.65 G .124(rograms are useful as recipients in a v)
+-5.124 F .124(ariety of)-.25 F .69(situations, for e)102 136.2 R .691(xample, to maintain a public repository of systems messages \(such as the Berk)
+-.15 F(ele)-.1 E(y)-.15 E/F2 10/Times-Italic@0 SF(msgs)102 148.2 Q F1
+(program, or the MARS system [Sattle)2.5 E(y78]\).)-.15 E(An)127 164.4 Q
+3.188(ya)-.15 G .688(ddress passing through the initial parsing algorithm as a local address \(i.e, not appear)
+-3.188 F(-)-.2 E .276(ing to be a v)102 176.4 R .276
+(alid address for another mailer\) is scanned for tw)-.25 F 2.776(os)-.1
+G .277(pecial cases.)-2.776 F .277(If pre\214x)5.277 F .277(ed by a v)
+-.15 F(erti-)-.15 E .18(cal bar \(\231)102 188.4 R .833<7c9a>.833 G 2.68
+(\)t)-.833 G .179
+(he rest of the address is processed as a shell command.)-2.68 F .179
+(If the user name be)5.179 F .179(gins with a)-.15 F(slash mark \(\231/)
+102 200.4 Q
+(\232\) the name is used as a \214le name, instead of a login name.).833
+E .241(Files that ha)127 216.6 R .541 -.15(ve s)-.2 H .241
+(etuid or setgid bits set b).15 F .241(ut no e)-.2 F -.15(xe)-.15 G .241
+(cute bits set ha).15 F .541 -.15(ve t)-.2 H .241(hose bits honored if)
+.15 F F2(send-)2.742 E(mail)102 228.6 Q F1(is running as root.)2.5 E F0
+2.5(3.3. Aliasing,)87 252.6 R -.25(Fo)2.5 G(rwarding, Inclusion).25 E F2
+(Sendmail)127 268.8 Q F1 1.075(reroutes mail three w)3.575 F 3.575
+(ays. Aliasing)-.1 F 1.074(applies system wide.)3.575 F -.15(Fo)6.074 G
+(rw).15 E 1.074(arding allo)-.1 F 1.074(ws each)-.25 F .233
+(user to reroute incoming mail destined for that account.)102 280.8 R
+.233(Inclusion directs)5.233 F F2(sendmail)2.733 E F1 .233
+(to read a \214le for)2.733 F 2.5(al)102 292.8 S
+(ist of addresses, and is normally used in conjunction with aliasing.)
+-2.5 E F0 2.5(3.3.1. Aliasing)102 316.8 R F1 1.554
+(Aliasing maps names to address lists using a system-wide \214le.)142
+333 R 1.553(This \214le is inde)6.553 F -.15(xe)-.15 G 4.053(dt).15 G(o)
+-4.053 E 1.1(speed access.)117 345 R 1.101
+(Only names that parse as local are allo)6.1 F 1.101
+(wed as aliases; this guarantees a unique)-.25 F -.1(ke)117 357 S 2.5
+(y\()-.05 G(since there are no nicknames for the local host\).)-2.5 E F0
+2.5(3.3.2. F)102 381 R(orwarding)-.25 E F1 .651
+(After aliasing, recipients that are local and v)142 397.2 R .651
+(alid are check)-.25 F .65(ed for the e)-.1 F .65
+(xistence of a \231.for)-.15 F(-)-.2 E -.1(wa)117 409.2 S .493
+(rd\232 \214le in their home directory).1 F 5.493(.I)-.65 G 2.994(fi)
+-5.493 G 2.994(te)-2.994 G .494(xists, the message is)-3.144 F F2(not)
+2.994 E F1 .494(sent to that user)2.994 F 2.994(,b)-.4 G .494
+(ut rather to)-3.194 F .37(the list of users in that \214le.)117 421.2 R
+.37
+(Often this list will contain only one address, and the feature will be)
+5.37 F(used for netw)117 433.2 Q(ork mail forw)-.1 E(arding.)-.1 E -.15
+(Fo)142 449.4 S(rw).15 E 1.151
+(arding also permits a user to specify a pri)-.1 F -.25(va)-.25 G 1.152
+(te incoming mailer).25 F 6.152(.F)-.55 G 1.152(or e)-6.302 F 1.152
+(xample, for)-.15 F(-)-.2 E -.1(wa)117 461.4 S(rding to:).1 E -2.5 .833
+("| /)157 477.6 T(usr/local/ne)-.833 E(wmail myname")-.25 E
+(will use a dif)117 493.8 Q(ferent incoming mailer)-.25 E(.)-.55 E F0
+2.5(3.3.3. Inclusion)102 517.8 R F1
+(Inclusion is speci\214ed in RFC 733 [Crock)142 534 Q(er77a] syntax:)-.1
+E(:Include: pathname)157 550.2 Q .391
+(An address of this form reads the \214le speci\214ed by)117 566.4 R F2
+(pathname)2.891 E F1 .391(and sends to all users listed in that)2.891 F
+(\214le.)117 578.4 Q .644(The intent is)142 594.6 R F2(not)3.144 E F1
+.644(to support direct use of this feature, b)3.144 F .644
+(ut rather to use this as a subset of)-.2 F 2.5(aliasing. F)117 606.6 R
+(or e)-.15 E(xample, an alias of the form:)-.15 E
+(project: :include:/usr/project/userlist)157 622.8 Q 1.93(is a method of letting a project maintain a mailing list without interaction with the system)
+117 639 R(administration, e)117 651 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5
+(ft)-2.5 G(he alias \214le is protected.)-2.5 E 2.024
+(It is not necessary to reb)142 667.2 R 2.024(uild the inde)-.2 F 4.524
+(xo)-.15 G 4.524(nt)-4.524 G 2.025
+(he alias database when a :include: list is)-4.524 F(changed.)117 679.2
+Q EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
+(ork Mail Router)-.1 E(SMM:9-7)194.78 E 2.5(3.4. Message)87 96 R
+(Collection)2.5 E/F1 10/Times-Roman@0 SF .857
+(Once all recipient addresses are parsed and v)127 112.2 R .857
+(eri\214ed, the message is collected.)-.15 F .856(The message)5.857 F
+(comes in tw)102 124.2 Q 2.5(op)-.1 G
+(arts: a message header and a message body)-2.5 E 2.5(,s)-.65 G
+(eparated by a blank line.)-2.5 E
+(The header is formatted as a series of lines of the form)127 140.4 Q
+(\214eld-name: \214eld-v)178 156.6 Q(alue)-.25 E(Field-v)102 172.8 Q
+1.366(alue can be split across lines by starting the follo)-.25 F 1.366
+(wing lines with a space or a tab)-.25 F 6.366(.S)-.4 G(ome)-6.366 E
+.211(header \214elds ha)102 184.8 R .511 -.15(ve s)-.2 H .211
+(pecial internal meaning, and ha).15 F .511 -.15(ve a)-.2 H .211
+(ppropriate special processing.).15 F .21(Other headers)5.21 F
+(are simply passed through.)102 196.8 Q
+(Some header \214elds may be added automatically)5 E 2.5(,s)-.65 G
+(uch as time stamps.)-2.5 E .86(The body is a series of te)127 213 R
+.861(xt lines.)-.15 F .861
+(It is completely uninterpreted and untouched, e)5.861 F .861
+(xcept that)-.15 F 1.43(lines be)102 225 R 1.43(ginning with a dot ha)
+-.15 F 1.729 -.15(ve t)-.2 H 1.429(he dot doubled when transmitted o).15
+F -.15(ve)-.15 G 3.929(ra).15 G 3.929(nS)-3.929 G 1.429(MTP channel.)
+-3.929 F(This)6.429 E -.15(ex)102 237 S
+(tra dot is stripped by the recei).15 E -.15(ve)-.25 G -.55(r.).15 G F0
+2.5(3.5. Message)87 261 R(Deli)2.5 E -.1(ve)-.1 G(ry).1 E F1 .028
+(The send queue is ordered by recei)127 277.2 R .029
+(ving host before transmission to implement message batch-)-.25 F 3.07
+(ing. Each)102 289.2 R .57(address is mark)3.07 F .57
+(ed as it is sent so rescanning the list is safe.)-.1 F .57(An ar)5.57 F
+.57(gument list is b)-.18 F .57(uilt as)-.2 F 1.138(the scan proceeds.)
+102 301.2 R 1.139
+(Mail to \214les is detected during the scan of the send list.)6.139 F
+1.139(The interf)6.139 F 1.139(ace to the)-.1 F(mailer is performed using one of the techniques described in section 2.2.)
+102 313.2 Q .996(After a connection is established,)127 329.4 R/F2 10
+/Times-Italic@0 SF(sendmail)3.496 E F1(mak)3.495 E .995(es the per)-.1 F
+.995(-mailer changes to the header and)-.2 F .236
+(sends the result to the mailer)102 341.4 R 5.236(.I)-.55 G 2.736(fa)
+-5.236 G .537 -.15(ny m)-2.736 H .237(ail is rejected by the mailer).15
+F 2.737(,a\215)-.4 G .237(ag is set to in)-2.737 F -.2(vo)-.4 G .437 -.1
+(ke t).2 H .237(he return-).1 F(to-sender function after all deli)102
+353.4 Q -.15(ve)-.25 G(ry completes.).15 E F0 2.5(3.6. Queued)87 377.4 R
+(Messages)2.5 E F1 .163(If the mailer returns a \231temporary f)127
+393.6 R .163(ailure\232 e)-.1 F .162(xit status, the message is queued.)
+-.15 F 2.662(Ac)5.162 G .162(ontrol \214le is)-2.662 F .85
+(used to describe the recipients to be sent to and v)102 405.6 R .851
+(arious other parameters.)-.25 F .851(This control \214le is for)5.851 F
+(-)-.2 E 1.011(matted as a series of lines, each describing a sender)102
+417.6 R 3.511(,ar)-.4 G 1.011(ecipient, the time of submission, or some)
+-3.511 F .776(other salient parameter of the message.)102 429.6 R .776
+(The header of the message is stored in the control \214le, so)5.776 F(that the associated data \214le in the queue is just the temporary \214le that w)
+102 441.6 Q(as originally collected.)-.1 E F0 2.5(3.7. Con\214guration)
+87 465.6 R F1 .493(Con\214guration is controlled primarily by a con\214guration \214le read at startup.)
+127 481.8 R F2(Sendmail)5.492 E F1(should)2.992 E
+(not need to be recomplied e)102 493.8 Q(xcept)-.15 E 12.5(\(1\) T)107
+510 R 2.5(oc)-.8 G(hange operating systems \(V6, V7/32V)-2.5 E 2.5(,4)
+-1.29 G(BSD\).)-2.5 E 12.5(\(2\) T)107 526.2 R 2.5(or)-.8 G(emo)-2.5 E
+.3 -.15(ve o)-.15 H 2.5(ri).15 G
+(nsert the DBM \(UNIX database\) library)-2.5 E(.)-.65 E 12.5(\(3\) T)
+107 542.4 R 2.5(oc)-.8 G(hange ARP)-2.5 E(ANET reply codes.)-.92 E 12.5
+(\(4\) T)107 558.6 R 2.5(oa)-.8 G
+(dd headers \214elds requiring special processing.)-2.5 E .434
+(Adding mailers or changing parsing \(i.e., re)102 574.8 R .435
+(writing\) or routing information does not require recom-)-.25 F
+(pilation.)102 586.8 Q 1.317(If the mail is being sent by a local user)
+127 603 R 3.817(,a)-.4 G 1.317(nd the \214le \231.mailcf\232 e)-3.817 F
+1.317(xists in the sender')-.15 F 3.817(sh)-.55 G(ome)-3.817 E
+(directory)102 615 Q 2.721(,t)-.65 G .221(hat \214le is read as a con\214guration \214le after the system con\214guration \214le.)
+-2.721 F .222(The primary use)5.222 F
+(of this feature is to add header lines.)102 627 Q 3.25(The con\214guration \214le encodes macro de\214nitions, header de\214nitions, mailer de\214nitions,)
+127 643.2 R(re)102 655.2 Q(writing rules, and options.)-.25 E F0 2.5
+(3.7.1. Macr)102 679.2 R(os)-.18 E F1 .332
+(Macros can be used in three w)142 695.4 R 2.833(ays. Certain)-.1 F .333
+(macros transmit unstructured te)2.833 F .333(xtual informa-)-.15 F .07
+(tion into the mail system, such as the name)117 707.4 R F2(sendmail)
+2.57 E F1 .07(will use to identify itself in error messages.)2.57 F
+1.247(Other macros transmit information from)117 719.4 R F2(sendmail)
+3.747 E F1 1.247(to the con\214guration \214le for use in creating)3.747
+F EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 192.28(SMM:9-8 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E/F1 10
+/Times-Roman@0 SF .312(other \214elds \(such as ar)117 96 R .312
+(gument v)-.18 F .312(ectors to mailers\); e.g., the name of the sender)
+-.15 F 2.811(,a)-.4 G .311(nd the host and)-2.811 F .848
+(user of the recipient.)117 108 R .848
+(Other macros are unused internally)5.848 F 3.348(,a)-.65 G .848
+(nd can be used as shorthand in the)-3.348 F(con\214guration \214le.)117
+120 Q F0 2.5(3.7.2. Header)102 144 R(declarations)2.5 E F1 .355
+(Header declarations inform)142 160.2 R/F2 10/Times-Italic@0 SF
+(sendmail)2.854 E F1 .354(of the format of kno)2.854 F .354
+(wn header lines.)-.25 F(Kno)5.354 E .354(wledge of)-.25 F 2.5(af)117
+172.2 S .5 -.25(ew h)-2.5 H(eader lines is b).25 E(uilt into)-.2 E F2
+(sendmail)2.5 E F1 2.5(,s)C
+(uch as the \231From:\232 and \231Date:\232 lines.)-2.5 E 1.201(Most con\214gured headers will be automatically inserted in the outgoing message if the)
+142 188.4 R(y)-.15 E(don')117 200.4 Q 2.5(te)-.18 G
+(xist in the incoming message.)-2.65 E
+(Certain headers are suppressed by some mailers.)5 E F0 2.5
+(3.7.3. Mailer)102 224.4 R(declarations)2.5 E F1 1.756
+(Mailer declarations tell)142 240.6 R F2(sendmail)4.256 E F1 1.756
+(of the v)4.256 F 1.756(arious mailers a)-.25 F -.25(va)-.2 G 1.756
+(ilable to it.).25 F 1.755(The de\214nition)6.755 F .119
+(speci\214es the internal name of the mailer)117 252.6 R 2.619(,t)-.4 G
+.12(he pathname of the program to call, some \215ags associ-)-2.619 F
+2.036(ated with the mailer)117 264.6 R 4.536(,a)-.4 G 2.036(nd an ar)
+-4.536 F 2.036(gument v)-.18 F 2.036
+(ector to be used on the call; this v)-.15 F 2.035(ector is macro-)-.15
+F -.15(ex)117 276.6 S(panded before use.).15 E F0 2.5(3.7.4. Addr)102
+300.6 R(ess r)-.18 E(ewriting rules)-.18 E F1 .458
+(The heart of address parsing in)142 316.8 R F2(sendmail)2.959 E F1 .459
+(is a set of re)2.959 F .459(writing rules.)-.25 F .459
+(These are an ordered)5.459 F .561
+(list of pattern-replacement rules, \(some)117 328.8 R .561(what lik)
+-.25 F 3.061(eap)-.1 G .561(roduction system, e)-3.061 F .56
+(xcept that order is criti-)-.15 F 1.905
+(cal\), which are applied to each address.)117 340.8 R 1.905
+(The address is re)6.905 F 1.906(written te)-.25 F 1.906
+(xtually until it is either)-.15 F(re)117 352.8 Q .308
+(written into a special canonical form \(i.e., a \(mailer)-.25 F 2.807
+(,h)-.4 G .307(ost, user\) 3-tuple, such as {arpanet, usc-)-2.807 F .64
+(isif, postel} representing the address \231postel@usc-isif\232\), or it f)
+117 364.8 R .641(alls of)-.1 F 3.141(ft)-.25 G .641(he end.)-3.141 F
+.641(When a pattern)5.641 F(matches, the rule is reapplied until it f)
+117 376.8 Q(ails.)-.1 E 1.222(The con\214guration \214le also supports the editing of addresses into dif)
+142 393 R 1.221(ferent formats.)-.25 F -.15(Fo)6.221 G(r).15 E -.15(ex)
+117 405 S(ample, an address of the form:).15 E(ucsfcgl!tef)157 421.2 Q
+(might be mapped into:)117 437.4 Q(tef@ucsfcgl.UUCP)157 453.6 Q
+(to conform to the domain syntax.)117 469.8 Q -.35(Tr)5 G
+(anslations can also be done in the other direction.).35 E F0 2.5
+(3.7.5. Option)102 493.8 R(setting)2.5 E F1 1.168(There are se)142 510 R
+-.15(ve)-.25 G 1.169
+(ral options that can be set from the con\214guration \214le.).15 F
+1.169(These include the)6.169 F(pathnames of v)117 522 Q
+(arious support \214les, timeouts, def)-.25 E(ault modes, etc.)-.1 E F0
+2.5(4. COMP)72 546 R(ARISON WITH O)-.74 E(THER MAILERS)-.4 E 2.5
+(4.1. Deli)87 570 R -.1(ve)-.1 G(rmail).1 E F2(Sendmail)127 586.2 Q F1
+(is an outgro)2.5 E(wth of)-.25 E F2(delivermail)2.5 E F1 5(.T)C
+(he primary dif)-5 E(ferences are:)-.25 E 12.5(\(1\) Con\214guration)107
+602.4 R .273(information is not compiled in.)2.773 F .272
+(This change simpli\214es man)5.273 F 2.772(yo)-.15 G 2.772(ft)-2.772 G
+.272(he problems)-2.772 F(of mo)133.66 614.4 Q(ving to other machines.)
+-.15 E(It also allo)5 E(ws easy deb)-.25 E(ugging of ne)-.2 E 2.5(wm)
+-.25 G(ailers.)-2.5 E 12.5(\(2\) Address)107 630.6 R .681
+(parsing is more \215e)3.181 F 3.182(xible. F)-.15 F .682(or e)-.15 F
+(xample,)-.15 E F2(delivermail)3.182 E F1 .682(only supported one g)
+3.182 F(ate)-.05 E -.1(wa)-.25 G 3.182(yt).1 G(o)-3.182 E(an)133.66
+642.6 Q 2.817(yn)-.15 G(etw)-2.817 E .317(ork, whereas)-.1 F F2
+(sendmail)2.817 E F1 .317(can be sensiti)2.817 F .616 -.15(ve t)-.25 H
+2.816(oh).15 G .316(ost names and reroute to dif)-2.816 F .316(ferent g)
+-.25 F(ate-)-.05 E -.1(wa)133.66 654.6 S(ys.).1 E 12.5(\(3\) F)107 670.8
+R(orw)-.15 E 1.627(arding and :include: features eliminate the requirement that the system alias \214le be)
+-.1 F .074(writable by an)133.66 682.8 R 2.574(yu)-.15 G .073(ser \(or that an update program be written, or that the system administration)
+-2.574 F(mak)133.66 694.8 Q 2.5(ea)-.1 G(ll changes\).)-2.5 E(\(4\))107
+711 Q F2(Sendmail)15 E F1 .4(supports message batching across netw)2.9 F
+.401(orks when a message is being sent to mul-)-.1 F(tiple recipients.)
+133.66 723 Q EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
+(ork Mail Router)-.1 E(SMM:9-9)194.78 E/F1 10/Times-Roman@0 SF 12.5
+(\(5\) A)107 96 R .875(mail queue is pro)3.375 F .874(vided in)-.15 F/F2
+10/Times-Italic@0 SF(sendmail.)3.374 E F1 .874(Mail that cannot be deli)
+5.874 F -.15(ve)-.25 G .874(red immediately b).15 F .874(ut can)-.2 F
+1.063(potentially be deli)133.66 108 R -.15(ve)-.25 G 1.064
+(red later is stored in this queue for a later retry).15 F 6.064(.T)-.65
+G 1.064(he queue also pro-)-6.064 F .896(vides a b)133.66 120 R(uf)-.2 E
+.896(fer ag)-.25 F .895(ainst system crashes; after the message has been collected it may be reli-)
+-.05 F(ably redeli)133.66 132 Q -.15(ve)-.25 G(red e).15 E -.15(ve)-.25
+G 2.5(ni).15 G 2.5(ft)-2.5 G(he system crashes during the initial deli)
+-2.5 E -.15(ve)-.25 G(ry).15 E(.)-.65 E(\(6\))107 148.2 Q F2(Sendmail)15
+E F1 .197(uses the netw)2.696 F .197(orking support pro)-.1 F .197
+(vided by 4.2BSD to pro)-.15 F .197(vide a direct interf)-.15 F .197
+(ace net-)-.1 F -.1(wo)133.66 160.2 S .07(rks such as the ARP).1 F .07
+(ANET and/or Ethernet using SMTP \(the Simple Mail T)-.92 F .07
+(ransfer Proto-)-.35 F(col\) o)133.66 172.2 Q -.15(ve)-.15 G 2.5(raT).15
+G(CP/IP connection.)-2.5 E F0 2.5(4.2. MMDF)87 196.2 R F1 .957
+(MMDF [Crock)127 212.4 R .957(er79] spans a wider problem set than)-.1 F
+F2(sendmail)3.458 E F1 5.958(.F)C .958(or e)-6.108 F .958
+(xample, the domain of)-.15 F .721(MMDF includes a \231phone netw)102
+224.4 R .721(ork\232 mailer)-.1 F 3.221(,w)-.4 G(hereas)-3.221 E F2
+(sendmail)3.221 E F1 .721(calls on pree)3.221 F .72
+(xisting mailers in most)-.15 F(cases.)102 236.4 Q .175(MMDF and)127
+252.6 R F2(sendmail)2.675 E F1 .175
+(both support aliasing, customized mailers, message batching, automatic)
+2.675 F(forw)102 264.6 Q .792(arding to g)-.1 F(ate)-.05 E -.1(wa)-.25 G
+.792(ys, queueing, and retransmission.).1 F .792(MMDF supports tw)5.792
+F .792(o-stage timeout, which)-.1 F F2(sendmail)102 276.6 Q F1
+(does not support.)2.5 E
+(The con\214guration for MMDF is compiled into the code)127 294.8 Q/F3 7
+/Times-Roman@0 SF(4)-4 I F1(.)4 I .037
+(Since MMDF does not consider backw)127 311 R .037
+(ards compatibility as a design goal, the address parsing)-.1 F
+(is simpler b)102 323 Q(ut much less \215e)-.2 E(xible.)-.15 E 1.159
+(It is some)127 341.2 R 1.159(what harder to inte)-.25 F 1.159
+(grate a ne)-.15 F 3.659(wc)-.25 G(hannel)-3.659 E F3(5)-4 I F1 1.159
+(into MMDF)3.659 4 N 6.16(.I)-.8 G 3.66(np)-6.16 G(articular)-3.66 E
+3.66(,M)-.4 G 1.16(MDF must)-3.66 F(kno)102 353.2 Q 3.225(wt)-.25 G .725
+(he location and format of host tables for all channels, and the channel must speak a special)
+-3.225 F 2.525(protocol. This)102 365.2 R(allo)2.525 E .025
+(ws MMDF to do additional v)-.25 F .025(eri\214cation \(such as v)-.15 F
+.025(erifying host names\) at submis-)-.15 F(sion time.)102 377.2 Q
+1.761(MMDF strictly separates the submission and deli)127 393.4 R -.15
+(ve)-.25 G 1.761(ry phases.).15 F(Although)6.761 E F2(sendmail)4.261 E
+F1 1.76(has the)4.261 F .784(concept of each of these stages, the)102
+405.4 R 3.284(ya)-.15 G .784(re inte)-3.284 F .785
+(grated into one program, whereas in MMDF the)-.15 F 3.285(ya)-.15 G(re)
+-3.285 E(split into tw)102 417.4 Q 2.5(op)-.1 G(rograms.)-2.5 E F0 2.5
+(4.3. Message)87 441.4 R(Pr)2.5 E(ocessing Module)-.18 E F1 .925(The Message Processing Module \(MPM\) discussed by Postel [Postel79b] matches)
+127 457.6 R F2(sendmail)3.425 E F1 1.364
+(closely in terms of its basic architecture.)102 469.6 R(Ho)6.364 E(we)
+-.25 E -.15(ve)-.25 G 2.164 -.4(r, l).15 H(ik).4 E 3.864(eM)-.1 G(MDF)
+-3.864 E 3.864(,t)-.8 G 1.365(he MPM includes the netw)-3.864 F(ork)-.1
+E(interf)102 481.6 Q(ace softw)-.1 E(are as part of its domain.)-.1 E
+.408(MPM also postulates a duple)127 497.8 R 2.907(xc)-.15 G .407
+(hannel to the recei)-2.907 F -.15(ve)-.25 G 1.207 -.4(r, a).15 H 2.907
+(sd).4 G .407(oes MMDF)-2.907 F 2.907(,t)-.8 G .407(hus allo)-2.907 F
+.407(wing simpler)-.25 F .302
+(handling of errors by the mailer than is possible in)102 509.8 R F2
+(sendmail)2.802 E F1 5.302(.W)C .302(hen a message queued by)-5.302 F F2
+(sendmail)2.802 E F1 .23(is sent, an)102 521.8 R 2.73(ye)-.15 G .23
+(rrors must be returned to the sender by the mailer itself.)-2.73 F .229
+(Both MPM and MMDF mail-)5.229 F .883(ers can return an immediate error response, and a single error processor can create an appropriate)
+102 533.8 R(response.)102 545.8 Q 2.24(MPM prefers passing the message as a structured object, with type-length-v)
+127 564 R 2.24(alue tuples)-.25 F F3(6)-4 I F1(.)4 I .874(Such a con)102
+576 R -.15(ve)-.4 G .874(ntion requires a much higher de).15 F .875
+(gree of cooperation between mailers than is required)-.15 F(by)102 588
+Q F2(sendmail)2.796 E F1 5.296(.M)C .296(PM also assumes a uni)-5.296 F
+-.15(ve)-.25 G .296
+(rsally agreed upon internet name space \(with each address).15 F
+(in the form of a net-host-user tuple\), which)102 600 Q F2(sendmail)2.5
+E F1(does not.)2.5 E .32 LW 76 642 72 642 DL 80 642 76 642 DL 84 642 80
+642 DL 88 642 84 642 DL 92 642 88 642 DL 96 642 92 642 DL 100 642 96 642
+DL 104 642 100 642 DL 108 642 104 642 DL 112 642 108 642 DL 116 642 112
+642 DL 120 642 116 642 DL 124 642 120 642 DL 128 642 124 642 DL 132 642
+128 642 DL 136 642 132 642 DL 140 642 136 642 DL 144 642 140 642 DL 148
+642 144 642 DL 152 642 148 642 DL 156 642 152 642 DL 160 642 156 642 DL
+164 642 160 642 DL 168 642 164 642 DL 172 642 168 642 DL 176 642 172 642
+DL 180 642 176 642 DL 184 642 180 642 DL 188 642 184 642 DL 192 642 188
+642 DL 196 642 192 642 DL 200 642 196 642 DL 204 642 200 642 DL 208 642
+204 642 DL 212 642 208 642 DL 216 642 212 642 DL/F4 5/Times-Roman@0 SF
+(4)93.6 652.4 Q/F5 8/Times-Roman@0 SF .179(Dynamic con\214guration tables are currently being considered for MMDF; allo)
+3.2 J .18(wing the installer to select either compiled or dy-)-.2 F
+(namic tables.)72 665.2 Q F4(5)93.6 675.6 Q F5(The MMDF equi)3.2 I -.2
+(va)-.2 G(lent of a).2 E/F6 8/Times-Italic@0 SF(sendmail)2 E F5
+(\231mailer)2 E -.56<2e9a>-.44 G F4(6)93.6 689.2 Q F5
+(This is similar to the NBS standard.)3.2 I EP
+%%Page: 10 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 187.28(SMM:9-10 SENDMAIL)72 60 R 2.5<8a41>2.5 G
+2.5(nI)-2.5 G(nter)-2.5 E(netw)-.15 E(ork Mail Router)-.1 E 2.5(5. EV)72
+96 R(ALU)-1.35 E -.95(AT)-.6 G(IONS AND FUTURE PLANS).95 E/F1 10
+/Times-Italic@0 SF(Sendmail)112 112.2 Q/F2 10/Times-Roman@0 SF 1.851
+(is designed to w)4.351 F 1.851(ork in a nonhomogeneous en)-.1 F 4.352
+(vironment. Ev)-.4 F 1.852(ery attempt is made to)-.15 F -.2(avo)87
+124.2 S 1.037
+(id imposing unnecessary constraints on the underlying mailers.).2 F
+1.036(This goal has dri)6.036 F -.15(ve)-.25 G 3.536(nm).15 G 1.036
+(uch of the)-3.536 F 2.723(design. One)87 136.2 R .223(of the major problems has been the lack of a uniform address space, as postulated in [Pos-)
+2.723 F(tel79a] and [Postel79b].)87 148.2 Q 2.647(An)112 164.4 S .147(onuniform address space implies that a path will be speci\214ed in all addresses, either e)
+-2.647 F(xplicitly)-.15 E .472
+(\(as part of the address\) or implicitly \(as with implied forw)87
+176.4 R .473(arding to g)-.1 F(ate)-.05 E -.1(wa)-.25 G 2.973
+(ys\). This).1 F .473(restriction has the)2.973 F .493(unpleasant ef)87
+188.4 R .493(fect of making replying to messages e)-.25 F .493
+(xceedingly dif)-.15 F .493
+(\214cult, since there is no one \231address\232)-.25 F(for an)87 200.4
+Q 2.5(yp)-.15 G(erson, b)-2.5 E(ut only a w)-.2 E
+(ay to get there from where)-.1 E -.15(ve)-.25 G 2.5(ry).15 G(ou are.)
+-2.5 E(Interf)112 216.6 Q .448(acing to mail programs that were not initially intended to be applied in an internet en)
+-.1 F(viron-)-.4 E(ment has been amazingly successful, and has reduced the job to a manageable task.)
+87 228.6 Q F1(Sendmail)112 244.8 Q F2 2.906(has kno)5.406 F 2.906
+(wledge of a fe)-.25 F 5.406(wd)-.25 G(if)-5.406 E 2.906(\214cult en)
+-.25 F 2.906(vironments b)-.4 F 2.906(uilt in.)-.2 F 2.905
+(It generates ARP)7.906 F(ANET)-.92 E .648(FTP/SMTP compatible error messages \(prepended with three-digit numbers [Neigus73, Postel74, Pos-)
+87 256.8 R .771(tel82]\) as necessary)87 268.8 R 3.271(,o)-.65 G .771(ptionally generates UNIX-style \231From\232 lines on the front of messages for some)
+-3.271 F 1.669(mailers, and kno)87 280.8 R 1.669(ws ho)-.25 F 4.169(wt)
+-.25 G 4.169(op)-4.169 G 1.669(arse the same lines on input.)-4.169 F
+1.67(Also, error handling has an option cus-)6.67 F
+(tomized for BerkNet.)87 292.8 Q 1.482(The decision to a)112 309 R -.2
+(vo)-.2 G 1.482(id doing an).2 F 3.982(yt)-.15 G 1.481(ype of deli)
+-3.982 F -.15(ve)-.25 G 1.481(ry where possible \(e).15 F -.15(ve)-.25 G
+1.481(n, or perhaps especially).15 F(,)-.65 E .574(local deli)87 321 R
+-.15(ve)-.25 G .574(ry\) has turned out to be a good idea.).15 F(Ev)
+5.574 E .574(en with local deli)-.15 F -.15(ve)-.25 G(ry).15 E 3.074(,t)
+-.65 G .575(here are issues of the loca-)-3.074 F .469(tion of the mailbox, the format of the mailbox, the locking protocol used, etc., that are best decided by)
+87 333 R .038(other programs.)87 345 R .038(One surprisingly major anno)
+5.038 F .038(yance in man)-.1 F 2.538(yi)-.15 G .038
+(nternet mailers is that the location and for)-2.538 F(-)-.2 E .138
+(mat of local mail is b)87 357 R .138(uilt in.)-.2 F .137(The feeling seems to be that local mail is so common that it should be ef)
+5.137 F<8c2d>-.25 E 3.045(cient. This)87 369 R .545
+(feeling is not born out by our e)3.045 F .545
+(xperience; on the contrary)-.15 F 3.045(,t)-.65 G .545
+(he location and format of mail-)-3.045 F(box)87 381 Q(es seems to v)
+-.15 E(ary widely from system to system.)-.25 E .681(The ability to automatically generate a response to incoming mail \(by forw)
+112 397.2 R .68(arding mail to a pro-)-.1 F .435
+(gram\) seems useful \(\231I am on v)87 409.2 R .435
+(acation until late August....)-.25 F 2.935(\232\) b)-.7 F .435
+(ut can create problems such as forw)-.2 F(ard-)-.1 E .143
+(ing loops \(tw)87 421.2 R 2.643(op)-.1 G .143(eople on v)-2.643 F .143
+(acation whose programs send notes back and forth, for instance\) if these pro-)
+-.25 F .732(grams are not well written.)87 433.2 R 3.232(Ap)5.732 G .732
+(rogram could be written to do standard tasks correctly)-3.232 F 3.233
+(,b)-.65 G .733(ut this w)-3.433 F(ould)-.1 E(solv)87 445.2 Q 2.5(et)
+-.15 G(he general case.)-2.5 E .225
+(It might be desirable to implement some form of load limiting.)112
+461.4 R 2.725(Ia)5.225 G 2.724(mu)-2.725 G(na)-2.724 E -.1(wa)-.15 G
+.224(re of an).1 F 2.724(ym)-.15 G .224(ail system)-2.724 F
+(that addresses this problem, nor am I a)87 473.4 Q -.1(wa)-.15 G
+(re of an).1 E 2.5(yr)-.15 G(easonable solution at this time.)-2.5 E
+.113(The con\214guration \214le is currently practically inscrutable; considerable con)
+112 489.6 R -.15(ve)-.4 G .114(nience could be real-).15 F
+(ized with a higher)87 501.6 Q(-le)-.2 E -.15(ve)-.25 G 2.5(lf).15 G
+(ormat.)-2.5 E .778(It seems clear that common protocols will be changing soon to accommodate changing require-)
+112 517.8 R 2.774(ments and en)87 529.8 R 5.274(vironments. These)-.4 F
+2.774
+(changes will include modi\214cations to the message header \(e.g.,)
+5.274 F .859([NBS80]\) or to the body of the message itself \(such as for multimedia messages [Postel80]\).)
+87 541.8 R(Experi-)5.859 E
+(ence indicates that these changes should be relati)87 553.8 Q -.15(ve)
+-.25 G(ly tri).15 E(vial to inte)-.25 E(grate into the e)-.15 E
+(xisting system.)-.15 E .811(In tightly coupled en)112 570 R .812
+(vironments, it w)-.4 F .812(ould be nice to ha)-.1 F 1.112 -.15(ve a n)
+-.2 H .812(ame serv).15 F .812(er such as Grapvine [Bir)-.15 F(-)-.2 E
+.095(rell82] inte)87 582 R .095(grated into the mail system.)-.15 F .095
+(This w)5.095 F .095(ould allo)-.1 F 2.594(was)-.25 G .094
+(ite such as \231Berk)-2.594 F(ele)-.1 E .094
+(y\232 to appear as a single)-.15 F 2.606
+(host, rather than as a collection of hosts, and w)87 594 R 2.606
+(ould allo)-.1 F 5.106(wp)-.25 G 2.606(eople to mo)-5.106 F 2.906 -.15
+(ve t)-.15 H 2.606(ransparently among).15 F 1.664(machines without ha)87
+606 R 1.664(ving to change their addresses.)-.2 F 1.664(Such a f)6.664 F
+1.664(acility w)-.1 F 1.663(ould require an automatically)-.1 F .428
+(updated database and some method of resolving con\215icts.)87 618 R
+.428(Ideally this w)5.428 F .428(ould be ef)-.1 F(fecti)-.25 E .728 -.15
+(ve e)-.25 H -.15(ve)-.1 G 2.928(nw).15 G(ithout)-2.928 E .184
+(all hosts being under a single management.)87 630 R(Ho)5.184 E(we)-.25
+E -.15(ve)-.25 G .984 -.4(r, i).15 H 2.684(ti).4 G 2.683(sn)-2.684 G
+.183(ot clear whether this feature should be inte-)-2.683 F
+(grated into the aliasing f)87 642 Q
+(acility or should be considered a \231v)-.1 E
+(alue added\232 feature outside)-.25 E F1(sendmail)2.5 E F2(itself.)2.5
+E .79(As a more interesting case, the CSNET name serv)112 658.2 R .791
+(er [Solomon81] pro)-.15 F .791(vides an f)-.15 F .791
+(acility that goes)-.1 F(be)87 670.2 Q .375
+(yond a single tightly-coupled en)-.15 F 2.875(vironment. Such)-.4 F
+2.875(af)2.875 G .375(acility w)-2.975 F .374(ould normally e)-.1 F .374
+(xist outside of)-.15 F F1(sendmail)2.874 E F2(ho)87 682.2 Q(we)-.25 E
+-.15(ve)-.25 G -.55(r.).15 G EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
+(ork Mail Router)-.1 E(SMM:9-11)189.78 E -.55(AC)72 96 S(KNO).55 E
+(WLEDGEMENTS)-.5 E/F1 10/Times-Roman@0 SF 1.203(Thanks are due to K)97
+112.2 R 1.204(urt Shoens for his continual cheerful assistance and good advice, Bill Jo)
+-.15 F 3.704(yf)-.1 G(or)-3.704 E .102
+(pointing me in the correct direction \(o)72 124.2 R -.15(ve)-.15 G
+2.602(ra).15 G .102(nd o)-2.602 F -.15(ve)-.15 G .102
+(r\), and Mark Horton for more advice, prodding, and man).15 F(y)-.15 E
+.453(of the good ideas.)72 136.2 R -.15(Ku)5.453 G .453
+(rt and Eric Schmidt are to be credited for using).15 F/F2 10
+/Times-Italic@0 SF(delivermail)2.953 E F1 .453(as a serv)2.953 F .453
+(er for their pro-)-.15 F 1.663(grams \()72 148.2 R F2(Mail)A F1 1.663
+(and BerkNet respecti)4.163 F -.15(ve)-.25 G 1.663(ly\) before an).15 F
+4.163(ys)-.15 G 1.663(ane person should ha)-4.163 F -.15(ve)-.2 G 4.163
+(,a).15 G 1.662(nd making the necessary)-4.163 F .078
+(modi\214cations promptly and happily)72 160.2 R 5.078(.E)-.65 G .078
+(ric g)-5.078 F -2.25 -.2(av e)-.05 H .079
+(me considerable advice about the perils of netw)2.778 F .079(ork softw)
+-.1 F(are)-.1 E .179(which sa)72 172.2 R -.15(ve)-.2 G 2.679(dm).15 G
+2.679(ea)-2.679 G 2.679(nu)-2.679 G(nkno)-2.679 E .178(wn amount of w)
+-.25 F .178(ork and grief.)-.1 F .178
+(Mark did the original implementation of the DBM)5.178 F -.15(ve)72
+184.2 S .341
+(rsion of aliasing, installed the VFORK code, wrote the current v).15 F
+.341(ersion of)-.15 F F2(rmail)2.841 E F1 2.841(,a)C .341(nd w)-2.841 F
+.342(as the person who)-.1 F .61(really con)72 196.2 R .61
+(vinced me to put the w)-.4 F .61(ork into)-.1 F F2(delivermail)3.109 E
+F1 .609(to turn it into)3.109 F F2(sendmail)3.109 E F1 5.609(.K)C .609
+(urt deserv)-5.759 F .609(es accolades for)-.15 F(using)72 208.2 Q F2
+(sendmail)2.57 E F1 .07(when I w)2.57 F .07(as myself afraid to tak)-.1
+F 2.57(et)-.1 G .07(he risk; ho)-2.57 F 2.57(wap)-.25 G .07
+(erson can continue to be so enthusiastic in)-2.57 F(the f)72 220.2 Q
+(ace of so much bitter reality is be)-.1 E(yond me.)-.15 E -.15(Ku)97
+236.4 S 1.505(rt, Mark, Kirk McK).15 F 1.505
+(usick, Marvin Solomon, and man)-.15 F 4.005(yo)-.15 G 1.504(thers ha)
+-4.005 F 1.804 -.15(ve r)-.2 H -.25(ev).15 G(ie).25 E 1.504
+(wed this paper)-.25 F 4.004(,g)-.4 G -.25(iv)-4.004 G(ing).25 E
+(considerable useful advice.)72 248.4 Q .846(Special thanks are reserv)
+97 264.6 R .846(ed for Mik)-.15 F 3.346(eS)-.1 G(tonebrak)-3.346 E .846
+(er at Berk)-.1 F(ele)-.1 E 3.347(ya)-.15 G .847
+(nd Bob Epstein at Britton-Lee, who)-3.347 F .542(both kno)72 276.6 R
+.542(wingly allo)-.25 F .542(wed me to put so much w)-.25 F .541
+(ork into this project when there were so man)-.1 F 3.041(yo)-.15 G .541
+(ther things I)-3.041 F(really should ha)72 288.6 Q .3 -.15(ve b)-.2 H
+(een w).15 E(orking on.)-.1 E EP
+%%Page: 12 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(REFERENCES)256.605 132 Q 62.73
+([Birrell82] Birrell,)72 148.2 R 1.084(A. D., Le)3.584 F 1.084
+(vin, R., Needham, R. M., and Schroeder)-.25 F 3.584(,M)-.4 G 3.585(.D)
+-3.584 G 1.085(., \231Grape)-3.585 F(vine:)-.25 E(An Ex)180 160.2 Q
+(ercise in Distrib)-.15 E(uted Computing.)-.2 E 5<9a49>-.7 G(n)-5 E/F1
+10/Times-Italic@0 SF(Comm. A.C.M. 25,)2.5 E F0(4, April 82.)2.5 E 59.4
+([Borden79] Borden,)72 176.4 R .796
+(S., Gaines, R. S., and Shapiro, N. Z.,)3.296 F F1 .795(The MH Messa)
+3.295 F .995 -.1(ge H)-.1 H .795(andling Sys-).1 F(tem: User)180 188.4 Q
+(s' Manual.)-.1 E F0(R-2367-P)5 E(AF)-.92 E 5(.R)-.8 G(and Corporation.)
+-5 E(October 1979.)5 E([Crock)72 204.6 Q 52.29(er77a] Crock)-.1 F(er)-.1
+E 2.508(,D)-.4 G 2.508(.H)-2.508 G .008(., V)-2.508 F .009
+(ittal, J. J., Pogran, K. T)-.6 F .009(., and Henderson, D. A. Jr)-.74 F
+(.,)-.55 E F1(Standar)2.509 E 2.509(df)-.37 G(or)-2.509 E .955(the F)180
+216.6 R .955(ormat of ARP)-1.05 F 3.454(AN)-.9 G .954(etwork T)-3.454 F
+-.2(ex)-.92 G 3.454(tM).2 G(essa)-3.454 E -.1(ge)-.1 G(s.).1 E F0 .954
+(RFC 733, NIC 41952.)5.954 F .954(In [Fein-)5.954 F 2.5(ler78]. No)180
+228.6 R -.15(ve)-.15 G(mber 1977.).15 E([Crock)72 244.8 Q 51.73
+(er77b] Crock)-.1 F(er)-.1 E 3.04(,D)-.4 G 3.04(.H)-3.04 G(.,)-3.04 E F1
+-1.55 -.55(Fr a)3.04 H(me).55 E .54(work and Functions of the MS P)-.15
+F(er)-.8 E .54(sonal Messa)-.1 F .74 -.1(ge S)-.1 H(ystem.).1 E F0
+(R-2134-ARP)180 256.8 Q(A, Rand Corporation, Santa Monica, California.)
+-.92 E(1977.)5 E([Crock)72 273 Q 56.73(er79] Crock)-.1 F(er)-.1 E 2.557
+(,D)-.4 G 2.557(.H)-2.557 G .056(., Szurk)-2.557 F -.25(ow)-.1 G .056
+(ski, E. S., and F).25 F(arber)-.15 E 2.556(,D)-.4 G 2.556(.J)-2.556 G
+(.,)-2.556 E F1 .056(An Internetwork Memo Dis-)2.556 F(trib)180 285 Q
+1.341(ution F)-.2 F 1.341(acility \212 MMDF)-.75 F(.)-1.35 E F0 1.341
+(6th Data Communication Symposium, Asilomar)6.341 F(.)-.55 E(No)180 297
+Q -.15(ve)-.15 G(mber 1979.).15 E([Crock)72 313.2 Q 56.73(er82] Crock)
+-.1 F(er)-.1 E 3.383(,D)-.4 G 3.383(.H)-3.383 G(.,)-3.383 E F1(Standar)
+3.383 E 3.383(df)-.37 G .883(or the F)-3.383 F .882
+(ormat of Arpa Internet T)-1.05 F -.2(ex)-.92 G 3.382(tM).2 G(essa)
+-3.382 E -.1(ge)-.1 G(s.).1 E F0(RFC)5.882 E 4.197(822. Netw)180 325.2 R
+1.697(ork Information Center)-.1 F 4.197(,S)-.4 G 1.698
+(RI International, Menlo P)-4.197 F 1.698(ark, California.)-.15 F
+(August 1982.)180 337.2 Q 53.3([Metcalfe76] Metcalfe,)72 353.4 R .727
+(R., and Boggs, D., \231Ethernet: Distrib)3.227 F .727(uted P)-.2 F(ack)
+-.15 E .727(et Switching for Local)-.1 F(Computer Netw)180 365.4 Q
+(orks\232,)-.1 E F1(Communications of the A)2.5 E(CM 19,)-.3 E F0 2.5
+(7. July)2.5 F(1976.)2.5 E 60.51([Feinler78] Feinler)72 381.6 R 4.438
+(,E)-.4 G 1.938(., and Postel, J.)-4.438 F(\(eds.\),)6.938 E F1(ARP)
+4.438 E 1.938(ANET Pr)-.9 F 1.938(otocol Handbook.)-.45 F F0 1.938
+(NIC 7104,)6.938 F(Netw)180 393.6 Q(ork Information Center)-.1 E 2.5(,S)
+-.4 G(RI International, Menlo P)-2.5 E(ark, California.)-.15 E(1978.)5 E
+69.39([NBS80] National)72 409.8 R 1.46(Bureau of Standards,)3.96 F F1
+1.46(Speci\214cation of a Dr)3.96 F 1.46(aft Messa)-.15 F 1.66 -.1(ge F)
+-.1 H 1.46(ormat Stan-)-.95 F(dar)180 421.8 Q(d.)-.37 E F0
+(Report No. ICST/CBOS 80-2.)5 E(October 1980.)5 E 60.51
+([Neigus73] Neigus,)72 438 R(N.,)5.186 E F1 -.45(Fi)5.186 G 2.686(le T)
+.45 F -.15(ra)-.55 G 2.686(nsfer Pr).15 F 2.686(otocol for the ARP)-.45
+F 5.187(AN)-.9 G(etwork.)-5.187 E F0 2.687(RFC 542, NIC)7.687 F 2.5
+(17759. In)180 450 R 2.5([Feinler78]. August,)2.5 F(1973.)2.5 E([No)72
+466.2 Q 55.21(witz78a] No)-.25 F 1.633(witz, D. A., and Lesk, M. E.,)
+-.25 F F1 4.132(AD)4.132 G 1.632(ial-Up Network of UNIX Systems.)-4.132
+F F0(Bell)6.632 E 5.403(Laboratories. In)180 478.2 R 2.904
+(UNIX Programmer')5.403 F 5.404(sM)-.55 G 2.904(anual, Se)-5.404 F -.15
+(ve)-.25 G 2.904(nth Edition, V).15 F 2.904(olume 2.)-1.29 F
+(August, 1978.)180 490.2 Q([No)72 506.4 Q 54.65(witz78b] No)-.25 F .633
+(witz, D. A.,)-.25 F F1 .632(Uucp Implementation Description.)3.132 F F0
+.632(Bell Laboratories.)5.632 F .632(In UNIX)5.632 F(Programmer')180
+518.4 Q 2.5(sM)-.55 G(anual, Se)-2.5 E -.15(ve)-.25 G(nth Edition, V).15
+E(olume 2.)-1.29 E(October)5 E 2.5(,1)-.4 G(978.)-2.5 E 64.39
+([Postel74] Postel,)72 534.6 R .24(J., and Neigus, N., Re)2.74 F .241
+(vised FTP Reply Codes.)-.25 F .241(RFC 640, NIC 30843.)5.241 F(In)5.241
+E 2.5([Feinler78]. June,)180 546.6 R(1974.)2.5 E 64.39
+([Postel77] Postel,)72 562.8 R(J.,)2.5 E F1(Mail Pr)2.5 E(otocol.)-.45 E
+F0(NIC 29588.)5 E(In [Feinler78].)5 E(No)5 E -.15(ve)-.15 G(mber 1977.)
+.15 E 59.95([Postel79a] Postel,)72 579 R(J.,)3.144 E F1 .644
+(Internet Messa)3.144 F .844 -.1(ge P)-.1 H -.45(ro).1 G(tocol.).45 E F0
+.644(RFC 753, IEN 85.)5.644 F(Netw)5.644 E .644(ork Information)-.1 F
+(Center)180 591 Q 2.5(,S)-.4 G(RI International, Menlo P)-2.5 E
+(ark, California.)-.15 E(March 1979.)5 E 59.39([Postel79b] Postel,)72
+607.2 R 1.305(J. B.,)3.805 F F1 1.305(An Internetwork Messa)3.805 F
+1.505 -.1(ge S)-.1 H(tructur).1 E -.15(e.)-.37 G F0(In)6.456 E F1(Pr)
+3.806 E 1.306(oceedings of the Sixth)-.45 F
+(Data Communications Symposium,)180 619.2 Q F0 2.5(IEEE. Ne)2.5 F 2.5
+(wY)-.25 G 2.5(ork. No)-3.6 F -.15(ve)-.15 G(mber 1979.).15 E 64.39
+([Postel80] Postel,)72 635.4 R .639(J. B.,)3.139 F F1 3.139(AS)3.139 G
+(tructur)-3.139 E .639(ed F)-.37 F .639(ormat for T)-1.05 F -.15(ra)-.55
+G .639(nsmission of Multi-Media Documents.).15 F F0 .418(RFC 767.)180
+647.4 R(Netw)5.419 E .419(ork Information Center)-.1 F 2.919(,S)-.4 G
+.419(RI International, Menlo P)-2.919 F .419(ark, Califor)-.15 F(-)-.2 E
+2.5(nia. August)180 659.4 R(1980.)2.5 E 64.39([Postel82] Postel,)72
+675.6 R 2.05(J. B.,)4.55 F F1 2.05(Simple Mail T)4.55 F -.15(ra)-.55 G
+2.05(nsfer Pr).15 F(otocol.)-.45 E F0 2.05
+(RFC821 \(obsoleting RFC788\).)7.05 F(Netw)180 687.6 Q .273
+(ork Information Center)-.1 F 2.774(,S)-.4 G .274
+(RI International, Menlo P)-2.774 F .274(ark, California.)-.15 F(August)
+5.274 E(1982.)180 699.6 Q/F2 10/Times-Bold@0 SF 187.28
+(SMM:9-12 SENDMAIL)72 756 R 2.5<8a41>2.5 G 2.5(nI)-2.5 G(nter)-2.5 E
+(netw)-.15 E(ork Mail Router)-.1 E EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(SENDMAIL \212 An Inter)72 60 Q(netw)-.15 E
+(ork Mail Router)-.1 E(SMM:9-13)189.78 E/F1 10/Times-Roman@0 SF 55.5
+([Schmidt79] Schmidt,)72 96 R(E.,)2.972 E/F2 10/Times-Italic@0 SF .472
+(An Intr)2.972 F .472(oduction to the Berk)-.45 F(ele)-.1 E 2.972(yN)-.3
+G(etwork.)-2.972 E F1(Uni)5.472 E -.15(ve)-.25 G .472
+(rsity of California,).15 F(Berk)180 108 Q(ele)-.1 E 2.5(yC)-.15 G 2.5
+(alifornia. 1979.)-2.5 F 59.95([Shoens79] Shoens,)72 124.2 R(K.,)4.894 E
+F2 2.394(Mail Refer)4.894 F 2.394(ence Manual.)-.37 F F1(Uni)7.394 E
+-.15(ve)-.25 G 2.395(rsity of California, Berk).15 F(ele)-.1 E 6.195
+-.65(y. I)-.15 H(n).65 E(UNIX Programmer')180 136.2 Q 2.5(sM)-.55 G
+(anual, Se)-2.5 E -.15(ve)-.25 G(nth Edition, V).15 E(olume 2C.)-1.29 E
+(December 1979.)5 E 60.51([Sluizer81] Sluizer)72 152.4 R 2.872(,S)-.4 G
+.372(., and Postel, J. B.,)-2.872 F F2 .372(Mail T)2.872 F -.15(ra)-.55
+G .372(nsfer Pr).15 F(otocol.)-.45 E F1 .371(RFC 780.)5.371 F(Netw)5.371
+E .371(ork Infor)-.1 F(-)-.2 E(mation Center)180 164.4 Q 2.5(,S)-.4 G
+(RI International, Menlo P)-2.5 E(ark, California.)-.15 E(May 1981.)5 E
+52.72([Solomon81] Solomon,)72 180.6 R .96(M., Landweber)3.46 F 3.46(,L)
+-.4 G .96(., and Neuhengen, D., \231The Design of the CSNET)-3.46 F
+(Name Serv)180 192.6 Q(er)-.15 E 3.9 -.7(.\232 C)-.55 H(S-DN-2, Uni).7 E
+-.15(ve)-.25 G(rsity of W).15 E(isconsin, Madison.)-.4 E(No)5 E -.15(ve)
+-.15 G(mber 1981.).15 E 78.28([Su82] Su,)72 208.8 R(Za)4.344 E 1.844
+(w-Sing, and Postel, Jon,)-.15 F F2 1.844(The Domain Naming Con)4.344 F
+1.844(vention for Internet)-.4 F 1.717(User Applications.)180 220.8 R F1
+4.217(RFC819. Netw)6.717 F 1.717(ork Information Center)-.1 F 4.217(,S)
+-.4 G 1.718(RI International,)-4.217 F(Menlo P)180 232.8 Q
+(ark, California.)-.15 E(August 1982.)5 E([UNIX83])72 249 Q F2 2.12
+(The UNIX Pr)66.35 F -.1(og)-.45 G -.15(ra).1 G(mmer').15 E 4.62(sM)-.4
+G 2.12(anual, Se)-4.62 F 2.12(venth Edition,)-.15 F F1 -.6(Vi)4.62 G
+2.12(rtual V).6 F 2.12(AX-11 V)-1.35 F(ersion,)-1.11 E -1.29(Vo)180 261
+S 1.027(lume 1.)1.29 F 1.027(Bell Laboratories, modi\214ed by the Uni)
+6.027 F -.15(ve)-.25 G 1.027(rsity of California, Berk).15 F(e-)-.1 E
+(le)180 273 Q 1.3 -.65(y, C)-.15 H 2.5(alifornia. March,).65 F(1983.)2.5
+E EP
+%%Trailer
+end
+%%EOF
diff --git a/usr.sbin/sendmail/doc/usenix/usenix.ps b/usr.sbin/sendmail/doc/usenix/usenix.ps
new file mode 100644
index 00000000000..8292eb26251
--- /dev/null
+++ b/usr.sbin/sendmail/doc/usenix/usenix.ps
@@ -0,0 +1,1034 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.10
+%%CreationDate: Tue May 19 16:37:13 1998
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%DocumentSuppliedResources: procset grops 1.10 0
+%%Pages: 9
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.10 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/FL{
+currentgray exch setgray fill setgray
+}bind def
+/BL/fill load def
+/LW/setlinewidth load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Times-Bold
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Bold@0 ENC0/Times-Bold RE/Times-Italic@0 ENC0/Times-Italic RE
+/Times-Roman@0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 14/Times-Roman@0 SF(Mail Systems and Addressing)204.196 141 Q
+(in 4.2bsd)262.331 157.8 Q/F1 10/Times-Roman@0 SF(Eric Allman*)260.92
+181.8 Q/F2 10/Times-Italic@0 SF(Britton-Lee)254.86 199.8 Q 2.5(,I)-.1 G
+(nc.)-2.5 E(1919 Addison Str)225.13 211.8 Q(eet, Suite 105.)-.37 E(Berk)
+232.645 223.8 Q(ele)-.1 E 1.1 -.55(y, C)-.3 H(alifornia 94704.).55 E F1
+(eric@Berk)244.175 241.8 Q(ele)-.1 E -.65(y.)-.15 G(ARP).65 E(A)-.92 E
+(ucb)264.6 253.8 Q -.25(va)-.15 G(x!eric).25 E(ABSTRA)262.085 286.2 Q
+(CT)-.4 E .966
+(Routing mail through a heterogeneous internet presents man)112 302.4 R
+3.466(yn)-.15 G 1.466 -.25(ew p)-3.466 H 3.466(roblems. Among).25 F .297
+(the w)112 314.4 R .297(orst of these is that of address mapping.)-.1 F
+(Historically)5.297 E 2.797(,t)-.65 G .298(his has been handled on an)
+-2.797 F(ad hoc basis.)112 326.4 Q(Ho)5 E(we)-.25 E -.15(ve)-.25 G .8
+-.4(r, t).15 H(his approach has become unmanageable as internets gro).4
+E -.65(w.)-.25 G .099(Sendmail acts a uni\214ed \231post of)112 342.6 R
+.098(\214ce\232 to which all mail can be submitted.)-.25 F .098
+(Address inter)5.098 F(-)-.2 E .754(pretation is controlled by a production system, which can parse both old and ne)
+112 354.6 R 3.255(wf)-.25 G(or)-3.255 E(-)-.2 E .242(mat addresses.)112
+366.6 R .242(The ne)5.242 F 2.742(wf)-.25 G .242
+(ormat is \231domain-based,)-2.742 F 2.742<9a618d>-.7 G -.15(ex)-2.742 G
+.241(ible technique that can handle).15 F(man)112 378.6 Q 2.606(yc)-.15
+G .106(ommon situations.)-2.606 F .106
+(Sendmail is not intended to perform user interf)5.106 F .107
+(ace functions.)-.1 F .399(Sendmail will replace deli)112 394.8 R -.15
+(ve)-.25 G .399(rmail in the Berk).15 F(ele)-.1 E 2.899(y4)-.15 G .399
+(.2 distrib)-2.899 F 2.899(ution. Se)-.2 F -.15(ve)-.25 G .399
+(ral major hosts).15 F .421(are no)112 406.8 R 2.921(wo)-.25 G 2.921(rw)
+-2.921 G .421(ill soon be running sendmail.)-2.921 F .421
+(This change will af)5.421 F .422(fect an)-.25 F 2.922(yu)-.15 G .422
+(sers that route)-2.922 F 1.5(mail through a sendmail g)112 418.8 R(ate)
+-.05 E -.1(wa)-.25 G 5.3 -.65(y. T).1 H 1.5
+(he changes that will be user visible are empha-).65 F(sized.)112 430.8
+Q .906
+(The mail system to appear in 4.2bsd will contain a number of changes.)
+97 475.2 R .906(Most of these changes are)5.906 F .469
+(based on the replacement of)72 487.2 R F2(delivermail)2.969 E F1 .469
+(with a ne)2.969 F 2.969(wm)-.25 G .469(odule called)-2.969 F F2 2.97
+(sendmail. Sendmail)2.97 F F1 .47(implements a gen-)2.97 F 1.834
+(eral internetw)72 499.2 R 1.834(ork mail routing f)-.1 F(acility)-.1 E
+4.333(,f)-.65 G 1.833(eaturing aliasing and forw)-4.333 F 1.833
+(arding, automatic routing to netw)-.1 F(ork)-.1 E -.05(ga)72 511.2 S
+(te).05 E -.1(wa)-.25 G .205(ys, and \215e).1 F .205
+(xible con\214guration.)-.15 F .205(Of k)5.205 F .505 -.15(ey i)-.1 H
+.205(nterest to the mail system user will be the changes in the net-).15
+F -.1(wo)72 523.2 S(rk addressing structure.).1 E .624(In a simple netw)
+97 539.4 R .624(ork, each node has an address, and resources can be identi\214ed with a host-resource)
+-.1 F .374(pair; in particular)72 551.4 R 2.874(,t)-.4 G .374
+(he mail system can refer to users using a host-username pair)-2.874 F
+5.374(.H)-.55 G .375(ost names and numbers)-5.374 F(ha)72 563.4 Q .3
+-.15(ve t)-.2 H 2.5(ob).15 G 2.5(ea)-2.5 G
+(dministered by a central authority)-2.5 E 2.5(,b)-.65 G
+(ut usernames can be assigned locally to each host.)-2.7 E .397
+(In an internet, multiple netw)97 579.6 R .396(orks with dif)-.1 F .396
+(ferent characteristics and managements must communicate.)-.25 F .389
+(In particular)72 591.6 R 2.889(,t)-.4 G .389
+(he syntax and semantics of resource identi\214cation change.)-2.889 F
+.39(Certain special cases can be han-)5.389 F 1.033(dled tri)72 603.6 R
+1.033(vially by)-.25 F F2 1.033(ad hoc)3.533 F F1 1.032
+(techniques, such as pro)3.533 F 1.032(viding netw)-.15 F 1.032
+(ork names that appear local to hosts on other)-.1 F(netw)72 615.6 Q
+1.621(orks, as with the Ethernet at Xerox P)-.1 F 4.121(ARC. Ho)-.92 F
+(we)-.25 E -.15(ve)-.25 G 2.421 -.4(r, t).15 H 1.622
+(he general case is e).4 F 1.622(xtremely comple)-.15 F 4.122(x. F)-.15
+F(or)-.15 E -.15(ex)72 627.6 S .29(ample, some netw).15 F .29
+(orks require that the route the message tak)-.1 F .29(es be e)-.1 F .29
+(xplicitly speci\214ed by the sender)-.15 F 2.79(,s)-.4 G(im-)-2.79 E
+1.618(plifying the database update problem since only adjacent hosts must be entered into the system tables,)
+72 639.6 R .573(while others use logical addressing, where the sender speci\214es the location of the recipient b)
+72 651.6 R .573(ut not ho)-.2 F 3.072(wt)-.25 G(o)-3.072 E 1.065
+(get there.)72 663.6 R 1.065(Some netw)6.065 F 1.066
+(orks use a left-associati)-.1 F 1.366 -.15(ve s)-.25 H 1.066
+(yntax and others use a right-associati).15 F 1.366 -.15(ve s)-.25 H
+1.066(yntax, causing).15 F .32 LW 76 673.2 72 673.2 DL 80 673.2 76 673.2
+DL 84 673.2 80 673.2 DL 88 673.2 84 673.2 DL 92 673.2 88 673.2 DL 96
+673.2 92 673.2 DL 100 673.2 96 673.2 DL 104 673.2 100 673.2 DL 108 673.2
+104 673.2 DL 112 673.2 108 673.2 DL 116 673.2 112 673.2 DL 120 673.2 116
+673.2 DL 124 673.2 120 673.2 DL 128 673.2 124 673.2 DL 132 673.2 128
+673.2 DL 136 673.2 132 673.2 DL 140 673.2 136 673.2 DL 144 673.2 140
+673.2 DL 148 673.2 144 673.2 DL 152 673.2 148 673.2 DL 156 673.2 152
+673.2 DL 160 673.2 156 673.2 DL 164 673.2 160 673.2 DL 168 673.2 164
+673.2 DL 172 673.2 168 673.2 DL 176 673.2 172 673.2 DL 180 673.2 176
+673.2 DL 184 673.2 180 673.2 DL 188 673.2 184 673.2 DL 192 673.2 188
+673.2 DL 196 673.2 192 673.2 DL 200 673.2 196 673.2 DL 204 673.2 200
+673.2 DL 208 673.2 204 673.2 DL 212 673.2 208 673.2 DL 216 673.2 212
+673.2 DL/F3 8/Times-Roman@0 SF .556(*A considerable part of this w)93.6
+685.2 R .556(ork w)-.08 F .556(as done while under the emplo)-.08 F
+2.557(yo)-.08 G 2.557(ft)-2.557 G .557(he INGRES Project at the Uni)
+-2.557 F -.12(ve)-.2 G .557(rsity of California at).12 F(Berk)72 694.8 Q
+(ele)-.08 E -.52(y.)-.12 G/F4 10/Times-Bold@0 SF(Mail Systems and Addr)
+72 756 Q(essing in 4.2bsd)-.18 E(1)259.93 E EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(2)259.93 E/F1 10/Times-Roman@0 SF(ambiguity in mix)72 96 Q
+(ed addresses.)-.15 E .679
+(Internet standards seek to eliminate these problems.)97 112.2 R
+(Initially)5.678 E 3.178(,t)-.65 G .678(hese proposed e)-3.178 F .678
+(xpanding the address)-.15 F .331
+(pairs to address triples, consisting of {netw)72 124.2 R .331
+(ork, host, username} triples.)-.1 F(Netw)5.332 E .332
+(ork numbers must be uni)-.1 F -.15(ve)-.25 G -.2(r-).15 G 1.452
+(sally agreed upon, and hosts can be assigned locally on each netw)72
+136.2 R 3.952(ork. The)-.1 F(user)3.952 E(-le)-.2 E -.15(ve)-.25 G 3.952
+(lp).15 G 1.452(resentation w)-3.952 F(as)-.1 E .249(changed to address domains, comprised of a local resource identi\214cation and a hierarchical domain speci\214-)
+72 148.2 R 1.54(cation with a common static root.)72 160.2 R 1.539
+(The domain technique separates the issue of ph)6.539 F 1.539(ysical v)
+-.05 F 1.539(ersus logical)-.15 F 3.001(addressing. F)72 172.2 R .501
+(or e)-.15 F .502(xample, an address of the form \231eric@a.cc.berk)-.15
+F(ele)-.1 E -.65(y.)-.15 G .502(arpa\232 describes the logical or).65 F
+-.05(ga)-.18 G(niza-).05 E .443(tion of the address space \(user \231eric\232 on host \231a\232 in the Computer Center at Berk)
+72 184.2 R(ele)-.1 E .443(y\) b)-.15 F .443(ut not the ph)-.2 F(ysical)
+-.05 E(netw)72 196.2 Q .934(orks used \(for e)-.1 F .934
+(xample, this could go o)-.15 F -.15(ve)-.15 G 3.434(rd).15 G(if)-3.434
+E .934(ferent netw)-.25 F .935
+(orks depending on whether \231a\232 were on an)-.1 F
+(ethernet or a store-and-forw)72 208.2 Q(ard netw)-.1 E(ork\).)-.1 E/F2
+10/Times-Italic@0 SF(Sendmail)97 224.4 Q F1 .493
+(is intended to help bridge the g)2.993 F .493(ap between the totally)
+-.05 F F2 .493(ad hoc)2.993 F F1 -.1(wo)2.993 G .493(rld of netw).1 F
+.493(orks that kno)-.1 F(w)-.25 E .854
+(nothing of each other and the clean, tightly-coupled w)72 236.4 R .854
+(orld of unique netw)-.1 F .855(ork numbers.)-.1 F .855
+(It can accept old)5.855 F .633(arbitrary address syntax)72 248.4 R .632
+(es, resolving ambiguities using heuristics speci\214ed by the system administrator)
+-.15 F 3.132(,a)-.4 G(s)-3.132 E .347(well as domain-based addressing.)
+72 260.4 R .347(It helps guide the con)5.347 F -.15(ve)-.4 G .347
+(rsion of message formats between disparate net-).15 F -.1(wo)72 272.4 S
+3.395(rks. In).1 F(short,)3.395 E F2(sendmail)3.395 E F1 .894
+(is designed to assist a graceful transition to consistent internetw)
+3.395 F .894(ork addressing)-.1 F(schemes.)72 284.4 Q .689
+(Section 1 de\214nes some of the terms frequently left fuzzy when w)97
+312.6 R .69(orking in mail systems.)-.1 F .69(Section 2)5.69 F .595
+(discusses the design goals for)72 324.6 R F2(sendmail)3.095 E F1 5.595
+(.I)C 3.095(ns)-5.595 G .595(ection 3, the ne)-3.095 F 3.095(wa)-.25 G
+.594(ddress formats and basic features of)-3.095 F F2(send-)3.094 E
+(mail)72 336.6 Q F1 .893(are described.)3.393 F .893
+(Section 4 discusses some of the special problems of the UUCP netw)5.893
+F 3.394(ork. The)-.1 F(dif)3.394 E(fer)-.25 E(-)-.2 E(ences between)72
+348.6 Q F2(sendmail)2.5 E F1(and)2.5 E F2(delivermail)2.5 E F1
+(are presented in section 5.)2.5 E F0(DISCLAIMER:)112 376.8 Q F1 3.333
+(An)3.333 G .833(umber of e)-3.333 F .832
+(xamples in this paper use names of actual people and)-.15 F(or)112
+388.8 Q -.05(ga)-.18 G 4.572(nizations. This).05 F 2.072
+(is not intended to imply a commitment or e)4.572 F -.15(ve)-.25 G 4.573
+(na).15 G 4.573(ni)-4.573 G(ntellectual)-4.573 E 1.094
+(agreement on the part of these people or or)112 400.8 R -.05(ga)-.18 G
+3.594(nizations. In).05 F(particular)3.594 E 3.594(,B)-.4 G 1.094(ell T)
+-3.594 F(elephone)-.7 E .656
+(Laboratories \(BTL\), Digital Equipment Corporation \(DEC\), La)112
+412.8 R .657(wrence Berk)-.15 F(ele)-.1 E 3.157(yL)-.15 G(abo-)-3.157 E
+2.136(ratories \(LBL\), Britton-Lee Incorporated \(BLI\), and the Uni)
+112 424.8 R -.15(ve)-.25 G 2.136(rsity of California at).15 F(Berk)112
+436.8 Q(ele)-.1 E 3.088(ya)-.15 G .588(re not committed to an)-3.088 F
+3.089(yo)-.15 G 3.089(ft)-3.089 G .589(hese proposals at this time.)
+-3.089 F .589(Much of this paper)5.589 F
+(represents no more than the personal opinions of the author)112 448.8 Q
+(.)-.55 E F0 2.5(1. DEFINITIONS)72 477 R F1 .266(There are four basic concepts that must be clearly distinguished when dealing with mail systems:)
+112 493.2 R .514(the user \(or the user')87 505.2 R 3.014(sa)-.55 G .515
+(gent\), the user')-3.014 F 3.015(si)-.55 G .515
+(denti\214cation, the user')-3.015 F 3.015(sa)-.55 G .515
+(ddress, and the route.)-3.015 F .515(These are dis-)5.515 F
+(tinguished primarily by their position independence.)87 517.2 Q F0 2.5
+(1.1. User)87 541.2 R(and Identi\214cation)2.5 E F1 .264(The user is the being \(a person or program\) that is creating or recei)
+127 557.4 R .263(ving a message.)-.25 F(An)5.263 E F2 -.1(age)2.763 G
+(nt).1 E F1 .659(is an entity operating on behalf of the user \212 such as a secretary who handles my mail.)
+102 569.4 R .66(or a pro-)5.66 F(gram that automatically returns a message such as \231I am at the UNICOM conference.)
+102 581.4 Q<9a>-.7 E .931(The identi\214cation is the tag that goes along with the particular user)
+127 597.6 R 5.931(.T)-.55 G .931(his tag is completely)-5.931 F .216
+(independent of location.)102 609.6 R -.15(Fo)5.216 G 2.716(re).15 G
+.216(xample, my identi\214cation is the string \231Eric Allman,)-2.866 F
+2.717<9a61>-.7 G .217(nd this identi-)-2.717 F 1.228
+(\214cation does not change whether I am located at U.C. Berk)102 621.6
+R(ele)-.1 E 2.527 -.65(y, a)-.15 H 3.727(tB).65 G 1.227
+(ritton-Lee, or at a scienti\214c)-3.727 F(institute in Austria.)102
+633.6 Q 2.379(Since the identi\214cation is frequently ambiguous \(e.g., there are tw)
+127 649.8 R 4.879<6f99>-.1 G 2.38(Robert Henry\232s at)-4.879 F(Berk)102
+661.8 Q(ele)-.1 E .316(y\) it is common to add other disambiguating information that is not strictly part of the iden-)
+-.15 F(ti\214cation \(e.g., Robert \231Code Generator\232 Henry v)102
+673.8 Q(ersus Robert \231System Administrator\232 Henry\).)-.15 E F0 -1
+(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)130.475 E(an 83)-.15 E
+(Last Mod 11/27/93)98.355 E EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(3)259.93 E 2.5(1.2. Addr)87 96 R(ess)-.18 E/F1 10/Times-Roman@0
+SF .785(The address speci\214es a location.)127 112.2 R .786(As I mo)
+5.786 F 1.086 -.15(ve a)-.15 H .786(round, my address changes.).15 F
+-.15(Fo)5.786 G 3.286(re).15 G .786(xample, my)-3.436 F .749
+(address might change from \231eric@Berk)102 124.2 R(ele)-.1 E -.65(y.)
+-.15 G(ARP).65 E .749
+(A\232 to \231eric@bli.UUCP\232 or \231allman@IIASA.Aus-)-.92 F
+(tria\232 depending on my current af)102 136.2 Q(\214liation.)-.25 E(Ho)
+127 152.4 Q(we)-.25 E -.15(ve)-.25 G 2.819 -.4(r, a).15 H 4.519(na).4 G
+2.019(ddress is independent of the location of an)-4.519 F 2.019
+(yone else.)-.15 F 2.02(That is, my address)7.02 F .385
+(remains the same to e)102 164.4 R -.15(ve)-.25 G .385
+(ryone who might be sending me mail.).15 F -.15(Fo)5.385 G 2.885(re).15
+G .385(xample, a person at MIT and a)-3.035 F
+(person at USC could both send to \231eric@Berk)102 176.4 Q(ele)-.1 E
+-.65(y.)-.15 G(ARP).65 E(A\232 and ha)-.92 E .3 -.15(ve i)-.2 H 2.5(ta)
+.15 G(rri)-2.5 E .3 -.15(ve t)-.25 H 2.5(ot).15 G(he same mailbox.)-2.5
+E .627(Ideally a \231white pages\232 service w)127 192.6 R .627
+(ould be pro)-.1 F .627
+(vided to map user identi\214cations into addresses)-.15 F .444(\(for e)
+102 204.6 R .444(xample, see [Solomon81]\).)-.15 F .444
+(Currently this is handled by passing around scraps of paper or by)5.444
+F(calling people on the telephone to \214nd out their address.)102 216.6
+Q F0 2.5(1.3. Route)87 240.6 R F1 .288(While an address speci\214es)127
+256.8 R/F2 10/Times-Italic@0 SF(wher)2.788 E(e)-.37 E F1 .289
+(to \214nd a mailbox, a route speci\214es)2.789 F F2(how)2.789 E F1 .289
+(to \214nd the mailbox.)2.789 F(Speci\214cally)102 268.8 Q 2.607(,i)-.65
+G 2.607(ts)-2.607 G .106(peci\214es a path from sender to recei)-2.607 F
+-.15(ve)-.25 G 3.706 -.55(r. A).15 H 2.606(ss).55 G .106
+(uch, the route is potentially dif)-2.606 F .106(ferent for)-.25 F -2.15
+-.25(ev e)102 280.8 T(ry pair of people in the electronic uni).25 E -.15
+(ve)-.25 G(rse.).15 E .258
+(Normally the route is hidden from the user by the softw)127 297 R 2.758
+(are. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.058 -.4(r, s).15 H .258
+(ome netw).4 F .258(orks put the)-.1 F -.2(bu)102 309 S 1.972
+(rden of determining the route onto the sender).2 F 6.971(.A)-.55 G
+1.971(lthough this simpli\214es the softw)-6.971 F 1.971(are, it also)
+-.1 F(greatly impairs the usability for most users.)102 321 Q
+(The UUCP netw)5 E(ork is an e)-.1 E(xample of such a netw)-.15 E(ork.)
+-.1 E F0 2.5(2. DESIGN)72 345 R(GO)2.5 E(ALS)-.4 E F1(Design goals for)
+112 363.2 Q F2(sendmail)2.5 E/F3 7/Times-Roman@0 SF(1)-4 I F1(include:)
+2.5 4 M 12.5(\(1\) Compatibility)92 379.4 R 1.363(with the e)3.863 F
+1.363(xisting mail programs, including Bell v)-.15 F 1.363
+(ersion 6 mail, Bell v)-.15 F 1.364(ersion 7)-.15 F 3.589(mail, Berk)
+118.66 391.4 R(ele)-.1 E(y)-.15 E F2(Mail)6.089 E F1 3.589
+([Shoens79], BerkNet mail [Schmidt79], and hopefully UUCP mail)6.089 F
+([No)118.66 403.4 Q 2.5(witz78]. ARP)-.25 F(ANET mail [Crock)-.92 E
+(er82] w)-.1 E(as also required.)-.1 E 12.5(\(2\) Reliability)92 419.6 R
+4.002(,i)-.65 G 4.002(nt)-4.002 G 1.502(he sense of guaranteeing that e)
+-4.002 F -.15(ve)-.25 G 1.502(ry message is correctly deli).15 F -.15
+(ve)-.25 G 1.503(red or at least).15 F .368(brought to the attention of a human for correct disposal; no message should e)
+118.66 431.6 R -.15(ve)-.25 G 2.868(rb).15 G 2.868(ec)-2.868 G
+(ompletely)-2.868 E 2.54(lost. This)118.66 443.6 R .04(goal w)2.54 F
+.041(as considered essential because of the emphasis on mail in our en)
+-.1 F 2.541(vironment. It)-.4 F 1.755
+(has turned out to be one of the hardest goals to satisfy)118.66 455.6 R
+4.254(,e)-.65 G 1.754(specially in the f)-4.254 F 1.754(ace of the man)
+-.1 F(y)-.15 E .977(anomalous message formats produced by v)118.66 467.6
+R .977(arious ARP)-.25 F .977(ANET sites.)-.92 F -.15(Fo)5.977 G 3.478
+(re).15 G .978(xample, certain sites)-3.628 F .069
+(generate improperly formated addresses, occasionally causing error)
+118.66 479.6 R .069(-message loops.)-.2 F .068(Some hosts)5.069 F .766(use blanks in names, causing problems with mail programs that assume that an address is one)
+118.66 491.6 R -.1(wo)118.66 503.6 S 3.924(rd. The).1 F 1.423
+(semantics of some \214elds are interpreted slightly dif)3.923 F 1.423
+(ferently by dif)-.25 F 1.423(ferent sites.)-.25 F(In)6.423 E(summary)
+118.66 515.6 Q 3.022(,t)-.65 G .523(he obscure features of the ARP)
+-3.022 F .523(ANET mail protocol really)-.92 F F2(ar)3.023 E(e)-.37 E F1
+.523(used and are dif)3.023 F(\214cult)-.25 E(to support, b)118.66 527.6
+Q(ut must be supported.)-.2 E 12.5(\(3\) Existing)92 543.8 R(softw)2.939
+E .439(are to do actual deli)-.1 F -.15(ve)-.25 G .439
+(ry should be used whene).15 F -.15(ve)-.25 G 2.938(rp).15 G 2.938
+(ossible. This)-2.938 F .438(goal deri)2.938 F -.15(ve)-.25 G 2.938(sa)
+.15 G(s)-2.938 E
+(much from political and practical considerations as technical.)118.66
+555.8 Q 12.5(\(4\) Easy)92 572 R -.15(ex)2.898 G .398(pansion to f).15 F
+.398(airly comple)-.1 F 2.898(xe)-.15 G -.4(nv)-2.898 G .399
+(ironments, including multiple connections to a single net-).4 F -.1(wo)
+118.66 584 S .63(rk type \(such as with multiple UUCP or Ethernets\).).1
+F .63(This goal requires consideration of the)5.63 F(contents of an address as well as its syntax in order to determine which g)
+118.66 596 Q(ate)-.05 E -.1(wa)-.25 G 2.5(yt).1 G 2.5(ou)-2.5 G(se.)-2.5
+E 12.5(\(5\) Con\214guration)92 612.2 R 1.048
+(information should not be compiled into the code.)3.548 F 3.549(As)
+6.049 G 1.049(ingle compiled program)-3.549 F .084
+(should be able to run as is at an)118.66 624.2 R 2.584(ys)-.15 G .083
+(ite \(barring such basic changes as the CPU type or the operat-)-2.584
+F .342(ing system\).)118.66 636.2 R 1.942 -.8(We h)5.342 H -2.25 -.2
+(av e).8 H .343
+(found this seemingly unimportant goal to be critical in real life.)
+3.042 F(Besides)5.343 E .734(the simple problems that occur when an)
+118.66 648.2 R 3.234(yp)-.15 G .734(rogram gets recompiled in a dif)
+-3.234 F .733(ferent en)-.25 F(vironment,)-.4 E(man)118.66 660.2 Q 2.5
+(ys)-.15 G(ites lik)-2.5 E 2.5(et)-.1 G 2.5<6f99>-2.5 G
+(\214ddle\232 with an)-2.5 E(ything that the)-.15 E 2.5(yw)-.15 G
+(ill be recompiling an)-2.5 E(yw)-.15 E(ay)-.1 E(.)-.65 E .32 LW 76
+678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84
+678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL
+104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 678.8 DL 116
+678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 678.8 DL 128
+678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 678.8 DL 140
+678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 678.8 DL 152
+678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL 164
+678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 678.8 DL 176
+678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188
+678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200
+678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 678.8 DL 212
+678.8 208 678.8 DL 216 678.8 212 678.8 DL/F4 5/Times-Roman@0 SF(1)93.6
+689.2 Q/F5 8/Times-Roman@0 SF(This section mak)3.2 I
+(es no distinction between)-.08 E/F6 8/Times-Italic@0 SF(delivermail)2 E
+F5(and)2 E F6(sendmail.)2 E F0 -1(Ve)72 756 S(rsion 8.2)1 E
+(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/93)98.355 E EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(4)259.93 E/F1 10/Times-Roman@0 SF(\(6\))92 96 Q/F2 10
+/Times-Italic@0 SF(Sendmail)15 E F1 .184(must be able to let v)2.684 F
+.184(arious groups maintain their o)-.25 F .184
+(wn mailing lists, and let indi)-.25 F(viduals)-.25 E(specify their o)
+118.66 108 Q(wn forw)-.25 E
+(arding, without modifying the system alias \214le.)-.1 E 12.5
+(\(7\) Each)92 124.2 R .313
+(user should be able to specify which mailer to e)2.814 F -.15(xe)-.15 G
+.313(cute to process mail being deli).15 F -.15(ve)-.25 G .313(red for)
+.15 F 3.098(him. This)118.66 136.2 R .598(feature allo)3.098 F .598
+(ws users who are using specialized mailers that use a dif)-.25 F .598
+(ferent format to)-.25 F -.2(bu)118.66 148.2 S .25(ild their en).2 F .25
+(vironment without changing the system, and f)-.4 F .25
+(acilitates specialized functions \(such)-.1 F
+(as returning an \231I am on v)118.66 160.2 Q(acation\232 message\).)
+-.25 E 12.5(\(8\) Netw)92 176.4 R 1.552(ork traf)-.1 F 1.552(\214c should be minimized by batching addresses to a single host where possible,)
+-.25 F(without assistance from the user)118.66 188.4 Q(.)-.55 E .375
+(These goals moti)112 204.6 R -.25(va)-.25 G .375
+(ted the architecture illustrated in \214gure 1.).25 F .374
+(The user interacts with a mail gen-)5.375 F .49
+(erating and sending program.)87 216.6 R .491
+(When the mail is created, the generator calls)5.49 F F2(sendmail)2.991
+E F1 2.991(,w)C .491(hich routes the)-2.991 F .841
+(message to the correct mailer\(s\).)87 228.6 R .841
+(Since some of the senders may be netw)5.841 F .84(ork serv)-.1 F .84
+(ers and some of the)-.15 F(mailers may be netw)87 240.6 Q(ork clients,)
+-.1 E F2(sendmail)2.5 E F1(may be used as an internet mail g)2.5 E(ate)
+-.05 E -.1(wa)-.25 G -.65(y.).1 G F0 2.5(3. USA)72 264.6 R(GE)-.55 E 2.5
+(3.1. Addr)87 288.6 R(ess F)-.18 E(ormats)-.25 E F1(Ar)127 304.8 Q .886
+(guments may be \215ags or addresses.)-.18 F .886(Flags set v)5.886 F
+.886(arious processing options.)-.25 F -.15(Fo)5.886 G(llo).15 E .886
+(wing \215ag)-.25 F(ar)102 316.8 Q .611(guments, address ar)-.18 F .611
+(guments may be gi)-.18 F -.15(ve)-.25 G 3.111(n. Addresses).15 F(follo)
+3.111 E 3.111(wt)-.25 G .611(he syntax in RFC822 [Crock)-3.111 F(er82])
+-.1 E(for ARP)102 328.8 Q(ANET address formats.)-.92 E
+(In brief, the format is:)5 E 12.5(\(1\) An)107 345 R
+(ything in parentheses is thro)-.15 E(wn a)-.25 E -.1(wa)-.15 G 2.5(y\()
+.1 G(as a comment\).)-2.5 E 12.5(\(2\) An)107 361.2 R .051
+(ything in angle brack)-.15 F .051(ets \(\231<)-.1 F .051
+(>\232\) is preferred o)1.666 F -.15(ve)-.15 G 2.551(ra).15 G -.15(ny)
+-2.551 G .051(thing else.).15 F .051(This rule implements the)5.051 F
+(ARP)133.66 373.2 Q(ANET standard that addresses of the form)-.92 E .4
+LW 77 408 72 408 DL 79 408 74 408 DL 84 408 79 408 DL 89 408 84 408 DL
+94 408 89 408 DL 99 408 94 408 DL 104 408 99 408 DL 109 408 104 408 DL
+114 408 109 408 DL 119 408 114 408 DL 124 408 119 408 DL 129 408 124 408
+DL 134 408 129 408 DL 139 408 134 408 DL 144 408 139 408 DL 149 408 144
+408 DL 154 408 149 408 DL 159 408 154 408 DL 164 408 159 408 DL 169 408
+164 408 DL 174 408 169 408 DL 179 408 174 408 DL 184 408 179 408 DL 189
+408 184 408 DL 194 408 189 408 DL 199 408 194 408 DL 204 408 199 408 DL
+209 408 204 408 DL 214 408 209 408 DL 219 408 214 408 DL 224 408 219 408
+DL 229 408 224 408 DL 234 408 229 408 DL 239 408 234 408 DL 244 408 239
+408 DL 249 408 244 408 DL 254 408 249 408 DL 259 408 254 408 DL 264 408
+259 408 DL 269 408 264 408 DL 274 408 269 408 DL 279 408 274 408 DL 284
+408 279 408 DL 289 408 284 408 DL 294 408 289 408 DL 299 408 294 408 DL
+304 408 299 408 DL 309 408 304 408 DL 314 408 309 408 DL 319 408 314 408
+DL 324 408 319 408 DL 329 408 324 408 DL 334 408 329 408 DL 339 408 334
+408 DL 344 408 339 408 DL 349 408 344 408 DL 354 408 349 408 DL 359 408
+354 408 DL 364 408 359 408 DL 369 408 364 408 DL 374 408 369 408 DL 379
+408 374 408 DL 384 408 379 408 DL 389 408 384 408 DL 394 408 389 408 DL
+399 408 394 408 DL 404 408 399 408 DL 409 408 404 408 DL 414 408 409 408
+DL 419 408 414 408 DL 424 408 419 408 DL 429 408 424 408 DL 434 408 429
+408 DL 439 408 434 408 DL 444 408 439 408 DL 449 408 444 408 DL 454 408
+449 408 DL 459 408 454 408 DL 464 408 459 408 DL 469 408 464 408 DL 474
+408 469 408 DL 479 408 474 408 DL 484 408 479 408 DL 489 408 484 408 DL
+494 408 489 408 DL 499 408 494 408 DL 504 408 499 408 DL
+(Figure 1 \212 Sendmail System Structure.)208 660 Q 77 672 72 672 DL 79
+672 74 672 DL 84 672 79 672 DL 89 672 84 672 DL 94 672 89 672 DL 99 672
+94 672 DL 104 672 99 672 DL 109 672 104 672 DL 114 672 109 672 DL 119
+672 114 672 DL 124 672 119 672 DL 129 672 124 672 DL 134 672 129 672 DL
+139 672 134 672 DL 144 672 139 672 DL 149 672 144 672 DL 154 672 149 672
+DL 159 672 154 672 DL 164 672 159 672 DL 169 672 164 672 DL 174 672 169
+672 DL 179 672 174 672 DL 184 672 179 672 DL 189 672 184 672 DL 194 672
+189 672 DL 199 672 194 672 DL 204 672 199 672 DL 209 672 204 672 DL 214
+672 209 672 DL 219 672 214 672 DL 224 672 219 672 DL 229 672 224 672 DL
+234 672 229 672 DL 239 672 234 672 DL 244 672 239 672 DL 249 672 244 672
+DL 254 672 249 672 DL 259 672 254 672 DL 264 672 259 672 DL 269 672 264
+672 DL 274 672 269 672 DL 279 672 274 672 DL 284 672 279 672 DL 289 672
+284 672 DL 294 672 289 672 DL 299 672 294 672 DL 304 672 299 672 DL 309
+672 304 672 DL 314 672 309 672 DL 319 672 314 672 DL 324 672 319 672 DL
+329 672 324 672 DL 334 672 329 672 DL 339 672 334 672 DL 344 672 339 672
+DL 349 672 344 672 DL 354 672 349 672 DL 359 672 354 672 DL 364 672 359
+672 DL 369 672 364 672 DL 374 672 369 672 DL 379 672 374 672 DL 384 672
+379 672 DL 389 672 384 672 DL 394 672 389 672 DL 399 672 394 672 DL 404
+672 399 672 DL 409 672 404 672 DL 414 672 409 672 DL 419 672 414 672 DL
+424 672 419 672 DL 429 672 424 672 DL 434 672 429 672 DL 439 672 434 672
+DL 444 672 439 672 DL 449 672 444 672 DL 454 672 449 672 DL 459 672 454
+672 DL 464 672 459 672 DL 469 672 464 672 DL 474 672 469 672 DL 479 672
+474 672 DL 484 672 479 672 DL 489 672 484 672 DL 494 672 489 672 DL 499
+672 494 672 DL 504 672 499 672 DL F0 -1(Ve)72 756 S(rsion 8.2)1 E
+(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/93)98.355 E EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(5)259.93 E/F1 10/Times-Roman@0 SF(user name <machine-address>)
+173.66 96 Q(will send to the electronic \231machine-address\232 rather than the human \231user name.)
+133.66 112.2 Q<9a>-.7 E 12.5(\(3\) Double)107 128.4 R 2.246(quotes \()
+4.746 F -2.754 2.5("\) q)2.5 H 2.246
+(uote phrases; backslashes quote characters.)-2.5 F 2.246
+(Backslashes are more)7.246 F(po)133.66 140.4 Q .654(werful in that the)
+-.25 F 3.154(yw)-.15 G .655(ill cause otherwise equi)-3.154 F -.25(va)
+-.25 G .655(lent phrases to compare dif).25 F .655(ferently \212 for)
+-.25 F -.15(ex)133.66 152.4 S(ample,).15 E/F2 10/Times-Italic@0 SF(user)
+3.873 E F1(and)3.873 E F2("user")3.872 E F1 1.372(are equi)3.872 F -.25
+(va)-.25 G 1.372(lent, b).25 F(ut)-.2 E F2(\\user)3.872 E F1 1.372
+(is dif)3.872 F 1.372(ferent from either of them.)-.25 F(This)6.372 E
+(might be used to a)133.66 164.4 Q -.2(vo)-.2 G
+(id normal aliasing or duplicate suppression algorithms.).2 E -.15(Pa)
+127 180.6 S 1.12(rentheses, angle brack).15 F 1.12
+(ets, and double quotes must be properly balanced and nested.)-.1 F(The)
+6.12 E(re)102 194.6 Q(writing rules control remaining parsing)-.25 E/F3
+7/Times-Roman@0 SF(2)-4 I F1(.)4 I .644(Although old style addresses are still accepted in most cases, the preferred address format is)
+127 210.8 R .299(based on ARP)102 222.8 R(ANET)-.92 E .299
+(-style domain-based addresses [Su82a].)-.92 F .299
+(These addresses are based on a hierar)5.299 F(-)-.2 E .13
+(chical, logical decomposition of the address space.)102 234.8 R .13
+(The addresses are hierarchical in a sense similar)5.13 F 1.133(to the U.S. postal addresses: the messages may \214rst be routed to the correct state, with no initial)
+102 246.8 R .72(consideration of the city or other addressing details.)
+102 258.8 R .72(The addresses are logical in that each step in)5.72 F
+(the hierarch)102 270.8 Q 2.5(yc)-.05 G
+(orresponds to a set of \231naming authorities\232 rather than a ph)-2.5
+E(ysical netw)-.05 E(ork.)-.1 E -.15(Fo)127 287 S 2.5(re).15 G
+(xample, the address:)-2.65 E(eric@HostA.BigSite.ARP)142 303.2 Q(A)-.92
+E -.1(wo)102 319.4 S .851(uld \214rst look up the domain BigSite in the namespace administrated by ARP)
+.1 F 3.351(A. A)-.92 F .851(query could)3.351 F 1.476
+(then be sent to BigSite for interpretation of HostA.)102 331.4 R(Ev)
+6.475 E 1.475(entually the mail w)-.15 F 1.475(ould arri)-.1 F 1.775
+-.15(ve a)-.25 H 3.975(tH).15 G(ostA,)-3.975 E(which w)102 343.4 Q
+(ould then do \214nal deli)-.1 E -.15(ve)-.25 G(ry to user \231eric.).15
+E<9a>-.7 E F0 2.5(3.2. Mail)87 367.4 R(to Files and Pr)2.5 E(ograms)-.18
+E F1 .609(Files and programs are le)127 383.6 R .609
+(gitimate message recipients.)-.15 F .609(Files pro)5.609 F .609
+(vide archi)-.15 F -.25(va)-.25 G 3.109(ls).25 G .61(torage of mes-)
+-3.109 F .124(sages, useful for project administration and history)102
+395.6 R 5.124(.P)-.65 G .124(rograms are useful as recipients in a v)
+-5.124 F .124(ariety of)-.25 F .69(situations, for e)102 407.6 R .691(xample, to maintain a public repository of systems messages \(such as the Berk)
+-.15 F(ele)-.1 E(y)-.15 E F2(msgs)102 419.6 Q F1(program\).)2.5 E(An)127
+435.8 Q 3.188(ya)-.15 G .688(ddress passing through the initial parsing algorithm as a local address \(i.e, not appear)
+-3.188 F(-)-.2 E .276(ing to be a v)102 447.8 R .276
+(alid address for another mailer\) is scanned for tw)-.25 F 2.776(os)-.1
+G .277(pecial cases.)-2.776 F .277(If pre\214x)5.277 F .277(ed by a v)
+-.15 F(erti-)-.15 E .18(cal bar \(\231)102 459.8 R .833<7c9a>.833 G 2.68
+(\)t)-.833 G .179
+(he rest of the address is processed as a shell command.)-2.68 F .179
+(If the user name be)5.179 F .179(gins with a)-.15 F(slash mark \(\231/)
+102 471.8 Q
+(\232\) the name is used as a \214le name, instead of a login name.).833
+E F0 2.5(3.3. Aliasing,)87 495.8 R -.25(Fo)2.5 G(rwarding, Inclusion).25
+E F2(Sendmail)127 512 Q F1 1.074(reroutes mail three w)3.574 F 3.574
+(ays. Aliasing)-.1 F 1.075(applies system wide.)3.575 F -.15(Fo)6.075 G
+(rw).15 E 1.075(arding allo)-.1 F 1.075(ws each)-.25 F .233
+(user to reroute incoming mail destined for that account.)102 524 R .233
+(Inclusion directs)5.233 F F2(sendmail)2.733 E F1 .233
+(to read a \214le for)2.733 F 2.5(al)102 536 S
+(ist of addresses, and is normally used in conjunction with aliasing.)
+-2.5 E F0 2.5(3.3.1. Aliasing)102 560 R F1 .065(Aliasing maps local addresses to address lists using a system-wide \214le.)
+142 576.2 R .065(This \214le is hashed)5.065 F 1.546(to speed access.)
+117 588.2 R 1.545(Only addresses that parse as local are allo)6.546 F
+1.545(wed as aliases; this guarantees a)-.25 F(unique k)117 600.2 Q .3
+-.15(ey \()-.1 H(since there are no nicknames for the local host\).).15
+E F0 2.5(3.3.2. F)102 624.2 R(orwarding)-.25 E F1 .641
+(After aliasing, if an recipient address speci\214es a local user)142
+640.4 R F2(sendmail)3.141 E F1 .641(searches for a \231.for)3.141 F(-)
+-.2 E -.1(wa)117 652.4 S .413(rd\232 \214le in the recipient').1 F 2.913
+(sh)-.55 G .413(ome directory)-2.913 F 5.413(.I)-.65 G 2.913(fi)-5.413 G
+2.913(te)-2.913 G .413(xists, the message is)-3.063 F F2(not)2.913 E F1
+.412(sent to that user)2.913 F 2.912(,b)-.4 G(ut)-3.112 E .745
+(rather to the list of addresses in that \214le.)117 664.4 R .746
+(Often this list will contain only one address, and the)5.746 F
+(feature will be used for netw)117 676.4 Q(ork mail forw)-.1 E(arding.)
+-.1 E .32 LW 76 686 72 686 DL 80 686 76 686 DL 84 686 80 686 DL 88 686
+84 686 DL 92 686 88 686 DL 96 686 92 686 DL 100 686 96 686 DL 104 686
+100 686 DL 108 686 104 686 DL 112 686 108 686 DL 116 686 112 686 DL 120
+686 116 686 DL 124 686 120 686 DL 128 686 124 686 DL 132 686 128 686 DL
+136 686 132 686 DL 140 686 136 686 DL 144 686 140 686 DL 148 686 144 686
+DL 152 686 148 686 DL 156 686 152 686 DL 160 686 156 686 DL 164 686 160
+686 DL 168 686 164 686 DL 172 686 168 686 DL 176 686 172 686 DL 180 686
+176 686 DL 184 686 180 686 DL 188 686 184 686 DL 192 686 188 686 DL 196
+686 192 686 DL 200 686 196 686 DL 204 686 200 686 DL 208 686 204 686 DL
+212 686 208 686 DL 216 686 212 686 DL/F4 5/Times-Roman@0 SF(2)93.6 696.4
+Q/F5 8/Times-Roman@0 SF
+(Disclaimer: Some special processing is done after re)3.2 I
+(writing local names; see belo)-.2 E -.52(w.)-.2 G F0 -1(Ve)72 756 S
+(rsion 8.2)1 E(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/93)
+98.355 E EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(6)259.93 E/F1 10/Times-Roman@0 SF -.15(Fo)142 96 S(rw).15 E 1.152
+(arding also permits a user to specify a pri)-.1 F -.25(va)-.25 G 1.151
+(te incoming mailer).25 F 6.151(.F)-.55 G 1.151(or e)-6.301 F 1.151
+(xample, for)-.15 F(-)-.2 E -.1(wa)117 108 S(rding to:).1 E -2.5 .833
+("| /)157 124.2 T(usr/local/ne)-.833 E(wmail myname")-.25 E
+(will use a dif)117 140.4 Q(ferent incoming mailer)-.25 E(.)-.55 E F0
+2.5(3.3.3. Inclusion)102 164.4 R F1
+(Inclusion is speci\214ed in RFC 733 [Crock)142 180.6 Q(er77] syntax:)
+-.1 E(:Include: pathname)157 196.8 Q .391
+(An address of this form reads the \214le speci\214ed by)117 213 R/F2 10
+/Times-Italic@0 SF(pathname)2.891 E F1 .391
+(and sends to all users listed in that)2.891 F(\214le.)117 225 Q .645
+(The intent is)142 241.2 R F2(not)3.145 E F1 .644
+(to support direct use of this feature, b)3.145 F .644
+(ut rather to use this as a subset of)-.2 F 2.5(aliasing. F)117 253.2 R
+(or e)-.15 E(xample, an alias of the form:)-.15 E
+(project: :include:/usr/project/userlist)157 269.4 Q 1.93(is a method of letting a project maintain a mailing list without interaction with the system)
+117 285.6 R(administration, e)117 297.6 Q -.15(ve)-.25 G 2.5(ni).15 G
+2.5(ft)-2.5 G(he alias \214le is protected.)-2.5 E 2.025
+(It is not necessary to reb)142 313.8 R 2.025(uild the inde)-.2 F 4.524
+(xo)-.15 G 4.524(nt)-4.524 G 2.024
+(he alias database when a :include: list is)-4.524 F(changed.)117 325.8
+Q F0 2.5(3.4. Message)87 349.8 R(Collection)2.5 E F1 .857
+(Once all recipient addresses are parsed and v)127 366 R .857
+(eri\214ed, the message is collected.)-.15 F .857(The message)5.857 F
+.574(comes in tw)102 378 R 3.074(op)-.1 G .574
+(arts: a message header and a message body)-3.074 F 3.074(,s)-.65 G .574
+(eparated by a blank line.)-3.074 F .573(The body is)5.574 F
+(an uninterpreted sequence of te)102 390 Q(xt lines.)-.15 E
+(The header is formated as a series of lines of the form)127 406.2 Q
+(\214eld-name: \214eld-v)178 422.4 Q(alue)-.25 E(Field-v)102 438.6 Q
+1.366(alue can be split across lines by starting the follo)-.25 F 1.366
+(wing lines with a space or a tab)-.25 F 6.366(.S)-.4 G(ome)-6.366 E
+.211(header \214elds ha)102 450.6 R .511 -.15(ve s)-.2 H .211
+(pecial internal meaning, and ha).15 F .511 -.15(ve a)-.2 H .211
+(ppropriate special processing.).15 F .21(Other headers)5.21 F
+(are simply passed through.)102 462.6 Q
+(Some header \214elds may be added automatically)5 E 2.5(,s)-.65 G
+(uch as time stamps.)-2.5 E F0 2.5(4. THE)72 486.6 R(UUCP PR)2.5 E
+(OBLEM)-.3 E F1 .43(Of particular interest is the UUCP netw)112 502.8 R
+2.93(ork. The)-.1 F -.15(ex)2.93 G .43
+(plicit routing used in the UUCP en).15 F(vironment)-.4 E .909
+(causes a number of serious problems.)87 514.8 R .909(First, gi)5.909 F
+.908(ving out an address is impossible without kno)-.25 F .908(wing the)
+-.25 F .453(address of your potential correspondent.)87 526.8 R .454
+(This is typically handled by specifying the address relati)5.453 F .754
+-.15(ve t)-.25 H(o).15 E 1.208(some \231well-kno)87 538.8 R 1.208
+(wn\232 host \(e.g., ucb)-.25 F -.25(va)-.15 G 3.708(xo).25 G 3.708(rd)
+-3.708 G(ecv)-3.708 E 3.708(ax\). Second,)-.25 F 1.207(it is often dif)
+3.708 F 1.207(\214cult to compute the set of)-.25 F .157
+(addresses to reply to without some kno)87 550.8 R .157
+(wledge of the topology of the netw)-.25 F 2.657(ork. Although)-.1 F
+.157(it may be easy)2.657 F .352(for a human being to do this under man)
+87 562.8 R 2.851(yc)-.15 G .351(ircumstances, a program does not ha)
+-2.851 F .651 -.15(ve e)-.2 H .351(qually sophisticated).15 F 1.153
+(heuristics b)87 574.8 R 1.153(uilt in.)-.2 F 1.154(Third, certain addresses will become painfully and unnecessarily long, as when a)
+6.153 F .406(message is routed through man)87 586.8 R 2.906(yh)-.15 G
+.406(osts in the USENET)-2.906 F 5.406(.A)-.74 G .406(nd \214nally)
+-5.406 F 2.905(,c)-.65 G .405(ertain \231mix)-2.905 F .405
+(ed domain\232 addresses)-.15 F
+(are impossible to parse unambiguously \212 e.g.,)87 598.8 Q(decv)127
+615 Q(ax!ucb)-.25 E -.25(va)-.15 G(x!lbl-h!user@LBL-CSAM).25 E .378
+(might ha)87 631.2 R .678 -.15(ve m)-.2 H(an).15 E 2.878(yp)-.15 G .379
+(ossible resolutions, depending on whether the message w)-2.878 F .379
+(as \214rst routed to decv)-.1 F .379(ax or)-.25 F(to LBL-CSAM.)87 643.2
+Q 2.32 -.8(To s)112 659.4 T(olv).8 E 3.22(et)-.15 G .72
+(his problem, the UUCP syntax w)-3.22 F .719(ould ha)-.1 F 1.019 -.15
+(ve t)-.2 H 3.219(ob).15 G 3.219(ec)-3.219 G .719
+(hanged to use addresses rather than)-3.219 F 3.718(routes. F)87 671.4 R
+1.218(or e)-.15 F 1.218(xample, the address \231decv)-.15 F(ax!ucb)-.25
+E -.25(va)-.15 G 1.218(x!eric\232 might be e).25 F 1.218
+(xpressed as \231eric@ucb)-.15 F -.25(va)-.15 G(x.UUCP\232).25 E .079
+(\(with the hop through decv)87 683.4 R .079(ax implied\).)-.25 F .079
+(This address w)5.079 F .078
+(ould itself be a domain-based address; for e)-.1 F(xam-)-.15 E
+(ple, an address might be of the form:)87 695.4 Q(mark@d.cbosg.btl.UUCP)
+127 711.6 Q F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)130.475 E
+(an 83)-.15 E(Last Mod 11/27/93)98.355 E EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(7)259.93 E/F1 10/Times-Roman@0 SF .311(Hosts outside of Bell T)87
+96 R .311(elephone Laboratories w)-.7 F .311(ould then only need to kno)
+-.1 F 2.811(wh)-.25 G .811 -.25(ow t)-2.811 H 2.811(og).25 G .312
+(et to a designated)-2.811 F(BTL relay)87 108 Q 2.5(,a)-.65 G
+(nd the BTL topology w)-2.5 E(ould only be maintained inside Bell.)-.1 E
+.543(There are three major problems associated with turning UUCP addresses into something reason-)
+112 124.2 R .465(able: de\214ning the namespace, creating and propag)87
+136.2 R .465(ating the necessary softw)-.05 F .466(are, and b)-.1 F .466
+(uilding and main-)-.2 F(taining the database.)87 148.2 Q F0 2.5
+(4.1. De\214ning)87 172.2 R(the Namespace)2.5 E F1 1.015(Putting all UUCP hosts into a \215at namespace \(e.g., \231...@host.UUCP\232\) is not practical for a)
+127 188.4 R .222(number of reasons.)102 200.4 R .222(First, with o)5.222
+F -.15(ve)-.15 G 2.722(r1).15 G .222(600 sites already)-2.722 F 2.722
+(,a)-.65 G .222(nd \(with the increasing a)-2.722 F -.25(va)-.2 G .222
+(ilability of ine).25 F(x-)-.15 E(pensi)102 212.4 Q 1.973 -.15(ve m)-.25
+H 1.673(icrocomputers and autodialers\) se).15 F -.15(ve)-.25 G 1.672
+(ral thousand more coming within a fe).15 F 4.172(wy)-.25 G 1.672
+(ears, the)-4.172 F .078(database update problem is simply intractable if the namespace is \215at.)
+102 224.4 R .078(Second, there are almost cer)5.078 F(-)-.2 E 2.446
+(tainly name con\215icts today)102 236.4 R 7.446(.T)-.65 G 2.446
+(hird, as the number of sites gro)-7.446 F 4.946(wt)-.25 G 2.446
+(he names become e)-4.946 F -.15(ve)-.25 G 4.946(rl).15 G(ess)-4.946 E
+(mnemonic.)102 248.4 Q .534(It seems ine)127 264.6 R .535(vitable that there be some sort of naming authority for the set of top le)
+-.25 F -.15(ve)-.25 G 3.035(ln).15 G(ames)-3.035 E .157
+(in the UUCP domain, as unpleasant a possibility as that may seem.)102
+276.6 R .157(It will simply not be possible to)5.157 F(ha)102 288.6 Q
+.536 -.15(ve o)-.2 H .236(ne host resolving all names.).15 F .236
+(It may ho)5.236 F(we)-.25 E -.15(ve)-.25 G 2.736(rb).15 G 2.736(ep)
+-2.736 G .236(ossible to handle this in a f)-2.736 F .237
+(ashion similar to)-.1 F 1.582(that of assigning names of ne)102 300.6 R
+1.582(wsgroups in USENET)-.25 F 6.582(.H)-.74 G -.25(ow)-6.582 G -2.15
+-.25(ev e).25 H 2.382 -.4(r, i).25 H 4.082(tw).4 G 1.582
+(ill be essential to encourage)-4.082 F -2.15 -.25(ev e)102 312.6 T .52
+(ryone to become subdomains of an e).25 F .52(xisting domain whene)-.15
+F -.15(ve)-.25 G 3.02(rp).15 G .52(ossible \212 e)-3.02 F -.15(ve)-.25 G
+3.02(nt).15 G .52(hough this will)-3.02 F .077(certainly bruise some e)
+102 324.6 R 2.577(gos. F)-.15 F .077(or e)-.15 F .077(xample, if a ne)
+-.15 F 2.577(wh)-.25 G .076
+(ost named \231blid\232 were to be added to the UUCP)-2.577 F(netw)102
+336.6 Q .65(ork, it w)-.1 F .651(ould probably actually be addressed as \231d.bli.UUCP\232 \(i.e., as host \231d\232 in the pseudo-)
+-.1 F(domain \231bli\232 rather than as host \231blid\232 in the UUCP domain\).)
+102 348.6 Q F0 2.5(4.2. Cr)87 372.6 R(eating and Pr)-.18 E
+(opagating the Softwar)-.18 E(e)-.18 E F1 .078(The softw)127 388.8 R
+.078(are required to implement a consistent namespace is relati)-.1 F
+-.15(ve)-.25 G .077(ly tri).15 F 2.577(vial. T)-.25 F .277 -.1(wo m)-.8
+H(odules).1 E(are needed, one to handle incoming mail and one to handle outgoing mail.)
+102 400.8 Q 1.136
+(The incoming module must be prepared to handle either old or ne)127 417
+R 3.636(ws)-.25 G 1.136(tyle addresses.)-3.636 F(Ne)6.136 E(w-)-.25 E
+.025(style addresses can be passed through unchanged.)102 429 R .024
+(Old style addresses must be turned into ne)5.025 F 2.524(ws)-.25 G
+(tyle)-2.524 E(addresses where possible.)102 441 Q 2.247
+(The outgoing module is slightly trickier)127 457.2 R 7.247(.I)-.55 G
+4.747(tm)-7.247 G 2.247(ust do a database lookup on the recipient)-4.747
+F .823(addresses \(passed on the command line\) to determine what hosts to send the message to.)
+102 469.2 R .823(If those)5.823 F .023(hosts do not accept ne)102 481.2
+R .024(w-style addresses, it must transform all addresses in the header of the message)
+-.25 F(into old style using the database lookup.)102 493.2 Q 1.197
+(Both of these modules are straightforw)127 509.4 R 1.197(ard e)-.1 F
+1.197(xcept for the issue of modifying the header)-.15 F 6.197(.I)-.55 G
+(t)-6.197 E .944
+(seems prudent to choose one format for the message headers.)102 521.4 R
+-.15(Fo)5.944 G 3.444(ran).15 G .944(umber of reasons, Berk)-3.444 F
+(ele)-.1 E(y)-.15 E .824(has elected to use the ARP)102 533.4 R .824
+(ANET protocols for message formats.)-.92 F(Ho)5.823 E(we)-.25 E -.15
+(ve)-.25 G 1.623 -.4(r, t).15 H .823(his protocol is some-).4 F
+(what dif)102 545.4 Q(\214cult to parse.)-.25 E(Propag)127 561.6 Q 1.903
+(ation is some)-.05 F 1.903(what more dif)-.25 F 4.403(\214cult. There)
+-.25 F 1.903(are a lar)4.403 F 1.903(ge number of hosts connected to)
+-.18 F .812(UUCP that will w)102 573.6 R .811
+(ant to run completely standard systems \(for v)-.1 F .811
+(ery good reasons\).)-.15 F .811(The strate)5.811 F .811(gy is)-.15 F
+(not to con)102 585.6 Q -.15(ve)-.4 G(rt the entire netw).15 E
+(ork \212 only enough of it it alle)-.1 E(viate the problem.)-.25 E F0
+2.5(4.3. Building)87 609.6 R(and Maintaining the Database)2.5 E F1 .127
+(This is by f)127 625.8 R .127(ar the most dif)-.1 F .128
+(\214cult problem.)-.25 F 2.628(Ap)5.128 G .128
+(rototype for this database already e)-2.628 F .128(xists, b)-.15 F .128
+(ut it is)-.2 F(maintained by hand and does not pretend to be complete.)
+102 637.8 Q .701(This problem will be reduced considerably if people choose to group their hosts into subdo-)
+127 654 R 3.219(mains. This)102 666 R -.1(wo)3.219 G .719
+(uld require a global update only when a ne).1 F 3.22(wt)-.25 G .72
+(op le)-3.22 F -.15(ve)-.25 G 3.22(ld).15 G .72(omain joined the netw)
+-3.22 F(ork.)-.1 E 2.805(Am)102 678 S .305
+(essage to a host in a subdomain could simply be routed to a kno)-2.805
+F .304(wn domain g)-.25 F(ate)-.05 E -.1(wa)-.25 G 2.804(yf).1 G .304
+(or further)-2.804 F 3.073(processing. F)102 690 R .573(or e)-.15 F .573
+(xample, the address \231eric@a.bli.UUCP\232 might be routed to the \231bli\232 g)
+-.15 F(ate)-.05 E -.1(wa)-.25 G 3.074(yf).1 G(or)-3.074 E(redistrib)102
+702 Q 1.376(ution; ne)-.2 F 3.876(wh)-.25 G 1.375
+(osts could be added within BLI without notifying the rest of the w)
+-3.876 F 3.875(orld. Of)-.1 F(course, other hosts)102 714 Q/F2 10
+/Times-Italic@0 SF(could)2.5 E F1(be noti\214ed as an ef)2.5 E
+(\214cienc)-.25 E 2.5(ym)-.15 G(easure.)-2.5 E F0 -1(Ve)72 756 S
+(rsion 8.2)1 E(USENIX \255 J)130.475 E(an 83)-.15 E(Last Mod 11/27/93)
+98.355 E EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Mail Systems and Addr)72 60 Q(essing in 4.2bsd)
+-.18 E(8)259.93 E/F1 10/Times-Roman@0 SF .966
+(There may be more than one domain g)127 96 R(ate)-.05 E -.1(wa)-.25 G
+4.767 -.65(y. A).1 H .967(domain such as BTL, for instance, might)4.117
+F(ha)102 108 Q .653 -.15(ve a d)-.2 H .353(ozen g).15 F(ate)-.05 E -.1
+(wa)-.25 G .353(ys to the outside w).1 F .352
+(orld; a non-BTL site could choose the closest g)-.1 F(ate)-.05 E -.1
+(wa)-.25 G 4.152 -.65(y. T).1 H(he).65 E .308(only restriction w)102 120
+R .308(ould be that all g)-.1 F(ate)-.05 E -.1(wa)-.25 G .308
+(ys maintain a consistent vie).1 F 2.808(wo)-.25 G 2.808(ft)-2.808 G
+.308(he domain the)-2.808 F 2.808(yr)-.15 G(epresent.)-2.808 E F0 2.5
+(4.4. Logical)87 144 R(Structur)2.5 E(e)-.18 E F1(Logically)127 160.2 Q
+3.803(,d)-.65 G 1.303(omains are or)-3.803 F -.05(ga)-.18 G 1.303
+(nized into a tree.).05 F 1.303
+(There need not be a host actually associated)6.303 F .462(with each le)
+102 172.2 R -.15(ve)-.25 G 2.962(li).15 G 2.962(nt)-2.962 G .462
+(he tree \212 for e)-2.962 F .462
+(xample, there will be no host associated with the name \231UUCP)-.15 F
+-.7<2e9a>-1.11 G(Similarly)102 184.2 Q 3.115(,a)-.65 G 3.115(no)-3.115 G
+-2.19 -.18(rg a)-3.115 H .614
+(nization might group names together for administrati).18 F .914 -.15
+(ve r)-.25 H .614(easons; for e).15 F .614(xample, the)-.15 F(name)102
+196.2 Q(CAD.research.BigCorp.UUCP)142 212.4 Q(might not actually ha)102
+228.6 Q .3 -.15(ve a h)-.2 H(ost representing \231research.).15 E<9a>-.7
+E(Ho)127 244.8 Q(we)-.25 E -.15(ve)-.25 G 1.531 -.4(r, i).15 H 3.231(tm)
+.4 G .731(ay frequently be con)-3.231 F -.15(ve)-.4 G .731(nient to ha)
+.15 F 1.031 -.15(ve a h)-.2 H .732
+(ost or hosts that \231represent\232 a domain.).15 F -.15(Fo)102 256.8 S
+3.466(re).15 G .966(xample, if a single host e)-3.616 F .966
+(xists that represents Berk)-.15 F(ele)-.1 E 2.266 -.65(y, t)-.15 H .966
+(hen mail from outside Berk).65 F(ele)-.1 E 3.466(yc)-.15 G(an)-3.466 E
+(forw)102 268.8 Q .796
+(ard mail to that host for further resolution without kno)-.1 F .796
+(wing Berk)-.25 F(ele)-.1 E(y')-.15 E 3.296(s\()-.55 G .797(rather v)
+-3.296 F .797(olatile\) topol-)-.2 F(ogy)102 280.8 Q 5(.T)-.65 G
+(his is not unlik)-5 E 2.5(et)-.1 G(he operation of the telephone netw)
+-2.5 E(ork.)-.1 E .053(This may also be useful inside certain lar)127
+297 R .053(ge domains.)-.18 F -.15(Fo)5.053 G 2.553(re).15 G .053
+(xample, at Berk)-2.703 F(ele)-.1 E 2.553(yi)-.15 G 2.553(tm)-2.553 G
+.053(ay be pre-)-2.553 F .722(sumed that most hosts kno)102 309 R 3.222
+(wa)-.25 G .722(bout other hosts inside the Berk)-3.222 F(ele)-.1 E
+3.223(yd)-.15 G 3.223(omain. But)-3.223 F .723(if the)3.223 F 3.223(yp)
+-.15 G .723(rocess an)-3.223 F .405(address that is unkno)102 321 R .405
+(wn, the)-.25 F 2.905(yc)-.15 G .405
+(an pass it \231upstairs\232 for further e)-2.905 F 2.905
+(xamination. Thus)-.15 F .405(as ne)2.905 F 2.905(wh)-.25 G .405
+(osts are)-2.905 F .488(added only one host \(the domain master\))102
+333 R/F2 10/Times-Italic@0 SF(must)2.989 E F1 .489
+(be updated immediately; other hosts can be updated)2.989 F(as con)102
+345 Q -.15(ve)-.4 G(nient.).15 E .583
+(Ideally this name resolution process w)127 361.2 R .583
+(ould be performed by a name serv)-.1 F .582(er \(e.g., [Su82b]\) to)
+-.15 F -.2(avo)102 373.2 S .507(id unnecessary cop).2 F .507
+(ying of the message.)-.1 F(Ho)5.507 E(we)-.25 E -.15(ve)-.25 G 1.307
+-.4(r, i).15 H 3.007(nab).4 G .507(atch netw)-3.007 F .508
+(ork such as UUCP this could)-.1 F(result in unnecessary delays.)102
+385.2 Q F0 2.5(5. COMP)72 409.2 R(ARISON WITH DELIVERMAIL)-.74 E F2
+(Sendmail)112 425.4 Q F1(is an outgro)2.5 E(wth of)-.25 E F2
+(delivermail)2.5 E F1 5(.T)C(he primary dif)-5 E(ferences are:)-.25 E
+12.5(\(1\) Con\214guration)92 441.6 R .573
+(information is not compiled in.)3.073 F .572
+(This change simpli\214es man)5.572 F 3.072(yo)-.15 G 3.072(ft)-3.072 G
+.572(he problems of)-3.072 F(mo)118.66 453.6 Q(ving to other machines.)
+-.15 E(It also allo)5 E(ws easy deb)-.25 E(ugging of ne)-.2 E 2.5(wm)
+-.25 G(ailers.)-2.5 E 12.5(\(2\) Address)92 469.8 R .491
+(parsing is more \215e)2.991 F 2.991(xible. F)-.15 F .491(or e)-.15 F
+(xample,)-.15 E F2(delivermail)2.992 E F1 .492(only supported one g)
+2.992 F(ate)-.05 E -.1(wa)-.25 G 2.992(yt).1 G 2.992(oa)-2.992 G -.15
+(ny)-2.992 G(netw)118.66 481.8 Q(ork, whereas)-.1 E F2(sendmail)2.5 E F1
+(can be sensiti)2.5 E .3 -.15(ve t)-.25 H 2.5(oh).15 G
+(ost names and reroute to dif)-2.5 E(ferent g)-.25 E(ate)-.05 E -.1(wa)
+-.25 G(ys.).1 E 12.5(\(3\) F)92 498 R(orw)-.15 E 2.878(arding and :include: features eliminate the requirement that the system alias \214le be)
+-.1 F 1.073(writable by an)118.66 510 R 3.573(yu)-.15 G 1.073(ser \(or that an update program be written, or that the system administration)
+-3.573 F(mak)118.66 522 Q 2.5(ea)-.1 G(ll changes\).)-2.5 E(\(4\))92
+538.2 Q F2(Sendmail)15 E F1 .443(supports message batching across netw)
+2.944 F .443(orks when a message is being sent to multiple)-.1 F
+(recipients.)118.66 550.2 Q 12.5(\(5\) A)92 566.4 R 1.945
+(mail queue is pro)4.445 F 1.946(vided in)-.15 F F2(sendmail.)4.446 E F1
+1.946(Mail that cannot be deli)6.946 F -.15(ve)-.25 G 1.946
+(red immediately b).15 F 1.946(ut can)-.2 F .439(potentially be deli)
+118.66 578.4 R -.15(ve)-.25 G .438
+(red later is stored in this queue for a later retry).15 F 5.438(.T)-.65
+G .438(he queue also pro)-5.438 F .438(vides a)-.15 F -.2(bu)118.66
+590.4 S -.25(ff).2 G .838(er ag).25 F .839(ainst system crashes; after the message has been collected it may be reliably redeli)
+-.05 F(v-)-.25 E(ered e)118.66 602.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5
+(ft)-2.5 G(he system crashes during the initial deli)-2.5 E -.15(ve)-.25
+G(ry).15 E(.)-.65 E(\(6\))92 618.6 Q F2(Sendmail)15 E F1 1.351
+(uses the netw)3.851 F 1.351(orking support pro)-.1 F 1.351
+(vided by 4.2BSD to pro)-.15 F 1.35(vide a direct interf)-.15 F 1.35
+(ace net-)-.1 F -.1(wo)118.66 630.6 S .283(rks such as the ARP).1 F .284
+(ANET and/or Ethernet using SMTP \(the Simple Mail T)-.92 F .284
+(ransfer Protocol\))-.35 F -.15(ove)118.66 642.6 S 2.5(raT).15 G
+(CP/IP connection.)-2.5 E F0 -1(Ve)72 756 S(rsion 8.2)1 E(USENIX \255 J)
+130.475 E(an 83)-.15 E(Last Mod 11/27/93)98.355 E EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(REFERENCES)264.105 132 Q([Crock)87 148.2 Q 56.73
+(er77] Crock)-.1 F(er)-.1 E 3.535(,D)-.4 G 3.535(.H)-3.535 G 1.035(., V)
+-3.535 F 1.035(ittal, J. J., Pogran, K. T)-.6 F 1.035
+(., and Henderson, D. A. Jr)-.74 F(.,)-.55 E/F1 10/Times-Italic@0 SF
+(Stan-)3.535 E(dar)195 160.2 Q 2.627(df)-.37 G .127(or the F)-2.627 F
+.127(ormat of ARP)-1.05 F 2.627(AN)-.9 G .128(etwork T)-2.627 F -.2(ex)
+-.92 G 2.628(tM).2 G(essa)-2.628 E -.1(ge)-.1 G(s.).1 E F0 .128
+(RFC 733, NIC 41952.)5.128 F(In [Feinler78].)195 172.2 Q(No)5 E -.15(ve)
+-.15 G(mber 1977.).15 E([Crock)87 188.4 Q 56.73(er82] Crock)-.1 F(er)-.1
+E 4.272(,D)-.4 G 4.272(.H)-4.272 G(.,)-4.272 E F1(Standar)4.272 E 4.272
+(df)-.37 G 1.772(or the F)-4.272 F 1.772(ormat of Arpa Internet T)-1.05
+F -.2(ex)-.92 G 4.271(tM).2 G(essa)-4.271 E -.1(ge)-.1 G(s.).1 E F0 .025
+(RFC 822.)195 200.4 R(Netw)5.025 E .025(ork Information Center)-.1 F
+2.526(,S)-.4 G .026(RI International, Menlo P)-2.526 F .026(ark, Cali-)
+-.15 F 2.5(fornia. August)195 212.4 R(1982.)2.5 E 60.51
+([Feinler78] Feinler)87 228.6 R 2.938(,E)-.4 G .438(., and Postel, J.)
+-2.938 F(\(eds.\),)5.438 E F1(ARP)2.938 E .438(ANET Pr)-.9 F .438
+(otocol Handbook.)-.45 F F0 .438(NIC 7104,)5.438 F(Netw)195 240.6 Q
+3.011(ork Information Center)-.1 F 5.511(,S)-.4 G 3.012
+(RI International, Menlo P)-5.511 F 3.012(ark, California.)-.15 F(1978.)
+195 252.6 Q([No)87 268.8 Q 59.65(witz78] No)-.25 F .479
+(witz, D. A., and Lesk, M. E.,)-.25 F F1 2.978(AD)2.978 G .478
+(ial-Up Network of UNIX Systems.)-2.978 F F0(Bell)5.478 E 3.528
+(Laboratories. In)195 280.8 R 1.029(UNIX Programmer')3.528 F 3.529(sM)
+-.55 G 1.029(anual, Se)-3.529 F -.15(ve)-.25 G 1.029(nth Edition, V).15
+F 1.029(olume 2.)-1.29 F(August, 1978.)195 292.8 Q 55.5
+([Schmidt79] Schmidt,)87 309 R(E.,)2.631 E F1 .131(An Intr)2.631 F .131
+(oduction to the Berk)-.45 F(ele)-.1 E 2.631(yN)-.3 G(etwork.)-2.631 E
+F0(Uni)5.131 E -.15(ve)-.25 G .131(rsity of Califor).15 F(-)-.2 E
+(nia, Berk)195 321 Q(ele)-.1 E 2.5(yC)-.15 G 2.5(alifornia. 1979.)-2.5 F
+59.95([Shoens79] Shoens,)87 337.2 R(K.,)3.227 E F1 .728(Mail Refer)3.227
+F .728(ence Manual.)-.37 F F0(Uni)5.728 E -.15(ve)-.25 G .728
+(rsity of California, Berk).15 F(ele)-.1 E 4.528 -.65(y. I)-.15 H(n).65
+E 3.478(UNIX Programmer')195 349.2 R 5.977(sM)-.55 G 3.477(anual, Se)
+-5.977 F -.15(ve)-.25 G 3.477(nth Edition, V).15 F 3.477(olume 2C.)-1.29
+F(December)8.477 E(1979.)195 361.2 Q 52.72([Solomon81] Solomon,)87 377.4
+R .251(M., Landweber)2.75 F 2.751(,L)-.4 G .251(., and Neuhengen, D.,)
+-2.751 F F1 .251(The Design of the CSNET)2.751 F .397(Name Server)195
+389.4 R(.)-1.11 E F0 2.896(CS-DN-2. Uni)5.397 F -.15(ve)-.25 G .396
+(rsity of W).15 F .396(isconsin, Madison.)-.4 F .396(October 1981.)5.396
+F 73.84([Su82a] Su,)87 405.6 R(Za)2.844 E .344(w-Sing, and Postel, Jon,)
+-.15 F F1 .344(The Domain Naming Con)2.844 F .344(vention for Internet)
+-.4 F 2.71(User Applications.)195 417.6 R F0 5.21(RFC819. Netw)7.71 F
+2.71(ork Information Center)-.1 F 5.21(,S)-.4 G 2.71(RI Interna-)-5.21 F
+(tional, Menlo P)195 429.6 Q(ark, California.)-.15 E(August 1982.)5 E
+73.28([Su82b] Su,)87 445.8 R(Za)4.174 E(w-Sing,)-.15 E F1 4.174(AD)4.174
+G(istrib)-4.174 E 1.675(uted System for Internet Name Service)-.2 F(.)
+-.15 E F0(RFC830.)6.675 E(Netw)195 457.8 Q 3.012(ork Information Center)
+-.1 F 5.512(,S)-.4 G 3.011(RI International, Menlo P)-5.512 F 3.011
+(ark, California.)-.15 F(October 1982.)195 469.8 Q/F2 10/Times-Bold@0 SF
+(Mail Systems and Addr)72 756 Q(essing in 4.2bsd)-.18 E(9)259.93 E EP
+%%Trailer
+end
+%%EOF
diff --git a/usr.sbin/sendmail/mailstats/Makefile.m4 b/usr.sbin/sendmail/mailstats/Makefile.m4
new file mode 100644
index 00000000000..ae5489c62ee
--- /dev/null
+++ b/usr.sbin/sendmail/mailstats/Makefile.m4
@@ -0,0 +1,97 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.14 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of mailstats binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= mailstats.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= mailstats mailstats.${MAN8SRC}
+
+all: ${ALL}
+
+mailstats: ${BEFORE} ${OBJS}
+ ${CC} -o mailstats ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+undivert(3)
+
+mailstats.${MAN8SRC}: mailstats.8
+ ${NROFF} ${MANDOC} mailstats.8 > mailstats.${MAN8SRC}
+
+install: install-mailstats install-docs
+
+install-mailstats: mailstats
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mailstats ${BINDIR}
+
+install-docs: mailstats.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} mailstats.${MAN8SRC} ${MAN8}/mailstats.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} mailstats mailstats.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/makemap/Makefile.m4 b/usr.sbin/sendmail/makemap/Makefile.m4
new file mode 100644
index 00000000000..0f0c242d895
--- /dev/null
+++ b/usr.sbin/sendmail/makemap/Makefile.m4
@@ -0,0 +1,110 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.20 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# define the database mechanisms available for map & alias lookups:
+# -DNDBM -- use new DBM
+# -DNEWDB -- use new Berkeley DB
+# The really old (V7) DBM library is no longer supported.
+#
+MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= -DNOT_SENDMAIL ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of makemap binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${MAPDEF} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE safefile.c snprintf.c
+OBJS= makemap.o safefile.o snprintf.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= makemap makemap.${MAN8SRC}
+
+all: ${ALL}
+
+makemap: ${BEFORE} ${OBJS}
+ ${CC} -o makemap ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+safefile.c: ${SRCDIR}/safefile.c
+ -ln -s ${SRCDIR}/safefile.c safefile.c
+
+snprintf.c: ${SRCDIR}/snprintf.c
+ -ln -s ${SRCDIR}/snprintf.c snprintf.c
+
+undivert(3)
+
+makemap.${MAN8SRC}: makemap.8
+ ${NROFF} ${MANDOC} makemap.8 > makemap.${MAN8SRC}
+
+install: install-makemap install-docs
+
+install-makemap: makemap
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} makemap ${BINDIR}
+
+install-docs: makemap.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} makemap.${MAN8SRC} ${MAN8}/makemap.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} makemap makemap.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/praliases/Makefile.m4 b/usr.sbin/sendmail/praliases/Makefile.m4
new file mode 100644
index 00000000000..a4a2e61fa49
--- /dev/null
+++ b/usr.sbin/sendmail/praliases/Makefile.m4
@@ -0,0 +1,104 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.15 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# define the database mechanisms available for map & alias lookups:
+# -DNDBM -- use new DBM
+# -DNEWDB -- use new Berkeley DB
+# The really old (V7) DBM library is no longer supported.
+#
+MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of praliases binary (usually /usr/sbin or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${MAPDEF} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= praliases.o ${OBJADD}
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= praliases praliases.${MAN8SRC}
+
+all: ${ALL}
+
+praliases: ${BEFORE} ${OBJS}
+ ${CC} -o praliases ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+undivert(3)
+
+praliases.${MAN8SRC}: praliases.8
+ ${NROFF} ${MANDOC} praliases.8 > praliases.${MAN8SRC}
+
+install: install-praliases install-docs
+
+install-praliases: praliases
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} praliases ${BINDIR}
+
+install-docs: praliases.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} praliases.${MAN8SRC} ${MAN8}/praliases.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} praliases praliases.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/smrsh/Makefile.m4 b/usr.sbin/sendmail/smrsh/Makefile.m4
new file mode 100644
index 00000000000..19b2723e885
--- /dev/null
+++ b/usr.sbin/sendmail/smrsh/Makefile.m4
@@ -0,0 +1,96 @@
+#
+# This Makefile is designed to work on the old "make" program.
+#
+# @(#)Makefile.m4 8.13 (Berkeley) 6/4/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `../../src')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# include directories
+INCDIRS=-I${SRCDIR} confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of smrsh binary (usually /usr/libexec or /usr/etc)
+BINDIR= ${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= smrsh.o ${OBJADD}
+
+# Which *roff program has -mandoc support
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confUBINOWN', `confUBINOWN', `bin')
+BINGRP= ifdef(`confUBINGRP', `confUBINGRP', `bin')
+BINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= smrsh smrsh.${MAN8SRC}
+
+all: ${ALL}
+
+smrsh: ${BEFORE} ${OBJS}
+ ${CC} -o smrsh ${LDOPTS} ${OBJS} ${LIBDIRS} ${LIBS}
+
+undivert(3)
+
+smrsh.${MAN8SRC}: smrsh.8
+ ${NROFF} ${MANDOC} smrsh.8 > smrsh.${MAN8SRC}
+
+install: install-smrsh install-docs
+
+install-smrsh: smrsh
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} smrsh ${BINDIR}
+
+install-docs: smrsh.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} smrsh.${MAN8SRC} ${MAN8}/smrsh.${MAN8EXT}')
+
+clean:
+ rm -f ${OBJS} smrsh smrsh.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/src/Makefile.m4 b/usr.sbin/sendmail/src/Makefile.m4
new file mode 100644
index 00000000000..f4229c2ad6b
--- /dev/null
+++ b/usr.sbin/sendmail/src/Makefile.m4
@@ -0,0 +1,149 @@
+#
+# This Makefile is designed to work on any reasonably current version of
+# "make" program.
+#
+# @(#)Makefile.m4 8.23 (Berkeley) 6/16/98
+#
+
+# C compiler
+CC= confCC
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# location of sendmail source directory
+SRCDIR= .
+
+# define the database mechanisms available for map & alias lookups:
+# -DNDBM -- use new DBM
+# -DNEWDB -- use new Berkeley DB
+# -DNIS -- include NIS support
+# The really old (V7) DBM library is no longer supported.
+# See README for a description of how these flags interact.
+#
+MAPDEF= ifdef(`confMAPDEF', `confMAPDEF')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF')
+
+# see also conf.h for additional compilation flags
+
+# include directories
+INCDIRS=confINCDIRS
+
+# loader options
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# libraries required on your system
+# delete -l44bsd if you are not running BIND 4.9.x
+LIBS= ifdef(`confLIBS', `confLIBS')
+
+# location of sendmail binary (usually /usr/sbin or /usr/lib)
+BINDIR= ${DESTDIR}ifdef(`confMBINDIR', `confMBINDIR', `/usr/sbin')
+
+# location of "user" binaries (usually /usr/bin or /usr/ucb)
+UBINDIR=${DESTDIR}ifdef(`confUBINDIR', `confUBINDIR', `/usr/bin')
+
+# location of sendmail.st file (usually /var/log or /usr/lib)
+STDIR= ${DESTDIR}ifdef(`confSTDIR', `confSTDIR', `/var/log')
+
+# location of sendmail.hf file (usually /usr/share/misc or /usr/lib)
+HFDIR= ${DESTDIR}ifdef(`confHFDIR', `confHFDIR', `/usr/share/misc')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD') ifdef(`confSMOBJADD', `confSMOBJADD')
+
+undivert(1)
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${MAPDEF} ${ENVDEF}
+CFLAGS= $O ${COPTS}
+
+BEFORE= confBEFORE
+OBJS= alias.o arpadate.o clock.o collect.o conf.o convtime.o daemon.o \
+ deliver.o domain.o envelope.o err.o headers.o macro.o main.o \
+ map.o mci.o mime.o parseaddr.o queue.o readcf.o recipient.o \
+ safefile.o savemail.o snprintf.o srvrsmtp.o stab.o stats.o \
+ sysexits.o trace.o udb.o usersmtp.o util.o version.o ${OBJADD}
+
+LINKS= ifdef(`confLINKS', `confLINKS',
+ `${UBINDIR}/newaliases \
+ ${UBINDIR}/mailq \
+ ${UBINDIR}/hoststat \
+ ${UBINDIR}/purgestat')
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-mandoc')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+BINOWN= ifdef(`confSBINOWN', `confSBINOWN', `root')
+BINGRP= ifdef(`confSBINGRP', `confSBINGRP', `kmem')
+BINMODE=ifdef(`confSBINMODE', `confSBINMODE', `4555')
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+
+MANROOT=${DESTDIR}ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MAN1= ${MANROOT}ifdef(`confMAN1', `confMAN1', `1')
+MAN1EXT=ifdef(`confMAN1EXT', `confMAN1EXT', `1')
+MAN1SRC=ifdef(`confMAN1SRC', `confMAN1SRC', `0')
+MAN5= ${MANROOT}ifdef(`confMAN5', `confMAN5', `5')
+MAN5EXT=ifdef(`confMAN5EXT', `confMAN5EXT', `5')
+MAN5SRC=ifdef(`confMAN5SRC', `confMAN5SRC', `0')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+ALL= sendmail aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+
+all: ${ALL}
+
+sendmail: ${BEFORE} ${OBJS}
+ ${CC} -o sendmail ${LDOPTS} ${LIBDIRS} ${OBJS} ${LIBS}
+ cp /dev/null sendmail.st
+
+undivert(3)
+
+aliases.${MAN5SRC}: aliases.5
+ ${NROFF} ${MANDOC} aliases.5 > aliases.${MAN5SRC}
+
+mailq.${MAN1SRC}: mailq.1
+ ${NROFF} ${MANDOC} mailq.1 > mailq.${MAN1SRC}
+
+newaliases.${MAN1SRC}: newaliases.1
+ ${NROFF} ${MANDOC} newaliases.1 > newaliases.${MAN1SRC}
+
+sendmail.${MAN8SRC}: sendmail.8
+ ${NROFF} ${MANDOC} sendmail.8 > sendmail.${MAN8SRC}
+
+install: install-sendmail install-docs
+
+install-sendmail: sendmail
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} sendmail ${BINDIR}
+ for i in ${LINKS}; do rm -f $$i; ln -s ${BINDIR}/sendmail $$i; done
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 sendmail.hf ${HFDIR}
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 sendmail.st \
+ ${STDIR}/sendmail.st
+
+install-docs: aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+ifdef(`confNO_MAN_INSTALL', `dnl',
+` ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} sendmail.${MAN8SRC} ${MAN8}/sendmail.${MAN8EXT}
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} aliases.${MAN5SRC} ${MAN5}/aliases.${MAN5EXT}
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} mailq.${MAN1SRC} ${MAN1}/mailq.${MAN1EXT}
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} newaliases.${MAN1SRC} ${MAN1}/newaliases.${MAN1EXT}')
+
+clean:
+ rm -f ${OBJS} sendmail aliases.${MAN5SRC} mailq.${MAN1SRC} newaliases.${MAN1SRC} sendmail.${MAN8SRC}
+
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE', `generic').m4)dnl
+################ End of dependency scripts
diff --git a/usr.sbin/sendmail/src/README b/usr.sbin/sendmail/src/README
new file mode 100644
index 00000000000..a6f7dcfd664
--- /dev/null
+++ b/usr.sbin/sendmail/src/README
@@ -0,0 +1,1442 @@
+# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# @(#)README 8.206 (Berkeley) 6/30/98
+#
+
+This directory contains the source files for sendmail(TM).
+
+*********************
+!! DO NOT USE MAKE !! in this directory to compile sendmail --
+********************* instead, use the "Build" script located in
+the src directory. It will build an appropriate Makefile, and
+create an appropriate obj.* subdirectory so that multiplatform
+support works easily.
+
+ **********************************************************
+ ** Read below for more details on building sendmail. **
+ **********************************************************
+
+**************************************************************************
+** IMPORTANT: Read the appropriate paragraphs in the section on **
+** ``Operating System and Compile Quirks''. **
+**************************************************************************
+
+For detailed instructions, please read the document ../doc/op/op.me:
+
+ eqn ../doc/op/op.me | pic | ditroff -me
+
+Sendmail is a trademark of Sendmail, Inc.
+
+
++-------------------+
+| BUILDING SENDMAIL |
++-------------------+
+
+By far, the easiest way to compile sendmail is to use the "Build"
+script:
+
+ sh Build
+
+This uses the "uname" command to figure out what architecture you are
+on and creates a proper Makefile accordingly. It also creates a
+subdirectory per object format, so that multiarchitecture support is
+easy. In general this should be all you need. IRIX 6.x users should
+read the note below in the OPERATING SYSTEM AND COMPILE QUIRKS section.
+
+If you need to look at other include or library directories, use the
+-I or -L flags on the command line, e.g.,
+
+ sh Build -I/usr/sww/include -L/usr/sww/lib
+
+It's also possible to create local site configuration in the file
+site.config.m4 (or another file settable with the -f flag). This
+file contains M4 definitions for various compilation values; the
+most useful are:
+
+confMAPDEF -D flags to specify database types to be included
+ (see below)
+confENVDEF -D flags to specify other environment information
+confINCDIRS -I flags for finding include files during compilation
+confLIBDIRS -L flags for finding libraries during linking
+confLIBS -l flags for selecting libraries during linking
+confLDOPTS other ld(1) linker options
+
+Others can be found by examining Makefile.m4. Please read
+../BuildTools/README for more information about the site.config.m4
+file.
+
+You can recompile from scratch using the -c flag with the Build
+command. This removes the existing compilation directory for the
+current platform and builds a new one.
+
+Porting to a new Unix-based system should be a matter of creating
+an appropriate configuration file in the BuildTools/OS/ directory.
+
+
+
++----------------------+
+| 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 backward compatible.
+
+The options are:
+
+NEWDB The new Berkeley DB package. Some systems (e.g., BSD/OS and
+ Digital UNIX 4.0) have some version of this package
+ pre-installed. If your system does not have Berkeley DB
+ pre-installed, or the version installed is not version 2.0
+ or greater (e.g., is Berkeley DB 1.85 or 1.86), get the
+ current version from http://www.sleepycat.com/. DO NOT
+ use a version from any of the University of California,
+ Berkeley "Net" or other distributions. If you are still
+ running BSD/386 1.x, you will need to upgrade the included
+ Berkeley DB library to a current version. NEWDB is included
+ automatically if the Build script can find a library named
+ libdb.a.
+NDBM The older NDBM implementation -- the very old V7 DBM
+ implementation is no longer supported.
+NIS Network Information Services. To use this you must have
+ NIS support on your system.
+NISPLUS NIS+ (the revised NIS released with Solaris 2). You must
+ have NIS+ support on your system to use this flag.
+HESIOD Support for Hesiod (from the DEC/Athena distribution). You
+ must already have Hesiod support on your system for this to
+ work. You may be able to get this to work with the MIT/Athena
+ version of Hesiod, but that's likely to be a lot of work.
+LDAPMAP Lightweight Directory Lookup Protocol support. You will
+ have to install the UMich ldap and lber libraries to use
+ this flag.
+MAP_REGEX Regular Expression support. You will need to use an
+ operating system which comes with the POSIX regex()
+ routines or install a regexp library such as libregex from
+ the Free Software Foundation.
+
+>>> NOTE WELL for NEWDB support: If you want to get ndbm support, for
+>>> Berkeley DB versions under 2.0, it is CRITICAL that you remove
+>>> ndbm.o from libdb.a before you install it and DO NOT install ndbm.h;
+>>> for Berkeley DB versions 2.0 through 2.3.14, remove dbm.o from libdb.a
+>>> before you install it. If you don't delete these, there is absolutely
+>>> no point to including -DNDBM, since it will just get you another
+>>> (inferior) API to the same format database. These files OVERRIDE
+>>> calls to ndbm routines -- in particular, if you leave ndbm.h in,
+>>> you can find yourself using the new db package even if you don't
+>>> define NEWDB. Berkeley DB versions later than 2.3.14 do not need
+>>> to be modified. Please also consult the README in the top level
+>>> directory of the sendmail distribution for other important information.
+>>>
+>>> Further note: DO NOT remove your existing /usr/include/ndbm.h --
+>>> you need that one. But do not install an updated ndbm.h in
+>>> /usr/include, /usr/local/include, or anywhere else.
+
+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.
+
+If NEWDB, NDBM, and NIS are all defined and the name of the file includes
+the string "/yp/", sendmail will rebuild BOTH the NEWDB and NDBM format
+alias files. However, it will only read the NEWDB file; the NDBM format
+file is used only by the NIS subsystem. This is needed because the NIS
+maps on an NIS server are built directly from the NDBM files.
+
+If NDBM and NIS are defined (regardless of the definition of NEWDB),
+and the filename includes the string "/yp/", 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 these flags are normally defined in the DBMDEF line in the
+Makefile.
+
+If you define NEWDB or HESIOD you get the User Database (USERDB)
+automatically. Generally you do want to have NEWDB for it to do
+anything interesting. See above for getting the Berkeley DB
+package (i.e., NEWDB). There is no separate "user database"
+package -- don't bother searching for it on the net.
+
+Hesiod and LDAP require libraries that may not be installed with your
+system. These are outside of my ability to provide support. See the
+"Quirks" section for more information.
+
+The regex map can be used to see if an address matches a certain regular
+expression. For example, all-numerics local parts are common spam
+addresses, so "^[0-9]+$" would match this. By using such a map in a
+check_* rule-set, you can block a certain range of addresses that would
+otherwise be considered valid.
+
++---------------+
+| COMPILE FLAGS |
++---------------+
+
+Wherever possible, I try to make sendmail pull in the correct
+compilation options needed to compile on various environments based on
+automatically defined symbols. Some machines don't seem to have useful
+symbols available, requiring that a compilation flag be defined in
+the Makefile; see the Buildtools/OS subdirectory for the supported
+architectures.
+
+If you are a system to which sendmail has already been ported you
+should not have to touch the following symbols. But if you are porting,
+you may have to tweak the following compilation flags in conf.h in order
+to get it to compile and link properly:
+
+SYSTEM5 Adjust for System V (not necessarily Release 4).
+SYS5SIGNALS Use System V signal semantics -- the signal handler
+ is automatically dropped when the signal is caught.
+ If this is not set, use POSIX/BSD semantics, where the
+ signal handler stays in force until an exec or an
+ explicit delete. Implied by SYSTEM5.
+SYS5SETPGRP Use System V setpgrp() semantics. Implied by SYSTEM5.
+HASFCHMOD Define this to one if you have the fchmod(2) system call.
+ This improves security.
+HASFLOCK Set this if you prefer to use the flock(2) system call
+ rather than using fcntl-based locking. Fcntl locking
+ has some semantic gotchas, but many vendor systems
+ also interface it to lockd(8) to do NFS-style locking.
+ Unfortunately, may vendors implementations of fcntl locking
+ is just plain broken (e.g., locks are never released,
+ causing your sendmail to deadlock; when the kernel runs
+ out of locks your system crashes). For this reason, I
+ recommend always defining this unless you are absolutely
+ certain that your fcntl locking implementation really works.
+HASUNAME Set if you have the "uname" system call. Implied by
+ SYSTEM5.
+HASUNSETENV Define this if your system library has the "unsetenv"
+ subroutine.
+HASSETSID Define this if you have the setsid(2) system call. This
+ is implied if your system appears to be POSIX compliant.
+HASINITGROUPS Define this if you have the initgroups(3) routine.
+HASSETVBUF Define this if you have the setvbuf(3) library call.
+ If you don't, setlinebuf will be used instead. This
+ defaults on if your compiler defines __STDC__.
+HASSETREUID Define this if you have setreuid(2) ***AND*** root can
+ use setreuid to change to an arbitrary user. This second
+ condition is not satisfied on AIX 3.x. You may find that
+ your system has setresuid(2), (for example, on HP-UX) in
+ which case you will also have to #define setreuid(r, e)
+ to be the appropriate call. Some systems (such as Solaris)
+ have a compatibility routine that doesn't work properly,
+ but may have "saved user ids" properly implemented so you
+ can ``#define setreuid(r, e) seteuid(e)'' and have it work.
+ The important thing is that you have a call that will set
+ the effective uid independently of the real or saved uid
+ and be able to set the effective uid back again when done.
+ There's a test program in ../test/t_setreuid.c that will
+ try things on your system. Setting this improves the
+ security, since sendmail doesn't have to read .forward
+ and :include: files as root. There are certain attacks
+ that may be unpreventable without this call.
+USESETEUID Define this to 1 if you have a seteuid(2) system call that
+ will allow root to set only the effective user id to an
+ arbitrary value ***AND*** you have saved user ids. This is
+ preferable to HASSETREUID if these conditions are fulfilled.
+ These are the semantics of the to-be-released revision of
+ Posix.1. The test program ../test/t_seteuid.c will try
+ this out on your system. If you define both HASSETREUID
+ and USESETEUID, the former is ignored.
+HASLSTAT Define this if you have symbolic links (and thus the
+ lstat(2) system call). This improves security. Unlike
+ most other options, this one is on by default, so you
+ need to #undef it in conf.h if you don't have symbolic
+ links (these days everyone does).
+HASSETRLIMIT Define this to 1 if you have the setrlimit(2) syscall.
+ You can define it to 0 to force it off. It is assumed
+ if you are running a BSD-like system.
+HASULIMIT Define this if you have the ulimit(2) syscall (System V
+ style systems). HASSETRLIMIT overrides, as it is more
+ general.
+HASWAITPID Define this if you have the waitpid(2) syscall.
+HASGETDTABLESIZE
+ Define this if you have the getdtablesize(2) syscall.
+HAS_ST_GEN Define this to 1 if your system has the st_gen field in
+ the stat structure (see stat(2)).
+USESTRERROR Define this if you have the libc strerror function (which
+ should be declared in <errno.h>), and it should be used
+ instead of sys_errlist.
+NEEDGETOPT Define this if you need a reimplementation of getopt(3).
+ On some systems, getopt does very odd things if called
+ to scan the arguments twice. This flag will ask sendmail
+ to compile in a local version of getopt that works
+ properly.
+NEEDSTRTOL Define this if your standard C library does not define
+ strtol(3). This will compile in a local version.
+NEEDVPRINTF Define this if your standard C library does not define
+ vprintf(3). Note that the resulting fake implementation
+ is not very elegant and may not even work on some
+ architectures.
+NEEDFSYNC Define this if your standard C library does not define
+ fsync(2). This will try to simulate the operation using
+ fcntl(2); if that is not available it does nothing, which
+ isn't great, but at least it compiles and runs.
+HASGETUSERSHELL Define this to 1 if you have getusershell(3) in your
+ standard C library. If this is not defined, or is defined
+ to be 0, sendmail will scan the /etc/shells file (no
+ NIS-style support, defaults to /bin/sh and /bin/csh if
+ that file does not exist) to get a list of unrestricted
+ user shells. This is used to determine whether users
+ are allowed to forward their mail to a program or a file.
+NEEDPUTENV Define this if your system needs am emulation of the
+ putenv(3) call. Define to 1 to implement it in terms
+ of setenv(3) or to 2 to do it in terms of primitives.
+NOFTRUNCATE Define this if you don't have the ftruncate(2) syscall.
+ If you don't have this system call, there is an unavoidable
+ race condition that occurs when creating alias databases.
+GIDSET_T The type of entries in a gidset passed as the second
+ argument to getgroups(2). Historically this has been an
+ int, so this is the default, but some systems (such as
+ IRIX) pass it as a gid_t, which is an unsigned short.
+ This will make a difference, so it is important to get
+ this right! However, it is only an issue if you have
+ group sets.
+SLEEP_T The type returned by the system sleep() function.
+ Defaults to "unsigned int". Don't worry about this
+ if you don't have compilation problems.
+ARBPTR_T The type of an arbitrary pointer -- defaults to "void *".
+ If you are an very old compiler you may need to define
+ this to be "char *".
+SOCKADDR_LEN_T The type used for the third parameter to accept(2),
+ getsockname(2), and getpeername(2), representing the
+ length of a struct sockaddr. Defaults to int.
+SOCKOPT_LEN_T The type used for the fifth parameter to getsockopt(2)
+ and setsockopt(2), representing the length of the option
+ buffer. Defaults to int.
+LA_TYPE The type of load average your kernel supports. These
+ can be one of:
+ LA_ZERO (1) -- it always returns the load average as
+ "zero" (and does so on all architectures).
+ LA_INT (2) to read /dev/kmem for the symbol avenrun and
+ interpret as a long integer.
+ LA_FLOAT (3) same, but interpret the result as a floating
+ point number.
+ LA_SHORT (6) to interpret as a short integer.
+ LA_SUBR (4) if you have the getloadavg(3) routine in your
+ system library.
+ LA_MACH (5) to use MACH-style load averages (calls
+ processor_set_info()),
+ LA_PROCSTR (7) to read /proc/loadavg and interpret it
+ as a string representing a floating-point
+ number (Linux-style).
+ LA_READKSYM (8) is an implementation suitable for some
+ versions of SVr4 that uses the MIOC_READKSYM ioctl
+ call to read /dev/kmem.
+ LA_DGUX (9) is a special implementation for DG/UX that uses
+ the dg_sys_info system call.
+ LA_HPUX (10) is an HP-UX specific version that uses the
+ pstat_getdynamic system call.
+ LA_IRIX6 (11) is an IRIX 6.x specific version that adapts
+ to 32 or 64 bit kernels; it is otherwise very similar
+ to LA_INT.
+ LA_KSTAT (12) uses the (Solaris-specific) kstat(3k)
+ implementation.
+ LA_DEVSHORT (13) reads a short from a system file (default:
+ /dev/table/avenrun) and scales it in the same manner
+ as LA_SHORT.
+ LA_INT, LA_SHORT, LA_FLOAT, and LA_READKSYM have several
+ other parameters that they try to divine: the name of your
+ kernel, the name of the variable in the kernel to examine,
+ the number of bits of precision in a fixed point load average,
+ and so forth. LA_DEVSHORT uses _PATH_AVENRUN to find the
+ device to be read to find the load average.
+ In desperation, use LA_ZERO. The actual code is in
+ conf.c -- it can be tweaked if you are brave.
+FSHIFT For LA_INT, LA_SHORT, and LA_READKSYM, this is the number
+ of bits of load average after the binary point -- i.e.,
+ the number of bits to shift right in order to scale the
+ integer to get the true integer load average. Defaults to 8.
+_PATH_UNIX The path to your kernel. Needed only for LA_INT, LA_SHORT,
+ and LA_FLOAT. Defaults to "/unix" on System V, "/vmunix"
+ everywhere else.
+LA_AVENRUN For LA_INT, LA_SHORT, and LA_FLOAT, the name of the kernel
+ variable that holds the load average. Defaults to "avenrun"
+ on System V, "_avenrun" everywhere else.
+SFS_TYPE Encodes how your kernel can locate the amount of free
+ space on a disk partition. This can be set to SFS_NONE
+ (0) if you have no way of getting this information,
+ SFS_USTAT (1) if you have the ustat(2) system call,
+ SFS_4ARGS (2) if you have a four-argument statfs(2)
+ system call (and the include file is <sys/statfs.h>),
+ SFS_VFS (3), SFS_MOUNT (4), SFS_STATFS (5) if you have
+ the two-argument statfs(2) system call with includes in
+ <sys/vfs.h>, <sys/mount.h>, or <sys/statfs.h> respectively,
+ or SFS_STATVFS (6) if you have the two-argument statvfs(2)
+ call. The default if nothing is defined is SFS_NONE.
+SFS_BAVAIL with SFS_4ARGS you can also set SFS_BAVAIL to the field name
+ in the statfs structure that holds the useful information;
+ this defaults to f_bavail.
+SPT_TYPE Encodes how your system can display what a process is doing
+ on a ps(1) command (SPT stands for Set Process Title). Can
+ be set to:
+ SPT_NONE (0) -- Don't try to set the process title at all.
+ SPT_REUSEARGV (1) -- Pad out your argv with the information;
+ this is the default if none specified.
+ SPT_BUILTIN (2) -- The system library has setproctitle.
+ SPT_PSTAT (3) -- Use the PSTAT_SETCMD option to pstat(2)
+ to set the process title; this is used by HP-UX.
+ SPT_PSSTRINGS (4) -- Use the magic PS_STRINGS pointer (4.4BSD).
+ SPT_SYSMIPS (5) -- Use sysmips() supported by NEWS-OS 6.
+ SPT_SCO (6) -- Write kernel u. area.
+ SPT_CHANGEARGV (7) -- Write pointers to our own strings into
+ the existing argv vector.
+SPT_PADCHAR Character used to pad the process title; if undefined,
+ the space character (0x20) is used. This is ignored if
+ SPT_TYPE != SPT_REUSEARGV
+ERRLIST_PREDEFINED
+ If set, assumes that some header file defines sys_errlist.
+ This may be needed if you get type conflicts on this
+ variable -- otherwise don't worry about it.
+WAITUNION The wait(2) routine takes a "union wait" argument instead
+ of an integer argument. This is for compatibility with
+ old versions of BSD.
+SCANF You can set this to extend the F command to accept a
+ scanf string -- this gives you a primitive parser for
+ class definitions -- BUT it can make you vulnerable to
+ core dumps if the target file is poorly formed.
+SYSLOG_BUFSIZE You can define this to be the size of the buffer that
+ syslog accepts. If it is not defined, it assumes a
+ 1024-byte buffer. If the buffer is very small (under
+ 256 bytes) the log message format changes -- each
+ e-mail message will log many more messages, since it
+ will log each piece of information as a separate line
+ in syslog.
+BROKEN_RES_SEARCH
+ On Ultrix (and maybe other systems?) if you use the
+ res_search routine with an unknown host name, it returns
+ -1 but sets h_errno to 0 instead of HOST_NOT_FOUND. If
+ you set this, sendmail considers 0 to be the same as
+ HOST_NOT_FOUND.
+NAMELISTMASK If defined, values returned by nlist(3) are masked
+ against this value before use -- a common value is
+ 0x7fffffff to strip off the top bit.
+BSD4_4_SOCKADDR If defined, socket addresses have an sa_len field that
+ defines the length of this address.
+SAFENFSPATHCONF Set this to 1 if and only if you have verified that a
+ pathconf(2) call with _PC_CHOWN_RESTRICTED argument on an
+ NFS filesystem where the underlying system allows users to
+ give away files to other users returns <= 0. Be sure you
+ try both on NFS V2 and V3. Some systems assume that their
+ local policy apply to NFS servers -- this is a bad
+ assumption! The test/t_pathconf.c program will try this
+ for you -- you have to run it in a directory that is
+ mounted from a server that allows file giveaway.
+SIOCGIFCONF_IS_BROKEN
+ Set this if your system has an SIOCGIFCONF ioctl defined,
+ but it doesn't behave the same way as "most" systems (BSD,
+ Solaris, SunOS, HP-UX, etc.)
+SIOCGIFNUM_IS_BROKEN
+ Set this if your system has an SIOCGIFNUM ioctl defined,
+ but it doesn't behave the same way as "most" systems
+ (Solaris, HP-UX).
+NEED_PERCENTQ Set this if your system doesn't support the printf
+ format strings %lld or %llu. If this is set, %qd and
+ %qu are used instead.
+
+
+
++-----------------------+
+| COMPILE-TIME FEATURES |
++-----------------------+
+
+There are a bunch of features that you can decide to compile in, such
+as selecting various database packages and special protocol support.
+Several are assumed based on other compilation flags -- if you want to
+"un-assume" something, you probably need to edit conf.h. Compilation
+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)
+ for aliases and maps. Normally defined in the Makefile.
+ If the version of NEWDB you have is the old one that does
+ not include the "fd" call (this call was added in version
+ 1.5 of the Berkeley DB code), you must upgrade to the
+ current version of Berkeley DB.
+NIS Define this to get NIS (YP) support for aliases and maps.
+ Normally defined in the Makefile.
+NISPLUS Define this to get NIS+ support for aliases and maps.
+ Normally defined in the Makefile.
+HESIOD Define this to get Hesiod support for aliases and maps.
+ Normally defined in the Makefile.
+NETINFO Define this to get NeXT NetInfo support for aliases and maps.
+ Normally defined in the Makefile.
+USERDB Define this to 1 to include support for the User Information
+ Database. Implied by NEWDB or HESIOD. You can use
+ -DUSERDB=0 to explicitly turn it off.
+IDENTPROTO Define this as 1 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. You can define it to be 0 to explicitly
+ turn off IDENT protocol support. If defined off, the code
+ is actually still compiled in, but it defaults off; you
+ can turn it on by setting the IDENT timeout to 30s in the
+ configuration file.
+IP_SRCROUTE Define this to 1 to get IP source routing information
+ displayed in the Received: header. This is assumed on
+ most systems, but some (e.g., Ultrix) apparently have a
+ broken version of getsockopt that doesn't properly
+ support the IP_OPTIONS call. You probably want this if
+ your OS can cope with it. Symptoms of failure will be that
+ it won't compile properly (that is, no support for fetching
+ IP_OPTIONs), or it compiles but source-routed TCP connections
+ either refuse to open or open and hang for no apparent reason.
+ Ultrix and AIX3 are known to fail this way.
+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
+ in conf.h. You probably want this.
+NETISO Define this to get ISO networking support.
+NETUNIX Define this to get Unix domain networking support. Defined
+ by default. A few bizarre systems (SCO, ISC, Altos) don't
+ support this networking domain.
+SMTP Define this to get the SMTP code. Implied by NETINET
+ or NETISO.
+NAMED_BIND If non-zero, include DNS (name daemon) support, including
+ MX support. The specs say you must use this if you run
+ SMTP. You don't have to be running a name server daemon
+ on your machine to need this -- any use of the DNS resolver,
+ including remote access to another machine, requires this
+ option. Defined by default in conf.h. Define it to zero
+ ONLY on machines that do not use DNS in any way.
+QUEUE Define this to get queueing code. Implied by NETINET
+ or NETISO; required by SMTP. This gives you other good
+ stuff -- it should be on.
+DAEMON Define this to get general network support. Implied by
+ NETINET or NETISO. Defined by default in conf.h. You
+ almost certainly want it on.
+MATCHGECOS Permit fuzzy matching of user names against the full
+ name (GECOS) field in the /etc/passwd file. This should
+ probably be on, since you can disable it from the config
+ file if you want to. Defined by default in conf.h.
+MIME8TO7 If non-zero, include 8 to 7 bit MIME conversions. This
+ also controls advertisement of 8BITMIME in the ESMTP
+ startup dialogue.
+MIME7TO8 If non-zero, include 7 to 8 bit MIME conversions.
+HES_GETMAILHOST Define this to 1 if you are using Hesiod with the
+ hes_getmailhost() routine. This is included with the MIT
+ Hesiod distribution, but not with the DEC Hesiod distribution.
+XDEBUG Do additional internal checking. These don't cost too
+ much; you might as well leave this on.
+TCPWRAPPERS Turns on support for the TCP wrappers library (-lwrap).
+ See below for further information.
+SECUREWARE Enable calls to the SecureWare luid enabling/changing routines.
+ SecureWare is a C2 security package added to several UNIX's
+ (notably ConvexOS) to get a C2 Secure system. This
+ option causes mail delivery to be done with the luid of the
+ recipient.
+SHARE_V1 Support for the fair share scheduler, version 1. Setting to
+ 1 causes final delivery to be done using the recipients
+ resource limitations. So far as I know, this is only
+ supported on ConvexOS.
+
+
++---------------------+
+| DNS/RESOLVER ISSUES |
++---------------------+
+
+Many systems have old versions of the resolver library. At a minimum,
+you should be running BIND 4.8.3; older versions may compile, but they
+have known bugs that should give you pause.
+
+Common problems in old versions include "undefined" errors for
+dn_skipname.
+
+Some people have had a problem with BIND 4.9; it uses some routines
+that it expects to be externally defined such as strerror(). It may
+help to link with "-l44bsd" to solve this problem. This has apparently
+been fixed in later versions of BIND, starting around 4.9.3. In other
+words, if you use 4.9.0 through 4.9.2, you need -l44bsd; for earlier or
+later versions, you do not.
+
+!PLEASE! be sure to link with the same version of the resolver as
+the header files you used -- some people have used the 4.9 headers
+and linked with BIND 4.8 or vice versa, and it doesn't work.
+Unfortunately, it doesn't fail in an obvious way -- things just
+subtly don't work.
+
+WILDCARD MX RECORDS ARE A BAD IDEA! The only situation in which they
+work reliably is if you have two versions of DNS, one in the real world
+which has a wildcard pointing to your firewall, and a completely
+different version of the database internally that does not include
+wildcard MX records that match your domain. ANYTHING ELSE WILL GIVE
+YOU HEADACHES!
+
+
++-------------------------------------+
+| OPERATING SYSTEM AND COMPILE QUIRKS |
++-------------------------------------+
+
+GCC problems
+ *****************************************************************
+ ** IMPORTANT: DO NOT USE OPTIMIZATION (``-O'') IF YOU ARE **
+ ** RUNNING GCC 2.4.x or 2.5.x. THERE IS A BUG IN THE GCC **
+ ** OPTIMIZER THAT CAUSES SENDMAIL COMPILES TO FAIL MISERABLY. **
+ *****************************************************************
+
+ Jim Wilson of Cygnus believes he has found the problem -- it will
+ probably be fixed in GCC 2.5.6 -- but until this is verified, be
+ very suspicious of gcc -O. This problem is reported to have been
+ fixed in gcc 2.6.
+
+ A bug in gcc 2.5.5 caused problems compiling sendmail 8.6.5 with
+ optimization on a Sparc. If you are using gcc 2.5.5, youi should
+ upgrade to the latest version of gcc.
+
+ Apparently GCC 2.7.0 on the Pentium processor has optimization
+ problems. I recommend against using -O on that architecture. This
+ has been seen on FreeBSD 2.0.5 RELEASE.
+
+ Solaris 2.X users should use version 2.7.2.3 over 2.7.2.
+
+ We have been told there are problems with gcc 2.8.0. If you are
+ using this version, you should upgrade to 2.8.1 or later.
+
+GDBM GDBM does not work with sendmail 8.8 because the additional
+ security checks and file locking cause problems. Unfortunately,
+ gdbm does not provide a compile flag in its version of ndbm.h so
+ the code can adapt. Until the GDBM authors can fix these problems,
+ GDBM will not be supported. Please use Berkeley DB instead.
+
+Configuration file location
+ Up to 8.6, sendmail tried to find the sendmail.cf file in the same
+ place as the vendors had put it, even when this was obviously
+ stupid. As of 8.7, sendmail ALWAYS looks for /etc/sendmail.cf.
+ Beginning with 8.10, sendmail will use /etc/mail/sendmail.cf.
+ You can get sendmail to use the stupid vendor .cf location by
+ adding -DUSE_VENDOR_CF_PATH during compilation, but this may break
+ support programs and scripts that need to find sendmail.cf. You
+ are STRONGLY urged to use symbolic links if you want to use the
+ vendor location rather than changing the location in the sendmail
+ binary.
+
+SunOS 4.x (Solaris 1.x)
+ You may have to use -lresolv on SunOS. However, beware that
+ this links in a new version of gethostbyname that does not
+ understand NIS, so you must have all of your hosts in DNS.
+
+ Some people have reported problems with the SunOS version of
+ -lresolv and/or in.named, and suggest that you get a newer
+ version. The symptoms are delays when you connect to the
+ SMTP server on a SunOS machine or having your domain added to
+ addresses inappropriately. There is a version of BIND
+ version 4.9 on gatekeeper.DEC.COM in pub/BSD/bind/4.9.
+
+ There is substantial disagreement about whether you can make
+ this work with resolv+, which allows you to specify a search-path
+ of services. Some people report that it works fine, others
+ claim it doesn't work at all (including causing sendmail to
+ drop core when it tries to do multiple resolv+ lookups for a
+ single job). I haven't tried resolv+, as we use DNS exclusively.
+
+ Should you want to try resolv+, it is on ftp.uu.net in
+ /networking/ip/dns.
+
+ Apparently getservbyname() can fail under moderate to high
+ load under some circumstances. This will exhibit itself as
+ the message ``554 makeconnection: service "smtp" unknown''.
+ The problem has been traced to one or more blank lines in
+ /etc/services on the NIS server machine. Delete these
+ and it should work. This info is thanks to Brian Bartholomew
+ <bb@math.ufl.edu> of I-Kinetics, Inc.
+
+SunOS 4.0.2 (Sun 386i)
+ Date: Fri, 25 Aug 1995 11:13:58 +0200 (MET DST)
+ From: teus@oce.nl
+
+ Sendmail 8.7.Beta.12 compiles and runs nearly out of the box with the
+ following changes:
+ * Don't use /usr/5bin in your PATH, but make /usr/5bin/uname
+ available as "uname" command.
+ * Use the defines "-DBSD4_3 -DNAMED_BIND=0" in
+ BuildTools/OS/SunOS.4.0, which is selected via the "uname" command.
+ I recommend to make available the db-library on the system first
+ (and change the Makefile to use this library).
+ Note that the sendmail.cf and aliases files are found in /etc.
+
+SunOS 4.1.3, 4.1.3_U1
+ Sendmail causes crashes on SunOS 4.1.3 and 4.1.3_U1. According
+ to Sun bug number 1077939:
+
+ If an application does a getsockopt() on a SOCK_STREAM (TCP) socket
+ after the other side of the connection has sent a TCP RESET for
+ the stream, the kernel gets a Bus Trap in the tcp_ctloutput() or
+ ip_ctloutput() routine.
+
+ For 4.1.3, this is fixed in patch 100584-08, available on the
+ Sunsolve 2.7.1 or later CDs. For 4.1.3_U1, this was fixed in patch
+ 101790-01 (SunOS 4.1.3_U1: TCP socket and reset problems), later
+ obsoleted by patch 102010-05.
+
+ Sun patch 100584-08 is not currently publicly available on their
+ ftp site but a user has reported it can be found at other sites
+ using a web search engine.
+
+Solaris 2.x (SunOS 5.x)
+ To compile for Solaris, the Makefile built by Build must
+ include a SOLARIS definition which reflects the Solaris version
+ (i.e. -DSOLARIS=20400 for 2.4 or -DSOLARIS=20501 for 2.5.1).
+ If you are using gcc, make sure -I/usr/include is not used (or
+ it might complain about TopFrame). If you are using Sun's cc,
+ make sure /opt/SUNWspro/bin/cc is used instead of /usr/ucb/cc
+ (or it might complain about tm_zone).
+
+ To the best of my knowledge, Solaris does not have the
+ gethostbyname problem described above. However, it does
+ have another one:
+
+ 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.
+
+ From another correspondent:
+
+ When running sendmail under Solaris, the gethostbyname()
+ hack in conf.c which should perform proper canonicalization
+ of host names could fail. Result: the host name is not
+ canonicalized despite the hack, and you'll have to define $j
+ and $m in sendmail.cf somewhere.
+
+ The reason could be that /etc/nsswitch.conf is improperly
+ configured (at least from sendmail's point of view). For
+ example, the line
+
+ hosts: files nisplus dns
+
+ will make gethostbyname() look in /etc/hosts first, then ask
+ nisplus, then dns. However, if /etc/hosts does not contain
+ the full canonicalized hostname, then no amount of
+ gethostbyname()s will work.
+
+ Solution (or rather, a workaround): Ask nisplus first, then
+ dns, then local files:
+
+ hosts: nisplus dns [NOTFOUND=return] files
+
+ The Solaris "syslog" function is apparently limited to something
+ about 90 characters because of a kernel limitation. If you have
+ source code, you can probably up this number. You can get patches
+ that fix this problem: the patch ids are:
+
+ Solaris 2.1 100834
+ Solaris 2.2 100999
+ Solaris 2.3 101318
+
+ Be sure you have the appropriate patch installed or you won't
+ see system logging.
+
+Solaris 2.4 (SunOS 5.4)
+ If you include /usr/lib at the end of your LD_LIBRARY_PATH you run
+ the risk of getting the wrong libraries under some circumstances.
+ This is because of a new feature in Solaris 2.4, described by
+ Rod.Evans@Eng.Sun.COM:
+
+ >> Prior to SunOS 5.4, any LD_LIBRARY_PATH setting was ignored by the
+ >> runtime linker if the application was setxid (secure), thus your
+ >> applications search path would be:
+ >>
+ >> /usr/local/lib LD_LIBRARY_PATH component - IGNORED
+ >> /usr/lib LD_LIBRARY_PATH component - IGNORED
+ >> /usr/local/lib RPATH - honored
+ >> /usr/lib RPATH - honored
+ >>
+ >> the effect is that path 3 would be the first used, and this would
+ >> satisfy your resolv.so lookup.
+ >>
+ >> In SunOS 5.4 we made the LD_LIBRARY_PATH a little more flexible.
+ >> People who developed setxid applications wanted to be able to alter
+ >> the library search path to some degree to allow for their own
+ >> testing and debugging mechanisms. It was decided that the only
+ >> secure way to do this was to allow a `trusted' path to be used in
+ >> LD_LIBRARY_PATH. The only trusted directory we presently define
+ >> is /usr/lib. Thus a setuid root developer could play with some
+ >> alternative shared object implementations and place them in
+ >> /usr/lib (being root we assume they'ed have access to write in this
+ >> directory). This change was made as part of 1155380 - after a
+ >> *huge* amount of discussion regarding the security aspect of things.
+ >>
+ >> So, in SunOS 5.4 your applications search path would be:
+ >>
+ >> /usr/local/lib from LD_LIBRARY_PATH - IGNORED (untrustworthy)
+ >> /usr/lib from LD_LIBRARY_PATH - honored (trustworthy)
+ >> /usr/local/lib from RPATH - honored
+ >> /usr/lib from RPATH - honored
+ >>
+ >> here, path 2 would be the first used.
+
+Solaris 2.6 (SunOS 5.6)
+ If you built sendmail 8.8.1 through 8.8.4 inclusive on a Solaris 2.5
+ system, that binary will not run on Solaris 2.6, due to problems with
+ incompatible snprintf(3s) calls. This problem is fixed in sendmail
+ 8.8.5.
+
+Solaris 2.5.1 (SunOS 5.5.1) and 2.6 (SunOS 5.6)
+ Apparently Solaris 2.5.1 patch 103663-01 installs a new
+ /usr/include/resolv.h file that defines the __P macro without
+ checking to see if it is already defined. This new resolv.h is also
+ included in the Solaris 2.6 distribution. This causes compile
+ warnings such as:
+
+ In file included from daemon.c:51:
+ /usr/include/resolv.h:208: warning: `__P' redefined
+ cdefs.h:58: warning: this is the location of the previous definition
+
+ These warnings can be safely ignored or you can create a resolv.h
+ file in the obj.SunOS.5.5.1.* or obj.SunOS.5.6.* directory that reads:
+
+ #undef __P
+ #include "/usr/include/resolv.h"
+
+ Sun is aware of the problem (Sun bug ID 4081053) and it will be fixed
+ in Solaris 2.7.
+
+Ultrix
+ By default, the IDENT protocol is turned off on Ultrix. If you
+ are running Ultrix 4.4 or later, or if you have included patch
+ CXO-8919 for Ultrix 4.2 or 4.3 to fix the TCP problem, you can turn
+ IDENT on in the configuration file by setting the "ident" timeout
+ to 30 seconds.
+
+Digital UNIX (formerly DEC OSF/1)
+ If you are compiling on OSF/1 (DEC Alpha), you must use
+ -L/usr/shlib (otherwise it core dumps on startup). You may also
+ need -mld to get the nlist() function, although some versions
+ apparently don't need this.
+
+ Also, the enclosed makefile removed /usr/sbin/smtpd; if you need
+ it, just create the link to the sendmail binary.
+
+ On DEC OSF/1 3.2 or earlier, the MatchGECOS option doesn't work
+ properly due to a bug in the getpw* routines. If you want to use
+ this, use -DDEC_OSF_BROKEN_GETPWENT=1. The problem is fixed in 3.2C.
+
+ Digital's mail delivery agent, /bin/mail (aka /bin/binmail), will
+ only preserve the envelope sender in the "From " header if
+ DefaultUserID is set to daemon. Setting this to mailnull will
+ cause all mail to have the header "From mailnull ...". To use
+ a different DefaultUserID, you will need to use a different mail
+ delivery agent (such as mail.local found in the sendmail
+ distribution).
+
+ On Digital UNIX 4.0 and later, Berkeley DB 1.85 is included with the
+ operating system and already has the ndbm.o module removed. However,
+ Digital has modified the original Berkeley DB db.h include file.
+ This results in the following warning while compiling map.c and udb.c:
+
+ cc: Warning: /usr/include/db.h, line 74: The redefinition of the macro
+ "__signed" conflicts with a current definition because the replacement
+ lists differ. The redefinition is now in effect.
+ #define __signed signed
+ ------------------------^
+
+ This warning can be ignored.
+
+IRIX
+ The header files on SGI IRIX are completely prototyped, and as
+ a result you can sometimes get some warning messages during
+ compilation. These can be ignored. There are two errors in
+ deliver only if you are using gcc, both of the form ``warning:
+ passing arg N of `execve' from incompatible pointer type''.
+ Also, if you compile with -DNIS, you will get a complaint
+ about a declaration of struct dom_binding in a prototype
+ when compiling map.c; this is not important because the
+ function being prototyped is not used in that file.
+
+ In order to compile sendmail you will have had to install
+ the developers' option in order to get the necessary include
+ files.
+
+ If you compile with -lmalloc (the fast memory allocator), you may
+ get warning messages such as the following:
+
+ ld32: WARNING 85: definition of _calloc in /usr/lib32/libmalloc.so
+ preempts that definition in /usr/lib32/mips3/libc.so.
+ ld32: WARNING 85: definition of _malloc in /usr/lib32/libmalloc.so
+ preempts that definition in /usr/lib32/mips3/libc.so.
+ ld32: WARNING 85: definition of _realloc in /usr/lib32/libmalloc.so
+ preempts that definition in /usr/lib32/mips3/libc.so.
+ ld32: WARNING 85: definition of _free in /usr/lib32/libmalloc.so
+ preempts that definition in /usr/lib32/mips3/libc.so.
+ ld32: WARNING 85: definition of _cfree in /usr/lib32/libmalloc.so
+ preempts that definition in /usr/lib32/mips3/libc.so.
+
+ These are unavoidable and innocuous -- just ignore them.
+
+ According to Dave Sill <de5@ornl.gov>, there is a version of the
+ Berkeley DB library patched to run on Irix 6.2 available from
+ http://reality.sgi.com/ariel/freeware/#db .
+
+IRIX 6.x
+ It is important that on IRIX 6.x you give used ABI in command
+ line of Build, otherwise configuration script does not work
+ correctly, e.g.,
+
+ sh Build -E ABI=-n32
+
+ If you are using XFS filesystem, avoid using ABI=-32 if possible.
+
+NeXT or NEXTSTEP
+ NEXTSTEP 3.3 and earlier ship with the old DBM library. Also,
+ Berkeley DB does not currently run on NEXTSTEP.
+
+ If you are compiling on NEXTSTEP, you will have to create an
+ empty file "unistd.h" and create a file "dirent.h" containing:
+
+ #include <sys/dir.h>
+ #define dirent direct
+
+ (BuildTools/OS/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:
+
+ OOPort=25
+
+ in your .cf file.
+
+ You may have to use -DNeXT.
+
+BSDI (BSD/386) 1.0, NetBSD 0.9, FreeBSD 1.0
+ The "m4" from BSDI won't handle the config files properly.
+ I haven't had a chance to test this myself.
+
+ The M4 shipped in FreeBSD and NetBSD 0.9 don't handle the config
+ files properly. One must use either GNU m4 1.1 or the PD-M4
+ recently posted in comp.os.386bsd.bugs (and maybe others).
+ NetBSD-current includes the PD-M4 (as stated in the NetBSD file
+ CHANGES).
+
+ FreeBSD 1.0 RELEASE has uname(2) now. Use -DUSEUNAME in order to
+ use it (look into BuildTools/OS/FreeBSD). NetBSD-current may have
+ it too but it has not been verified.
+
+ The latest version of Berkeley DB uses a different naming
+ scheme than the version that is supplied with your release. This
+ means you will be able to use the current version of Berkeley DB
+ with sendmail as long you use the new db.h when compiling
+ sendmail and link it against the new libdb.a. You should probably
+ keep the original db.h in /usr/include and the new db.h in
+ /usr/local/include.
+
+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.
+
+A/UX
+ Date: Tue, 12 Oct 1993 18:28:28 -0400 (EDT)
+ From: "Eric C. Hagberg" <hagberg@med.cornell.edu>
+ Subject: Fix for A/UX ndbm
+
+ I guess this isn't really a sendmail bug, however, it is something
+ that A/UX users should be aware of when compiling sendmail 8.6.
+
+ Apparently, the calls that sendmail is using to the ndbm routines
+ in A/UX 3.0.x contain calls to "broken" routines, in that the
+ aliases database will break when it gets "just a little big"
+ (sorry I don't have exact numbers here, but it broke somewhere
+ around 20-25 aliases for me.), making all aliases non-functional
+ after exceeding this point.
+
+ What I did was to get the gnu-dbm-1.6 package, compile it, and
+ then re-compile sendmail with "-lgdbm", "-DNDBM", and using the
+ ndbm.h header file that comes with the gnu-package. This makes
+ things behave properly.
+ [NOTE: see comment above about GDBM]
+
+ I suppose porting the New Berkeley DB package is another route,
+ however, I made a quick attempt at it, and found it difficult
+ (not easy at least); the gnu-dbm package "configured" and
+ compiled easily.
+
+ [NOTE: Berkeley DB version 2.X runs on A/UX and can be used for
+ database maps.]
+
+SCO Unix
+ From: Thomas Essebier <tom@stallion.oz.au>
+ Organisation: Stallion Technologies Pty Ltd.
+
+ It will probably help those who are trying to configure sendmail 8.6.9
+ to know that if they are on SCO, they had better set
+ OI-dnsrch
+ or they will core dump as soon as they try to use the resolver.
+ ie. although SCO has _res.dnsrch defined, and is kinda BIND 4.8.3, it
+ does not inititialise it, nor does it understand 'search' in
+ /etc/named.boot.
+ - sigh -
+
+ According to SCO, the m4 which ships with UnixWare 2.1.2 is broken.
+ We recommend installing GNU m4 before attempting to build sendmail.
+
+DG/UX
+ Doug Anderson <dlander@afterlife.ncsc.mil> has successfully run
+ V8 on the DG/UX 5.4.2 and 5.4R3.x platforms under heavy usage.
+ Originally, the DG /bin/mail program wasn't compatible with
+ the V8 sendmail, since the DG /bin/mail requires the environment
+ variable "_FORCE_MAIL_LOCAL_=yes" be set. Version 8.7 now includes
+ this in the environment before invoking the local mailer. Some
+ have used procmail to avoid this problem in the past. It works
+ but some have experienced file locking problems with their DG/UX
+ ports of procmail.
+
+Apollo DomainOS
+ If you are compiling on Apollo, you will have to create an empty
+ file "unistd.h" (for DomainOS 10.3 and earlier) and create a file
+ "dirent.h" containing:
+
+ #include <sys/dir.h>
+ #define dirent direct
+
+ (BuildTools/OS/DomainOS will attempt to do both of these for you.)
+
+HP-UX 8.00
+ Date: Mon, 24 Jan 1994 13:25:45 +0200
+ From: Kimmo Suominen <Kimmo.Suominen@lut.fi>
+ Subject: 8.6.5 w/ HP-UX 8.00 on s300
+
+ Just compiled and fought with sendmail 8.6.5 on a HP9000/360 (ie. a
+ series 300 machine) running HP-UX 8.00.
+
+ I was getting segmentation fault when delivering to a local user.
+ With debugging I saw it was faulting when doing _free@libc... *sigh*
+ It seems the new implementation of malloc on s300 is buggy as of 8.0,
+ so I tried out the one in -lmalloc (malloc(3X)). With that it seems
+ to work just dandy.
+
+ When linking, you will get the following error:
+
+ ld: multiply defined symbol _freespace in file /usr/lib/libmalloc.a
+
+ but you can just ignore it. You might want to add this info to the
+ README file for the future...
+
+Linux
+ Something broke between versions 0.99.13 and 0.99.14 of Linux:
+ the flock() system call gives errors. If you are running .14,
+ you must not use flock. You can do this with -DHASFLOCK=0.
+
+ Around the inclusion of bind-4.9.3 & Linux libc-4.6.20, the
+ initialization of the _res structure changed. If /etc/hosts.conf
+ was configured as "hosts, bind" the resolver code could return
+ "Name server failure" errors. This is supposedly fixed in
+ later versions of libc (>= 4.6.29?), and later versions of
+ sendmail (> 8.6.10) try to work around the problem.
+
+ Some older versions (< 4.6.20?) of the libc/include files conflict
+ with sendmail's version of cdefs.h. Deleting sendmail's version
+ on those systems should be non-harmful, and new versions don't care.
+
+ Sendmail assumes that libc has snprintf, which has been true since
+ libc 4.7.0. If you are running an older version, you will need to
+ use -DHASSNPRINTF=0 in the Makefile. If may be able to use -lbsd
+ (which includes snprintf) instead of turning this off on versions
+ of libc between 4.4.4 and 4.7.0 (snprintf improves security, so
+ you want to use this if at all possible).
+
+ NOTE ON LINUX & BIND: By default, the Makefile generated for Linux
+ includes header files in /usr/local/include and libraries in
+ /usr/local/lib. If you've installed BIND on your system, the header
+ files typically end up in the search path and you need to add
+ "-lresolv" to the LIBS line in your Makefile. Really old versions
+ may need to include "-l44bsd" as well (particularly if the link phase
+ complains about missing strcasecmp, strncasecmp or strpbrk).
+ Complaints about an undefined reference to `__dn_skipname' in
+ domain.o are a sure sign that you need to add -lresolv to LIBS.
+ Newer versions of Linux are basically threaded BIND, so you may or
+ may not see complaints if you accidentally mix BIND
+ headers/libraries with virginal libc. If you have BIND headers in
+ /usr/local/include (resolv.h, etc) you *should* be adding -lresolv
+ to LIBS. Data structures may change and you'd be asking for a
+ core dump.
+
+AIX 3.x
+ This version of sendmail does not support MB, MG, and MR resource
+ records, which are supported by AIX sendmail.
+
+ Several people have reported that the IBM-supplied named returns
+ fairly random results -- the named should be replaced. It is not
+ necessary to replace the resolver, which will simplify installation.
+ A new BIND resolver can be found at http://www.isc.org/isc/.
+
+AIX 3.1.x
+ The supplied load average code only works correctly for AIX 3.2.x.
+ For 3.1, use -DLA_TYPE=LA_SUBR and get the latest ``monitor''
+ package by Jussi Maki <jmaki@hut.fi> from ftp.funet.fi in the
+ directory pub/unix/AIX/rs6000/monitor-1.12.tar.Z; use the loadavgd
+ daemon, and the getloadavg subroutine supplied with that package.
+ If you don't care about load average throttling, just turn off
+ load average checking using -DLA_TYPE=LA_ZERO.
+
+AIX 2.2.1
+ Date: Mon Dec 4 14:14:56 CST 1995
+ From: Mark Whetzel <markw@antimatr.houston.tx.us>
+ Subject: Porting sendmail 8.7.2 to AIX V2 on the RT.
+
+ This version of sendmail does not support MB, MG, and MR resource
+ records, which are supported by AIX sendmail.
+
+ AIX V2 on the RT does not have 'paths.h'. Create a null
+ file in the 'obj' directory to remove this compile error.
+
+ A patch file is needed to get the BSD 'db' library to compile
+ for AIX/RT. I have sent the necessary updates to the author,
+ but they may not be immediately available.
+ [NOTE: Berkeley DB version 2.X runs on AIX/RT.]
+
+ The original AIX/RT resolver libraries are very old, and you
+ should get the latest BIND to replace it. The 4.8.3 version
+ has been tested, but 4.9.x is out and should work.
+
+ To make the load average code work correctly requires an
+ external routine, as the kernel does not maintain system
+ load averages, similar to AIX V3.1.x. A reverse port of the
+ older 1.05 'monitor' load average daemon code written by
+ Jussi Maki that will work on AIX V2 for the RT is available
+ by E-mail to Mark Whetzel <markw@antimatr.houston.tx.us>.
+ That code depends on an external daemon to collect system
+ load information, and the external routine 'getloadavg',
+ that will return that information. The 'LA_SUBR' define
+ will handle this for AIX V2 on the RT.
+
+ Note: You will have to change BuildTools/OS/AIX.2 to correctly
+ point to the locatons of the updated BIND source tree and
+ the location of the 'newdb' tree and library location.
+ You will also have to change BuildTools/OS/AIX.2 to know
+ about the location of the 'getloadavg' routine if you use
+ the LA_SUBR define.
+
+
+ Manual pages will format correctly if given the mandoc macros
+ and used with nroff. I have not tried groff.
+
+RISC/os
+ RISC/os from MIPS is a merged AT&T/Berkeley system. When you
+ compile on that platform you will get duplicate definitions
+ on many files. You can ignore these.
+
+System V Release 4 Based Systems
+ There is a single BuildTools OS that is intended for all SVR4-based
+ systems (built from BuildTools/OS/SVR4). It defines __svr4__,
+ which is predefined by some compilers. If your compiler already
+ defines this compile variable, you can delete the definition from
+ the generated Makefile or create a BuildTools/Site/site.config.m4
+ file.
+
+ It's been tested on Dell Issue 2.2.
+
+DELL SVR4
+ Date: Mon, 06 Dec 1993 10:42:29 EST
+ From: "Kimmo Suominen" <kim@grendel.lut.fi>
+ Message-ID: <2d0352f9.lento29@lento29.UUCP>
+ To: eric@cs.berkeley.edu
+ Cc: sendmail@cs.berkeley.edu
+ Subject: Notes for DELL SVR4
+
+ Eric,
+
+ Here are some notes for compiling Sendmail 8.6.4 on DELL SVR4. I ran
+ across these things when helping out some people who contacted me by
+ e-mail.
+
+ 1) Use gcc 2.4.5 (or later?). Dell distributes gcc 2.1 with their
+ Issue 2.2 Unix. It is too old, and gives you problems with
+ clock.c, because sigset_t won't get defined in <sys/signal.h>.
+ This is due to a problematic protection rule in there, and is
+ fixed with gcc 2.4.5.
+
+ 2) If you don't use the new Berkeley DB (-DNEWDB), then you need
+ to add "-lc -lucb" to the libraries to link with. This is because
+ the -ldbm distributed by Dell needs the bcopy, bcmp and bzero
+ functions. It is important that you specify both libraries in
+ the given order to be sure you only get the BSTRING functions
+ from the UCB library (and not the signal routines etc.).
+
+ 3) Don't leave out "-lelf" even if compiling with "-lc -lucb".
+ The UCB library also has another copy of the nlist routines,
+ but we do want the ones from "-lelf".
+
+ If anyone needs a compiled gcc 2.4.5 and/or a ported DB library, they
+ can use anonymous ftp to fetch them from lut.fi in the /kim directory.
+ They are copies of what I use on grendel.lut.fi, and offering them
+ does not imply that I would also support them. I have sent the DB
+ port for SVR4 back to Keith Bostic for inclusion in the official
+ distribution, but I haven't heard anything from him as of today.
+
+ - gcc-2.4.5-svr4.tar.gz (gcc 2.4.5 and the corresponding libg++)
+ - db-1.72.tar.gz (with source, objects and a installed copy)
+
+ Cheers
+ + Kim
+ --
+ * Kimmo.Suominen@lut.fi * SysVr4 enthusiast at GRENDEL.LUT.FI *
+ * KIM@FINFILES.BITNET * Postmaster and Hostmaster at LUT.FI *
+ * + 358 200 865 718 * Unix area moderator at NIC.FUNET.FI *
+
+ConvexOS 10.1 and below
+ In order to use the name server, you must create the file
+ /etc/use_nameserver. If this file does not exist, the call
+ to res_init() will fail and you will have absolutely no
+ access to DNS, including MX records.
+
+Amdahl UTS 2.1.5
+ In order to get UTS to work, you will have to port BIND 4.9.
+ The vendor's BIND is reported to be ``totally inadequate.''
+ See sendmail/contrib/AmdahlUTS.patch for the patches necessary
+ to get BIND 4.9 compiled for UTS.
+
+UnixWare
+ According to Alexander Kolbasov <sasha@unitech.gamma.ru>,
+ the m4 on UnixWare 2.0 (still in Beta) will core dump on the
+ config files. GNU m4 and the m4 from UnixWare 1.x both work.
+
+ According to Larry Rosenman <ler@lerami.lerctr.org>:
+
+ UnixWare 2.1.[23]'s m4 chokes (not obviously) when
+ processing the 8.9.0 cf files.
+
+ I had a LOCAL_RULE_0 that wound up AFTER the
+ SBasic_check_rcpt rules using the SCO supplied M4.
+ GNU M4 works fine.
+
+UNICOS 8.0.3.4
+ Some people have reported that the -O flag on UNICOS can cause
+ problems. You may want to turn this off if you have problems
+ running sendmail. Reported by Jerry G. DeLapp <jgd@acl.lanl.gov>.
+
+GNU getopt
+ I'm told that GNU getopt has a problem in that it gets confused
+ by the double call. Use the version in conf.c instead.
+
+BIND 4.9.2 and Ultrix
+ If you are running on Ultrix, be sure you read conf/Info.Ultrix
+ in the BIND distribution very carefully -- there is information
+ in there that you need to know in order to avoid errors of the
+ form:
+
+ /lib/libc.a(gethostent.o): sethostent: multiply defined
+ /lib/libc.a(gethostent.o): endhostent: multiply defined
+ /lib/libc.a(gethostent.o): gethostbyname: multiply defined
+ /lib/libc.a(gethostent.o): gethostbyaddr: multiply defined
+
+ during the link stage.
+
+strtoul
+ Some compilers (notably gcc) claim to be ANSI C but do not
+ include the ANSI-required routine "strtoul". If your compiler
+ has this problem, you will get an error in srvrsmtp.c on the
+ code:
+
+ # ifdef defined(__STDC__) && !defined(BROKEN_ANSI_LIBRARY)
+ e->e_msgsize = strtoul(vp, (char **) NULL, 10);
+ # else
+ e->e_msgsize = strtol(vp, (char **) NULL, 10);
+ # endif
+
+ You can use -DBROKEN_ANSI_LIBRARY to get around this problem.
+
+Listproc 6.0c
+ Date: 23 Sep 1995 23:56:07 GMT
+ Message-ID: <95925101334.~INN-AUMa00187.comp-news@dl.ac.uk>
+ From: alansz@mellers1.psych.berkeley.edu (Alan Schwartz)
+ Subject: Listproc 6.0c + Sendmail 8.7 [Helpful hint]
+
+ Just upgraded to sendmail 8.7, and discovered that listproc 6.0c
+ breaks, because it, by default, sends a blank "HELO" rather than
+ a "HELO hostname" when using the 'system' or 'telnet' mailmethod.
+
+ The fix is to include -DZMAILER in the compilation, which will
+ cause it to use "HELO hostname" (which Z-mail apparently requires
+ as well. :)
+
+LDAP
+ LDAP was provided by Booker Bense <bbense+ldap@stanford.edu> of
+ Stanford University. From Booker:
+
+ - The patch attached to this message implements an Ldap map class.
+ Currently we are using this at stanford to support campus-wide
+ email addressing. More information can be found at
+ http://www.stanford.edu/~bbense/Inst.html.
+
+ - Currently we are using the ldap map as follows:
+
+ Kluser ldapx
+ -h"localhost borax.stanford.edu borate.stanford.edu boron.stanford.edu"
+ -k"mailacceptinggeneralid=%s" -v maildrop
+
+ and in Rule set S5
+
+ # Now attempt to lookup in luser (ldap map)
+ R< $L > $+ $: < $L > $( luser $1 $)
+ R< $* > $+ @ $+ $: < $3 > $2 Rewrite if forward
+
+ - The map definition supports most of the standard Map args plus most
+ of the command line options of ldapsearch. The software is currently
+ limited to only accepting the first entry returned. It expects that
+ the map defines an ldap filter that returns at most 1 valid entry.
+ It requires the ldap and lber libraries from the Umich Ldap3.2
+ release.
+
+ The software has been in production on Solaris.2.5.1 at Stanford
+ for over 2 years.
+
+TCP Wrappers
+ If you are using -DTCPWRAPPERS to get TCP Wrappers support you will
+ also need to install libwrap.a and modify your site.config.m4 file
+ or the generated Makefile to include -lwrap in the LIBS line
+ (make sure that INCDIRS and LIBDIRS point to where the tcpd.h and
+ libwrap.a can be found).
+
+ TCP Wrappers is available on ftp.win.tue.nl in /pub/security;
+ grab tcp_wrappers_<VER>.tar.gz (where <VER> is the highest
+ numbered version).
+
+ If you have alternate MX sites for your site, be sure that all of
+ your MX sites reject the same set of hosts. If not, a bad guy whom
+ you reject will connect to your site, fail, and move on to the next
+ MX site, which will accept the mail for you and forward it on to you.
+
+Regular Expressions (MAP_REGEX)
+ If sendmail linking fails with:
+
+ undefined reference to 'regcomp'
+
+ or sendmail gives an error about a regular expression with:
+
+ pattern-compile-error: : Operation not applicable
+
+ Your libc does not include a running version of POSIX-regex. Use
+ librx or regex.o from the GNU Free Software Foundation,
+ ftp://ftp.gnu.org/pub/gnu/rx-?.?.tar.gz or
+ ftp://ftp.gnu.org/pub/gnu/regex-?.?.tar.gz.
+ You can also use the regex-lib by Henry Spencer,
+ ftp://ftp.funet.fi/pub/languages/C/spencer/regex.shar.gz
+ Make sure, your compiler reads regex.h from the distribution,
+ not from /usr/include, otherwise sendmail will dump a core.
+
+
++--------------+
+| MANUAL PAGES |
++--------------+
+
+The manual pages have been written against the -mandoc macros
+instead of the -man macros. The latest version of groff has them
+included. You can also get a copy from FTP.UU.NET in the directory
+/systems/unix/bsd-sources/share/tmac. groff is available from
+ftp.gnu.org in the /pub/gnu directory.
+
+
++-----------------+
+| DEBUGGING HOOKS |
++-----------------+
+
+As of 8.6.5, sendmail daemons will catch a SIGUSR1 signal and log
+some debugging output (logged at LOG_DEBUG severity). The
+information dumped is:
+
+ * The value of the $j macro.
+ * A warning if $j is not in the set $=w.
+ * A list of the open file descriptors.
+ * The contents of the connection cache.
+ * If ruleset 89 is defined, it is evaluated and the results printed.
+
+This allows you to get information regarding the runtime state of the
+daemon on the fly. This should not be done too frequently, since
+the process of rewriting may lose memory which will not be recovered.
+Also, ruleset 89 may call non-reentrant routines, so there is a small
+non-zero probability that this will cause other problems. It is
+really only for debugging serious problems.
+
+A typical formulation of ruleset 89 would be:
+
+ R$* $@ $>0 some test address
+
+
++-----------------------------+
+| DESCRIPTION OF SOURCE FILES |
++-----------------------------+
+
+The following list describes the files in this directory:
+
+Makefile.m4 A template for constructing a makefile based on the
+ information in the BuildTools directory.
+README This file.
+TRACEFLAGS My own personal list of the trace flags -- not guaranteed
+ to be particularly up to date.
+alias.c Does name aliasing in all forms.
+arpadate.c A subroutine which creates ARPANET standard dates.
+clock.c Routines to implement real-time oriented functions
+ in sendmail -- e.g., timeouts.
+collect.c The routine that actually reads the mail into a temp
+ file. It also does a certain amount of parsing of
+ the header, etc.
+conf.c The configuration file. This contains information
+ that is presumed to be quite static and non-
+ controversial, or code compiled in for efficiency
+ reasons. Most of the configuration is in sendmail.cf.
+conf.h Configuration that must be known everywhere.
+convtime.c A routine to sanely process times.
+daemon.c Routines to implement daemon mode. This version is
+ specifically for Berkeley 4.1 IPC.
+deliver.c Routines to deliver mail.
+domain.c Routines that interface with DNS (the Domain Name
+ System).
+err.c Routines to print error messages.
+envelope.c Routines to manipulate the envelope structure.
+headers.c Routines to process message headers.
+macro.c The macro expander. This is used internally to
+ insert information from the configuration file.
+main.c The main routine to sendmail. This file also
+ contains some miscellaneous routines.
+map.c Support for database maps.
+mci.c Routines that handle mail connection information caching.
+mime.c MIME conversion routines.
+parseaddr.c The routines which do address parsing.
+queue.c Routines to implement message queueing.
+readcf.c The routine that reads the configuration file and
+ translates it to internal form.
+recipient.c Routines that manipulate the recipient list.
+safefile.c Routines to do careful checking of file modes and permissions
+ when opening or creating files.
+savemail.c Routines which save the letter on processing errors.
+sendmail.h Main header file for sendmail.
+snprintf.c Routines to manipulate strings but prevent buffer overflows.
+srvrsmtp.c Routines to implement server SMTP.
+stab.c Routines to manage the symbol table.
+stats.c Routines to collect and post the statistics.
+sysexits.c List of error messages associated with error codes
+ in sysexits.h.
+trace.c The trace package. These routines allow setting and
+ testing of trace flags with a high granularity.
+udb.c The user database interface module.
+usersmtp.c Routines to implement user SMTP.
+util.c Some general purpose routines used by sendmail.
+version.c The version number and information about this
+ version of sendmail. Theoretically, this gets
+ modified on every change.
+
+Eric Allman
+
+(Version 8.206, last update 6/30/98 22:08:36)
diff --git a/usr.sbin/sendmail/src/mailstats.h b/usr.sbin/sendmail/src/mailstats.h
index 0164d91e144..2121e149587 100644
--- a/usr.sbin/sendmail/src/mailstats.h
+++ b/usr.sbin/sendmail/src/mailstats.h
@@ -1,49 +1,34 @@
/*
- * Copyright (c) 1983 Eric P. Allman
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1983 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
*
- * @(#)mailstats.h 8.1 (Berkeley) 6/7/93
+ * @(#)mailstats.h 8.8 (Berkeley) 5/19/98
*/
+#define STAT_VERSION 2
+#define STAT_MAGIC 0x1B1DE
+
/*
** Statistics structure.
*/
struct statistics
{
+ int stat_magic; /* magic number */
+ int stat_version; /* stat file version */
time_t stat_itime; /* file initialization time */
short stat_size; /* size of this structure */
long stat_nf[MAXMAILERS]; /* # msgs from each mailer */
long stat_bf[MAXMAILERS]; /* kbytes from each mailer */
long stat_nt[MAXMAILERS]; /* # msgs to each mailer */
long stat_bt[MAXMAILERS]; /* kbytes to each mailer */
+ long stat_nr[MAXMAILERS]; /* # rejects by each mailer */
+ long stat_nd[MAXMAILERS]; /* # discards by each mailer */
};
diff --git a/usr.sbin/sendmail/src/snprintf.c b/usr.sbin/sendmail/src/snprintf.c
new file mode 100644
index 00000000000..f9b156de5ed
--- /dev/null
+++ b/usr.sbin/sendmail/src/snprintf.c
@@ -0,0 +1,428 @@
+/*
+ * Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ * Copyright (c) 1997 Eric P. Allman. All rights reserved.
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)snprintf.c 8.11 (Berkeley) 6/4/98";
+#endif /* not lint */
+
+#include "sendmail.h"
+
+ /*
+** SNPRINTF, VSNPRINT -- counted versions of printf
+**
+** These versions have been grabbed off the net. They have been
+** cleaned up to compile properly and support for .precision and
+** %lx has been added.
+*/
+
+/**************************************************************
+ * Original:
+ * Patrick Powell Tue Apr 11 09:48:21 PDT 1995
+ * A bombproof version of doprnt (sm_dopr) included.
+ * Sigh. This sort of thing is always nasty do deal with. Note that
+ * the version here does not include floating point...
+ *
+ * snprintf() is used instead of sprintf() as it does limit checks
+ * for string length. This covers a nasty loophole.
+ *
+ * The other functions are there to prevent NULL pointers from
+ * causing nast effects.
+ **************************************************************/
+
+/*static char _id[] = "$Id: snprintf.c,v 1.1.1.1 1998/07/12 17:10:41 millert Exp $";*/
+void sm_dopr();
+char *DoprEnd;
+int SnprfOverflow;
+
+#if !HASSNPRINTF
+
+/* VARARGS3 */
+int
+# ifdef __STDC__
+snprintf(char *str, size_t count, const char *fmt, ...)
+# else
+snprintf(str, count, fmt, va_alist)
+ char *str;
+ size_t count;
+ const char *fmt;
+ va_dcl
+#endif
+{
+ int len;
+ VA_LOCAL_DECL
+
+ VA_START(fmt);
+ len = vsnprintf(str, count, fmt, ap);
+ VA_END;
+ return len;
+}
+
+
+# ifndef luna2
+int
+vsnprintf(str, count, fmt, args)
+ char *str;
+ size_t count;
+ const char *fmt;
+ va_list args;
+{
+ str[0] = 0;
+ DoprEnd = str + count - 1;
+ SnprfOverflow = 0;
+ sm_dopr( str, fmt, args );
+ if (count > 0)
+ DoprEnd[0] = 0;
+ if (SnprfOverflow && tTd(57, 2))
+ printf("\nvsnprintf overflow, len = %ld, str = %s",
+ (long) count, shortenstring(str, MAXSHORTSTR));
+ return strlen(str);
+}
+
+# endif /* !luna2 */
+#endif /* !HASSNPRINTF */
+
+/*
+ * sm_dopr(): poor man's version of doprintf
+ */
+
+void fmtstr __P((char *value, int ljust, int len, int zpad, int maxwidth));
+void fmtnum __P((long value, int base, int dosign, int ljust, int len, int zpad));
+void dostr __P(( char * , int ));
+char *output;
+void dopr_outch __P(( int c ));
+int SyslogErrno;
+
+void
+sm_dopr( buffer, format, args )
+ char *buffer;
+ const char *format;
+ va_list args;
+{
+ int ch;
+ long value;
+ int longflag = 0;
+ int pointflag = 0;
+ int maxwidth = 0;
+ char *strvalue;
+ int ljust;
+ int len;
+ int zpad;
+# if !HASSTRERROR && !defined(ERRLIST_PREDEFINED)
+ extern char *sys_errlist[];
+ extern int sys_nerr;
+# endif
+
+
+ output = buffer;
+ while( (ch = *format++) != '\0' ){
+ switch( ch ){
+ case '%':
+ ljust = len = zpad = maxwidth = 0;
+ longflag = pointflag = 0;
+ nextch:
+ ch = *format++;
+ switch( ch ){
+ case 0:
+ dostr( "**end of format**" , 0);
+ return;
+ case '-': ljust = 1; goto nextch;
+ case '0': /* set zero padding if len not set */
+ if(len==0 && !pointflag) zpad = '0';
+ case '1': case '2': case '3':
+ case '4': case '5': case '6':
+ case '7': case '8': case '9':
+ if (pointflag)
+ maxwidth = maxwidth*10 + ch - '0';
+ else
+ len = len*10 + ch - '0';
+ goto nextch;
+ case '*':
+ if (pointflag)
+ maxwidth = va_arg( args, int );
+ else
+ len = va_arg( args, int );
+ goto nextch;
+ case '.': pointflag = 1; goto nextch;
+ case 'l': longflag = 1; goto nextch;
+ case 'u': case 'U':
+ /*fmtnum(value,base,dosign,ljust,len,zpad) */
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 10,0, ljust, len, zpad ); break;
+ case 'o': case 'O':
+ /*fmtnum(value,base,dosign,ljust,len,zpad) */
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 8,0, ljust, len, zpad ); break;
+ case 'd': case 'D':
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 10,1, ljust, len, zpad ); break;
+ case 'x':
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value, 16,0, ljust, len, zpad ); break;
+ case 'X':
+ if( longflag ){
+ value = va_arg( args, long );
+ } else {
+ value = va_arg( args, int );
+ }
+ fmtnum( value,-16,0, ljust, len, zpad ); break;
+ case 's':
+ strvalue = va_arg( args, char *);
+ if (maxwidth > 0 || !pointflag) {
+ if (pointflag && len > maxwidth)
+ len = maxwidth; /* Adjust padding */
+ fmtstr( strvalue,ljust,len,zpad, maxwidth);
+ }
+ break;
+ case 'c':
+ ch = va_arg( args, int );
+ dopr_outch( ch ); break;
+ case 'm':
+#if HASSTRERROR
+ dostr(strerror(SyslogErrno), 0);
+#else
+ if (SyslogErrno < 0 || SyslogErrno >= sys_nerr)
+ {
+ dostr("Error ", 0);
+ fmtnum(SyslogErrno, 10, 0, 0, 0, 0);
+ }
+ else
+ dostr((char *)sys_errlist[SyslogErrno], 0);
+#endif
+ break;
+
+ case '%': dopr_outch( ch ); continue;
+ default:
+ dostr( "???????" , 0);
+ }
+ break;
+ default:
+ dopr_outch( ch );
+ break;
+ }
+ }
+ *output = 0;
+}
+
+void
+fmtstr( value, ljust, len, zpad, maxwidth )
+ char *value;
+ int ljust, len, zpad, maxwidth;
+{
+ int padlen, strlen; /* amount to pad */
+
+ if( value == 0 ){
+ value = "<NULL>";
+ }
+ for( strlen = 0; value[strlen]; ++ strlen ); /* strlen */
+ if (strlen > maxwidth && maxwidth)
+ strlen = maxwidth;
+ padlen = len - strlen;
+ if( padlen < 0 ) padlen = 0;
+ if( ljust ) padlen = -padlen;
+ while( padlen > 0 ) {
+ dopr_outch( ' ' );
+ --padlen;
+ }
+ dostr( value, maxwidth );
+ while( padlen < 0 ) {
+ dopr_outch( ' ' );
+ ++padlen;
+ }
+}
+
+void
+fmtnum( value, base, dosign, ljust, len, zpad )
+ long value;
+ int base, dosign, ljust, len, zpad;
+{
+ int signvalue = 0;
+ unsigned long uvalue;
+ char convert[20];
+ int place = 0;
+ int padlen = 0; /* amount to pad */
+ int caps = 0;
+
+ /* DEBUGP(("value 0x%x, base %d, dosign %d, ljust %d, len %d, zpad %d\n",
+ value, base, dosign, ljust, len, zpad )); */
+ uvalue = value;
+ if( dosign ){
+ if( value < 0 ) {
+ signvalue = '-';
+ uvalue = -value;
+ }
+ }
+ if( base < 0 ){
+ caps = 1;
+ base = -base;
+ }
+ do{
+ convert[place++] =
+ (caps? "0123456789ABCDEF":"0123456789abcdef")
+ [uvalue % (unsigned)base ];
+ uvalue = (uvalue / (unsigned)base );
+ }while(uvalue);
+ convert[place] = 0;
+ padlen = len - place;
+ if( padlen < 0 ) padlen = 0;
+ if( ljust ) padlen = -padlen;
+ /* DEBUGP(( "str '%s', place %d, sign %c, padlen %d\n",
+ convert,place,signvalue,padlen)); */
+ if( zpad && padlen > 0 ){
+ if( signvalue ){
+ dopr_outch( signvalue );
+ --padlen;
+ signvalue = 0;
+ }
+ while( padlen > 0 ){
+ dopr_outch( zpad );
+ --padlen;
+ }
+ }
+ while( padlen > 0 ) {
+ dopr_outch( ' ' );
+ --padlen;
+ }
+ if( signvalue ) dopr_outch( signvalue );
+ while( place > 0 ) dopr_outch( convert[--place] );
+ while( padlen < 0 ){
+ dopr_outch( ' ' );
+ ++padlen;
+ }
+}
+
+void
+dostr( str , cut)
+ char *str;
+ int cut;
+{
+ if (cut) {
+ while(*str && cut-- > 0) dopr_outch(*str++);
+ } else {
+ while(*str) dopr_outch(*str++);
+ }
+}
+
+void
+dopr_outch( c )
+ int c;
+{
+#if 0
+ if( iscntrl(c) && c != '\n' && c != '\t' ){
+ c = '@' + (c & 0x1F);
+ if( DoprEnd == 0 || output < DoprEnd )
+ *output++ = '^';
+ }
+#endif
+ if( DoprEnd == 0 || output < DoprEnd )
+ *output++ = c;
+ else
+ SnprfOverflow++;
+}
+
+ /*
+** QUAD_TO_STRING -- Convert a quad type to a string.
+**
+** Convert a quad type to a string. This must be done
+** separately as %lld/%qd are not supported by snprint()
+** and adding support would slow down systems which only
+** emulate the data type.
+**
+** Parameters:
+** value -- number to convert to a string.
+**
+** Returns:
+** pointer to a string.
+*/
+
+char *
+quad_to_string(value)
+ QUAD_T value;
+{
+ char *fmtstr;
+ static char buf[64];
+
+ /*
+ ** Use sprintf() instead of snprintf() since snprintf()
+ ** does not support %qu or %llu. The buffer is large enough
+ ** to hold the string so there is no danger of buffer
+ ** overflow.
+ */
+
+#if NEED_PERCENTQ
+ fmtstr = "%qu";
+#else
+ fmtstr = "%llu";
+#endif
+ sprintf(buf, fmtstr, value);
+ return buf;
+}
+ /*
+** SHORTENSTRING -- return short version of a string
+**
+** If the string is already short, just return it. If it is too
+** long, return the head and tail of the string.
+**
+** Parameters:
+** s -- the string to shorten.
+** m -- the max length of the string.
+**
+** Returns:
+** Either s or a short version of s.
+*/
+
+char *
+shortenstring(s, m)
+ register const char *s;
+ int m;
+{
+ int l;
+ static char buf[MAXSHORTSTR + 1];
+
+ l = strlen(s);
+ if (l < m)
+ return (char *) s;
+ if (m > MAXSHORTSTR)
+ m = MAXSHORTSTR;
+ else if (m < 10)
+ {
+ if (m < 5)
+ {
+ strncpy(buf, s, m);
+ buf[m] = '\0';
+ return buf;
+ }
+ strncpy(buf, s, m - 3);
+ strcpy(buf + m - 3, "...");
+ return buf;
+ }
+ m = (m - 3) / 2;
+ strncpy(buf, s, m);
+ strcpy(buf + m, "...");
+ strcpy(buf + m + 3, s + l - m);
+ return buf;
+}