diff -cr sendmail-8.9.1/BuildTools/M4/depend/BSD.m4 sendmail-8.9.2/BuildTools/M4/depend/BSD.m4
*** sendmail-8.9.1/BuildTools/M4/depend/BSD.m4	Tue May 19 16:33:25 1998
--- sendmail-8.9.2/BuildTools/M4/depend/BSD.m4	Tue Dec 29 09:39:20 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)BSD.m4	8.3	(Berkeley)	2/9/1998
  depend: ${BEFORE}
  	@mv Makefile Makefile.old
  	@sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
diff -cr sendmail-8.9.1/BuildTools/M4/depend/CC-M.m4 sendmail-8.9.2/BuildTools/M4/depend/CC-M.m4
*** sendmail-8.9.1/BuildTools/M4/depend/CC-M.m4	Tue May 19 16:33:25 1998
--- sendmail-8.9.2/BuildTools/M4/depend/CC-M.m4	Tue Dec 29 09:39:20 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)CC-M.m4	8.2	(Berkeley)	2/19/1998
  depend: ${BEFORE}
  	@mv Makefile Makefile.old
  	@sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
diff -cr sendmail-8.9.1/BuildTools/M4/depend/NCR.m4 sendmail-8.9.2/BuildTools/M4/depend/NCR.m4
*** sendmail-8.9.1/BuildTools/M4/depend/NCR.m4	Tue May 19 16:33:25 1998
--- sendmail-8.9.2/BuildTools/M4/depend/NCR.m4	Tue Dec 29 09:39:21 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)NCR.m4	8.3	(Berkeley)	2/19/1998
  depend: ${BEFORE}
  	@mv Makefile Makefile.old
  	@sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
diff -cr sendmail-8.9.1/BuildTools/M4/depend/Solaris.m4 sendmail-8.9.2/BuildTools/M4/depend/Solaris.m4
*** sendmail-8.9.1/BuildTools/M4/depend/Solaris.m4	Tue May 19 16:33:25 1998
--- sendmail-8.9.2/BuildTools/M4/depend/Solaris.m4	Tue Dec 29 09:39:21 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)Solaris.m4	8.1	(Berkeley)	3/5/1998
  depend: ${BEFORE}
  	@mv Makefile Makefile.old
  	@sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
diff -cr sendmail-8.9.1/BuildTools/M4/depend/X11.m4 sendmail-8.9.2/BuildTools/M4/depend/X11.m4
*** sendmail-8.9.1/BuildTools/M4/depend/X11.m4	Tue May 19 16:33:25 1998
--- sendmail-8.9.2/BuildTools/M4/depend/X11.m4	Tue Dec 29 09:39:21 1998
***************
*** 1,4 ****
! #	@(#)X11.m4	8.1	(Berkeley)	4/8/98
  depend: ${BEFORE}
  	makedepend -- ${COPTS} -- *.c
  
--- 1,4 ----
! #	@(#)X11.m4	8.1	(Berkeley)	4/8/1998
  depend: ${BEFORE}
  	makedepend -- ${COPTS} -- *.c
  
diff -cr sendmail-8.9.1/BuildTools/M4/depend/generic.m4 sendmail-8.9.2/BuildTools/M4/depend/generic.m4
*** sendmail-8.9.1/BuildTools/M4/depend/generic.m4	Tue May 19 16:33:25 1998
--- sendmail-8.9.2/BuildTools/M4/depend/generic.m4	Tue Dec 29 09:39:21 1998
***************
*** 1,4 ****
! #	@(#)generic.m4	8.2	(Berkeley)	2/9/98
  # dependencies
  #   gross overkill, and yet still not quite enough....
  ${OBJS}: ${SRCDIR}/sendmail.h ${SRCDIR}/conf.h
--- 1,4 ----
! #	@(#)generic.m4	8.2	(Berkeley)	2/9/1998
  # dependencies
  #   gross overkill, and yet still not quite enough....
  ${OBJS}: ${SRCDIR}/sendmail.h ${SRCDIR}/conf.h
diff -cr sendmail-8.9.1/BuildTools/M4/header.m4 sendmail-8.9.2/BuildTools/M4/header.m4
*** sendmail-8.9.1/BuildTools/M4/header.m4	Tue May 19 16:33:21 1998
--- sendmail-8.9.2/BuildTools/M4/header.m4	Tue Dec 29 09:39:17 1998
***************
*** 8,14 ****
  #
  #  Definitions for Makefile construction for sendmail
  #
! #	@(#)header.m4	8.14	(Berkeley)	5/19/98
  #
  changecom(^A)
  undefine(`format')
--- 8,14 ----
  #
  #  Definitions for Makefile construction for sendmail
  #
! #	@(#)header.m4	8.14	(Berkeley)	5/19/1998
  #
  changecom(^A)
  undefine(`format')
diff -cr sendmail-8.9.1/BuildTools/OS/386BSD sendmail-8.9.2/BuildTools/OS/386BSD
*** sendmail-8.9.1/BuildTools/OS/386BSD	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/386BSD	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)386BSD	8.1	(Berkeley)	1/30/98
  define(`confENVDEF', ` -DMIME')
  define(`confLIBS', `-lutil')
  define(`confLINKS', `/usr/sbin/sendmail /usr/bin/newaliases \
--- 1,4 ----
! #	@(#)386BSD	8.1	(Berkeley)	1/30/1998
  define(`confENVDEF', ` -DMIME')
  define(`confLIBS', `-lutil')
  define(`confLINKS', `/usr/sbin/sendmail /usr/bin/newaliases \
diff -cr sendmail-8.9.1/BuildTools/OS/A-UX sendmail-8.9.2/BuildTools/OS/A-UX
*** sendmail-8.9.1/BuildTools/OS/A-UX	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/A-UX	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)A-UX	8.4	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D_POSIX_SOURCE ')
  define(`confLIBS', `-ldbm -lposix -lUTIL')
--- 1,4 ----
! #	@(#)A-UX	8.4	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D_POSIX_SOURCE ')
  define(`confLIBS', `-ldbm -lposix -lUTIL')
diff -cr sendmail-8.9.1/BuildTools/OS/AIX sendmail-8.9.2/BuildTools/OS/AIX
*** sendmail-8.9.1/BuildTools/OS/AIX	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/AIX	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)AIX	8.6	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-D_AIX3 ')
  define(`confOPTIMIZE', `-g')
--- 1,4 ----
! #	@(#)AIX	8.6	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-D_AIX3 ')
  define(`confOPTIMIZE', `-g')
diff -cr sendmail-8.9.1/BuildTools/OS/AIX.2 sendmail-8.9.2/BuildTools/OS/AIX.2
*** sendmail-8.9.1/BuildTools/OS/AIX.2	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/AIX.2	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)AIX.2	8.8	(Berkeley)	3/12/98
  PUSHDIVERT(1)
  SMROOT=	/usr/local/newmail
  POPDIVERT
--- 1,4 ----
! #	@(#)AIX.2	8.8	(Berkeley)	3/12/1998
  PUSHDIVERT(1)
  SMROOT=	/usr/local/newmail
  POPDIVERT
diff -cr sendmail-8.9.1/BuildTools/OS/AIX.4.2 sendmail-8.9.2/BuildTools/OS/AIX.4.2
*** sendmail-8.9.1/BuildTools/OS/AIX.4.2	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/AIX.4.2	Tue Dec 29 09:39:49 1998
***************
*** 1,7 ****
! #	@(#)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')
--- 1,7 ----
! #	@(#)AIX.4.2	8.6	(Berkeley)	8/6/1998
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confENVDEF', `-D_AIX4=40200 ')
! define(`confOPTIMIZE', `-O3 -qstrict')
  define(`confLIBS', `-ldbm')
  define(`confSTDIR', `/etc')
  define(`confHFDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/AIX.4.3 sendmail-8.9.2/BuildTools/OS/AIX.4.3
*** sendmail-8.9.1/BuildTools/OS/AIX.4.3	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/AIX.4.3	Tue Dec 29 09:39:53 1998
***************
*** 1,7 ****
! #	@(#)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')
--- 1,7 ----
! #	@(#)AIX.4.3	8.5	(Berkeley)	8/6/1998
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confENVDEF', `-D_AIX4=40300 ')
! define(`confOPTIMIZE', `-O3 -qstrict')
  define(`confCC', `/usr/bin/xlc')
  define(`confLIBS', `-ldbm')
  define(`confSTDIR', `/etc')
diff -cr sendmail-8.9.1/BuildTools/OS/AIX.4.x sendmail-8.9.2/BuildTools/OS/AIX.4.x
*** sendmail-8.9.1/BuildTools/OS/AIX.4.x	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/AIX.4.x	Tue Dec 29 09:39:49 1998
***************
*** 1,7 ****
! #	@(#)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')
--- 1,7 ----
! #	@(#)AIX.4.x	8.8	(Berkeley)	8/6/1998
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confENVDEF', `-D_AIX4 ')
! define(`confOPTIMIZE', `-O3 -qstrict')
  define(`confLIBS', `-ldbm')
  define(`confSTDIR', `/etc')
  define(`confHFDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/Altos sendmail-8.9.2/BuildTools/OS/Altos
*** sendmail-8.9.1/BuildTools/OS/Altos	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/Altos	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)Altos	8.6	(Berkeley)	2/19/98
  define(`confCC', `gcc')
  define(`confENVDEF', `-DALTOS_SYSTEM_V ')
  define(`confLIBS', `-lsocket -lrpc')
--- 1,4 ----
! #	@(#)Altos	8.6	(Berkeley)	2/19/1998
  define(`confCC', `gcc')
  define(`confENVDEF', `-DALTOS_SYSTEM_V ')
  define(`confLIBS', `-lsocket -lrpc')
diff -cr sendmail-8.9.1/BuildTools/OS/BSD-OS sendmail-8.9.2/BuildTools/OS/BSD-OS
*** sendmail-8.9.1/BuildTools/OS/BSD-OS	Wed Jun  3 19:14:22 1998
--- sendmail-8.9.2/BuildTools/OS/BSD-OS	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)BSD-OS	8.8	(Berkeley)	6/3/98
  define(`confMAPDEF', `-DNEWDB -DMAP_REGEX')
  define(`confENVDEF', `-DNETISO')
  define(`confLIBS', `-lutil -lkvm')
--- 1,4 ----
! #	@(#)BSD-OS	8.8	(Berkeley)	6/3/1998
  define(`confMAPDEF', `-DNEWDB -DMAP_REGEX')
  define(`confENVDEF', `-DNETISO')
  define(`confLIBS', `-lutil -lkvm')
diff -cr sendmail-8.9.1/BuildTools/OS/BSD43 sendmail-8.9.2/BuildTools/OS/BSD43
*** sendmail-8.9.1/BuildTools/OS/BSD43	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/BSD43	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)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 ')
--- 1,4 ----
! #	@(#)BSD43	8.5	(Berkeley)	3/12/1998
  define(`confBEFORE', `unistd.h stddef.h stdlib.h dirent.h sys/time.h')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DoldBSD43 ')
diff -cr sendmail-8.9.1/BuildTools/OS/CLIX sendmail-8.9.2/BuildTools/OS/CLIX
*** sendmail-8.9.1/BuildTools/OS/CLIX	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/CLIX	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)CLIX	8.8	(Berkeley)	3/12/98
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DCLIX ')
--- 1,4 ----
! #	@(#)CLIX	8.8	(Berkeley)	3/12/1998
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DCLIX ')
diff -cr sendmail-8.9.1/BuildTools/OS/CRAYT3E.2.0.x sendmail-8.9.2/BuildTools/OS/CRAYT3E.2.0.x
*** sendmail-8.9.1/BuildTools/OS/CRAYT3E.2.0.x	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/CRAYT3E.2.0.x	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)CRAYT3E.2.0.x	8.1	(Berkeley)	4/21/98
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DUNICOS ')
  define(`confOPTIMIZE', `-O')
--- 1,4 ----
! #	@(#)CRAYT3E.2.0.x	8.1	(Berkeley)	4/21/1998
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DUNICOS ')
  define(`confOPTIMIZE', `-O')
diff -cr sendmail-8.9.1/BuildTools/OS/CSOS sendmail-8.9.2/BuildTools/OS/CSOS
*** sendmail-8.9.1/BuildTools/OS/CSOS	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/CSOS	Tue Dec 29 09:39:47 1998
***************
*** 1,4 ****
! #	@(#)CSOS	8.5	(Berkeley)	2/8/98
  define(`confLIBS', `-lnet')
  define(`confMBINDIR', `/usr/lib')
  define(`confSBINDIR', `/usr/etc')
--- 1,4 ----
! #	@(#)CSOS	8.5	(Berkeley)	2/8/1998
  define(`confLIBS', `-lnet')
  define(`confMBINDIR', `/usr/lib')
  define(`confSBINDIR', `/usr/etc')
diff -cr sendmail-8.9.1/BuildTools/OS/ConvexOS sendmail-8.9.2/BuildTools/OS/ConvexOS
*** sendmail-8.9.1/BuildTools/OS/ConvexOS	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/ConvexOS	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)ConvexOS	8.6	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DYPCOMPAT -DNIS')
  define(`confENVDEF', `-D__STDC__ -d non_int_bit_field')
  define(`confOPTIMIZE', `-g')
--- 1,4 ----
! #	@(#)ConvexOS	8.6	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DYPCOMPAT -DNIS')
  define(`confENVDEF', `-D__STDC__ -d non_int_bit_field')
  define(`confOPTIMIZE', `-g')
diff -cr sendmail-8.9.1/BuildTools/OS/Dell sendmail-8.9.2/BuildTools/OS/Dell
*** sendmail-8.9.1/BuildTools/OS/Dell	Tue May 19 16:33:39 1998
--- sendmail-8.9.2/BuildTools/OS/Dell	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)Dell	8.8	(Berkeley)	3/12/98
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D__svr4__ ')
--- 1,4 ----
! #	@(#)Dell	8.8	(Berkeley)	3/12/1998
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D__svr4__ ')
diff -cr sendmail-8.9.1/BuildTools/OS/DomainOS sendmail-8.9.2/BuildTools/OS/DomainOS
*** sendmail-8.9.1/BuildTools/OS/DomainOS	Wed Jun 24 21:02:38 1998
--- sendmail-8.9.2/BuildTools/OS/DomainOS	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)DomainOS	8.6	(Berkeley)	6/24/1998
  define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
  define(`confBEFORE', `unistd.h dirent.h')
  define(`confMAPDEF', `-DNDBM')
diff -cr sendmail-8.9.1/BuildTools/OS/DomainOS.10.4 sendmail-8.9.2/BuildTools/OS/DomainOS.10.4
*** sendmail-8.9.1/BuildTools/OS/DomainOS.10.4	Wed Jun 24 21:02:43 1998
--- sendmail-8.9.2/BuildTools/OS/DomainOS.10.4	Tue Dec 29 09:39:54 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)DomainOS.10.4	8.1	(Berkeley)	6/24/1998
  define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
  define(`confBEFORE', `dirent.h')
  define(`confMAPDEF', `-DNDBM')
diff -cr sendmail-8.9.1/BuildTools/OS/Dynix sendmail-8.9.2/BuildTools/OS/Dynix
*** sendmail-8.9.1/BuildTools/OS/Dynix	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/Dynix	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)Dynix	8.7	(Berkeley)	2/26/98
  define(`confCC', `gcc')
  define(`confOPTIMIZE', `-O -g')
  define(`confLIBS', `-lseq')
--- 1,4 ----
! #	@(#)Dynix	8.7	(Berkeley)	2/26/1998
  define(`confCC', `gcc')
  define(`confOPTIMIZE', `-O -g')
  define(`confLIBS', `-lseq')
diff -cr sendmail-8.9.1/BuildTools/OS/EWS-UX_V sendmail-8.9.2/BuildTools/OS/EWS-UX_V
*** sendmail-8.9.1/BuildTools/OS/EWS-UX_V	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/EWS-UX_V	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)EWS-UX_V	8.6	(Berkeley)	3/12/1998
  define(`confCC', `/usr/abiccs/bin/cc -KOlimit=900')
  define(`confBEFORE', `sysexits.h ndbm.h ndbm.o')
  define(`confMAPDEF', `-DNDBM -DNIS')
diff -cr sendmail-8.9.1/BuildTools/OS/FreeBSD sendmail-8.9.2/BuildTools/OS/FreeBSD
*** sendmail-8.9.1/BuildTools/OS/FreeBSD	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/FreeBSD	Tue Dec 29 09:39:48 1998
***************
*** 1,3 ****
! #	@(#)FreeBSD	8.5	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confLIBS', `-lutil')
--- 1,3 ----
! #	@(#)FreeBSD	8.5	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confLIBS', `-lutil')
diff -cr sendmail-8.9.1/BuildTools/OS/HP-UX sendmail-8.9.2/BuildTools/OS/HP-UX
*** sendmail-8.9.1/BuildTools/OS/HP-UX	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/HP-UX	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)HP-UX	8.9	(Berkeley)	3/14/98
  define(`confCC', `cc -Aa -D_HPUX_SOURCE')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confOPTIMIZE', `+O1')
--- 1,4 ----
! #	@(#)HP-UX	8.9	(Berkeley)	3/14/1998
  define(`confCC', `cc -Aa -D_HPUX_SOURCE')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confOPTIMIZE', `+O1')
diff -cr sendmail-8.9.1/BuildTools/OS/HP-UX.10.x sendmail-8.9.2/BuildTools/OS/HP-UX.10.x
*** sendmail-8.9.1/BuildTools/OS/HP-UX.10.x	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/HP-UX.10.x	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)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 ')
--- 1,4 ----
! #	@(#)HP-UX.10.x	8.10	(Berkeley)	3/21/1998
  define(`confCC', `cc -Aa -D_HPUX_SOURCE')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confENVDEF', `-DV4FS ')
diff -cr sendmail-8.9.1/BuildTools/OS/HP-UX.11.x sendmail-8.9.2/BuildTools/OS/HP-UX.11.x
*** sendmail-8.9.1/BuildTools/OS/HP-UX.11.x	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/HP-UX.11.x	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)HP-UX.11.x	8.7	(Berkeley)	3/30/98
  define(`confCC', `cc -Ae')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confENVDEF', `-DV4FS -DHPUX11 ')
--- 1,4 ----
! #	@(#)HP-UX.11.x	8.7	(Berkeley)	3/30/1998
  define(`confCC', `cc -Ae')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confENVDEF', `-DV4FS -DHPUX11 ')
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX sendmail-8.9.2/BuildTools/OS/IRIX
*** sendmail-8.9.1/BuildTools/OS/IRIX	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)IRIX	8.7	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DIRIX ')
  define(`confLIBS', `-lmld -lmalloc -lsun')
--- 1,4 ----
! #	@(#)IRIX	8.7	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DIRIX ')
  define(`confLIBS', `-lmld -lmalloc -lsun')
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX.5.x sendmail-8.9.2/BuildTools/OS/IRIX.5.x
*** sendmail-8.9.1/BuildTools/OS/IRIX.5.x	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX.5.x	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)IRIX.5.x	8.7	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DIRIX5 ')
  define(`confLIBS', `-lmld -lmalloc')
--- 1,4 ----
! #	@(#)IRIX.5.x	8.7	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DIRIX5 ')
  define(`confLIBS', `-lmld -lmalloc')
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX.6.5 sendmail-8.9.2/BuildTools/OS/IRIX.6.5
*** sendmail-8.9.1/BuildTools/OS/IRIX.6.5	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX.6.5	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)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)
--- 1,4 ----
! #	@(#)IRIX.6.5	8.2	(Berkeley)	4/24/1998
  PUSHDIVERT(1)
  # Select what ABI we are using -- see abi(5) for details
  #    -32	~ IRIX 5.3				(default: -mips2)
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX.6.x sendmail-8.9.2/BuildTools/OS/IRIX.6.x
*** sendmail-8.9.1/BuildTools/OS/IRIX.6.x	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX.6.x	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)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)
--- 1,4 ----
! #	@(#)IRIX.6.x	8.11	(Berkeley)	4/24/1998
  PUSHDIVERT(1)
  # Select what ABI we are using -- see abi(5) for details
  #    -32	~ IRIX 5.3				(default: -mips2)
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX64.6.0 sendmail-8.9.2/BuildTools/OS/IRIX64.6.0
*** sendmail-8.9.1/BuildTools/OS/IRIX64.6.0	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX64.6.0	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)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)
--- 1,4 ----
! #	@(#)IRIX64.6.0	8.10	(Berkeley)	3/12/1998
  PUSHDIVERT(1)
  # Select what ABI we are using -- see abi(5) for details
  #    -32	~ IRIX 5.3				(default: -mips2)
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX64.6.1 sendmail-8.9.2/BuildTools/OS/IRIX64.6.1
*** sendmail-8.9.1/BuildTools/OS/IRIX64.6.1	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX64.6.1	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)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)
--- 1,4 ----
! #	@(#)IRIX64.6.1	8.10	(Berkeley)	3/12/1998
  PUSHDIVERT(1)
  # Select what ABI we are using -- see abi(5) for details
  #    -32	~ IRIX 5.3				(default: -mips2)
Only in sendmail-8.9.2/BuildTools/OS: IRIX64.6.5
diff -cr sendmail-8.9.1/BuildTools/OS/IRIX64.6.x sendmail-8.9.2/BuildTools/OS/IRIX64.6.x
*** sendmail-8.9.1/BuildTools/OS/IRIX64.6.x	Tue May 19 16:33:40 1998
--- sendmail-8.9.2/BuildTools/OS/IRIX64.6.x	Tue Dec 29 09:39:48 1998
***************
*** 1,4 ****
! #	@(#)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)
--- 1,4 ----
! #	@(#)IRIX64.6.x	8.11	(Berkeley)	4/24/1998
  PUSHDIVERT(1)
  # Select what ABI we are using -- see abi(5) for details
  #    -32	~ IRIX 5.3				(default: -mips2)
diff -cr sendmail-8.9.1/BuildTools/OS/ISC sendmail-8.9.2/BuildTools/OS/ISC
*** sendmail-8.9.1/BuildTools/OS/ISC	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/ISC	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)ISC	8.5	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DISC_UNIX -D_POSIX_SOURCE -D_SYSV3 ')
  define(`confLIBS', `-lyp -lrpc -lndbm -linet -lcposix')
diff -cr sendmail-8.9.1/BuildTools/OS/KSR sendmail-8.9.2/BuildTools/OS/KSR
*** sendmail-8.9.1/BuildTools/OS/KSR	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/KSR	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)KSR	8.4	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
  define(`confLIBS', `-ldbm')
--- 1,4 ----
! #	@(#)KSR	8.4	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
  define(`confLIBS', `-ldbm')
diff -cr sendmail-8.9.1/BuildTools/OS/LUNA sendmail-8.9.2/BuildTools/OS/LUNA
*** sendmail-8.9.1/BuildTools/OS/LUNA	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/LUNA	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)LUNA	8.8	(Berkeley)	3/12/1998
  define(`confBEFORE', `dirent.h stddef.h stdlib.h unistd.h limits.h time.h sys/time.h')
  define(`confMAPDEF', `-DNDBM')
  define(`confMBINDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/Linux sendmail-8.9.2/BuildTools/OS/Linux
*** sendmail-8.9.1/BuildTools/OS/Linux	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/Linux	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)Linux	8.4	(Berkeley)	3/22/98
  define(`confSTDIR', `/etc')
  define(`confHFDIR', `/usr/lib')
  define(`confDEPEND_TYPE', `CC-M')
--- 1,4 ----
! #	@(#)Linux	8.4	(Berkeley)	3/22/1998
  define(`confSTDIR', `/etc')
  define(`confHFDIR', `/usr/lib')
  define(`confDEPEND_TYPE', `CC-M')
diff -cr sendmail-8.9.1/BuildTools/OS/Linux.ppc sendmail-8.9.2/BuildTools/OS/Linux.ppc
*** sendmail-8.9.1/BuildTools/OS/Linux.ppc	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/Linux.ppc	Tue Dec 29 09:39:49 1998
***************
*** 1,3 ****
! #	@(#)Linux.ppc	8.3	(Berkeley)	2/12/98
  define(`confHFDIR', `/usr/lib')
  define(`confSBINGRP', `mail')
--- 1,3 ----
! #	@(#)Linux.ppc	8.3	(Berkeley)	2/12/1998
  define(`confHFDIR', `/usr/lib')
  define(`confSBINGRP', `mail')
diff -cr sendmail-8.9.1/BuildTools/OS/Mach386 sendmail-8.9.2/BuildTools/OS/Mach386
*** sendmail-8.9.1/BuildTools/OS/Mach386	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/Mach386	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)Mach386	8.6	(Berkeley)	3/12/98
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confLIBS', `-ldbm')
--- 1,4 ----
! #	@(#)Mach386	8.6	(Berkeley)	3/12/1998
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confLIBS', `-ldbm')
diff -cr sendmail-8.9.1/BuildTools/OS/NCR.MP-RAS.2.x sendmail-8.9.2/BuildTools/OS/NCR.MP-RAS.2.x
*** sendmail-8.9.1/BuildTools/OS/NCR.MP-RAS.2.x	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/NCR.MP-RAS.2.x	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)NCR.MP-RAS.2.x	8.9	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DNCR_MP_RAS2 ')
  define(`confOPTIMIZE', `-O2')
--- 1,4 ----
! #	@(#)NCR.MP-RAS.2.x	8.9	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DNCR_MP_RAS2 ')
  define(`confOPTIMIZE', `-O2')
diff -cr sendmail-8.9.1/BuildTools/OS/NCR.MP-RAS.3.x sendmail-8.9.2/BuildTools/OS/NCR.MP-RAS.3.x
*** sendmail-8.9.1/BuildTools/OS/NCR.MP-RAS.3.x	Tue May 19 16:33:41 1998
--- sendmail-8.9.2/BuildTools/OS/NCR.MP-RAS.3.x	Tue Dec 29 09:39:50 1998
***************
*** 1,10 ****
! #	@(#)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')
--- 1,10 ----
! #	@(#)NCR.MP-RAS.3.x	8.10	(Berkeley)	8/6/1998
  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', `-lresolv -lsocket -lnsl -lelf -lc -lucb')
  define(`confMBINDIR', `/usr/ucblib')
  define(`confSBINDIR', `/usr/ucbetc')
  define(`confUBINDIR', `/usr/ucb')
diff -cr sendmail-8.9.1/BuildTools/OS/NEWS-OS.4.x sendmail-8.9.2/BuildTools/OS/NEWS-OS.4.x
*** sendmail-8.9.1/BuildTools/OS/NEWS-OS.4.x	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/NEWS-OS.4.x	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)NEWS-OS.4.x	8.6	(Berkeley)	3/12/98
  define(`confBEFORE', `limits.h')
  define(`confMAPDEF', `-DNDBM')
  define(`confLIBS', `-lmld')
--- 1,4 ----
! #	@(#)NEWS-OS.4.x	8.6	(Berkeley)	3/12/1998
  define(`confBEFORE', `limits.h')
  define(`confMAPDEF', `-DNDBM')
  define(`confLIBS', `-lmld')
diff -cr sendmail-8.9.1/BuildTools/OS/NEWS-OS.6.x sendmail-8.9.2/BuildTools/OS/NEWS-OS.6.x
*** sendmail-8.9.1/BuildTools/OS/NEWS-OS.6.x	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/NEWS-OS.6.x	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)NEWS-OS.6.x	8.8	(Berkeley)	3/12/98
  define(`confCC', `/bin/cc')
  define(`confBEFORE', `sysexits.h ndbm.o')
  define(`confMAPDEF', `-DNDBM -DNIS')
--- 1,4 ----
! #	@(#)NEWS-OS.6.x	8.8	(Berkeley)	3/12/1998
  define(`confCC', `/bin/cc')
  define(`confBEFORE', `sysexits.h ndbm.o')
  define(`confMAPDEF', `-DNDBM -DNIS')
diff -cr sendmail-8.9.1/BuildTools/OS/NEXTSTEP.4.x sendmail-8.9.2/BuildTools/OS/NEXTSTEP.4.x
*** sendmail-8.9.1/BuildTools/OS/NEXTSTEP.4.x	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/NEXTSTEP.4.x	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)NEXTSTEP.4.x	8.1	(Berkeley)	3/21/1998
  PUSHDIVERT(1)
  # NEXTSTEP 3.1 and 3.2 only support m68k and i386
  #ARCH=  -arch m68k -arch i386 -arch hppa -arch sparc
diff -cr sendmail-8.9.1/BuildTools/OS/NeXT.2.x sendmail-8.9.2/BuildTools/OS/NeXT.2.x
*** sendmail-8.9.1/BuildTools/OS/NeXT.2.x	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/NeXT.2.x	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)NeXT.2.x	8.7	(Berkeley)	3/12/98
  define(`confBEFORE', `unistd.h dirent.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
  define(`confENVDEF', `-DNeXT ')
--- 1,4 ----
! #	@(#)NeXT.2.x	8.7	(Berkeley)	3/12/1998
  define(`confBEFORE', `unistd.h dirent.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
  define(`confENVDEF', `-DNeXT ')
diff -cr sendmail-8.9.1/BuildTools/OS/NeXT.3.x sendmail-8.9.2/BuildTools/OS/NeXT.3.x
*** sendmail-8.9.1/BuildTools/OS/NeXT.3.x	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/NeXT.3.x	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)NeXT.3.x	8.7	(Berkeley)	3/12/1998
  PUSHDIVERT(1)
  # NEXTSTEP 3.1 and 3.2 only support m68k and i386
  #ARCH=  -arch m68k -arch i386 -arch hppa -arch sparc
diff -cr sendmail-8.9.1/BuildTools/OS/NeXT.4.x sendmail-8.9.2/BuildTools/OS/NeXT.4.x
*** sendmail-8.9.1/BuildTools/OS/NeXT.4.x	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/NeXT.4.x	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)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
--- 1,4 ----
! #	@(#)NeXT.4.x	8.9	(Berkeley)	7/15/1998
  PUSHDIVERT(1)
  # NEXTSTEP 3.1 and 3.2 only support m68k and i386
  #ARCH=  -arch m68k -arch i386 -arch hppa -arch sparc
***************
*** 11,17 ****
  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')
--- 11,17 ----
  define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
  define(`confLDOPTS', `${RC_CFLAGS}')
  define(`confLIBS', `-ldbm')
! define(`confMANROOT', `/usr/man/cat')
  define(`confMBINDIR', `/usr/lib')
  define(`confSBINDIR', `/usr/etc')
  define(`confUBINDIR', `/usr/ucb')
diff -cr sendmail-8.9.1/BuildTools/OS/NetBSD sendmail-8.9.2/BuildTools/OS/NetBSD
*** sendmail-8.9.1/BuildTools/OS/NetBSD	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/NetBSD	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)NetBSD	8.6	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confENVDEF', ` -DNETISO')
  define(`confDEPEND_TYPE', `CC-M')
--- 1,4 ----
! #	@(#)NetBSD	8.6	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confENVDEF', ` -DNETISO')
  define(`confDEPEND_TYPE', `CC-M')
diff -cr sendmail-8.9.1/BuildTools/OS/NetBSD.8.3 sendmail-8.9.2/BuildTools/OS/NetBSD.8.3
*** sendmail-8.9.1/BuildTools/OS/NetBSD.8.3	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/NetBSD.8.3	Tue Dec 29 09:39:50 1998
***************
*** 1,3 ****
! #	@(#)NetBSD.8.3	8.6	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confENVDEF', ` #  -DNETISO')
--- 1,3 ----
! #	@(#)NetBSD.8.3	8.6	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confENVDEF', ` #  -DNETISO')
diff -cr sendmail-8.9.1/BuildTools/OS/NonStop-UX sendmail-8.9.2/BuildTools/OS/NonStop-UX
*** sendmail-8.9.1/BuildTools/OS/NonStop-UX	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/NonStop-UX	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)NonStop-UX	8.8	(Berkeley)	3/12/98
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DNonStop_UX_BXX -D_SVID ')
--- 1,4 ----
! #	@(#)NonStop-UX	8.8	(Berkeley)	3/12/1998
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-DNonStop_UX_BXX -D_SVID ')
diff -cr sendmail-8.9.1/BuildTools/OS/OSF1 sendmail-8.9.2/BuildTools/OS/OSF1
*** sendmail-8.9.1/BuildTools/OS/OSF1	Wed Jul  1 12:27:19 1998
--- sendmail-8.9.2/BuildTools/OS/OSF1	Tue Dec 29 09:39:49 1998
***************
*** 1,4 ****
! #	@(#)OSF1	8.7	(Berkeley)	3/14/98
  define(`confCC', `cc -Olimit 1000')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confLIBS', `-ldbm')
--- 1,4 ----
! #	@(#)OSF1	8.7	(Berkeley)	3/14/1998
  define(`confCC', `cc -Olimit 1000')
  define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
  define(`confLIBS', `-ldbm')
diff -cr sendmail-8.9.1/BuildTools/OS/OpenBSD sendmail-8.9.2/BuildTools/OS/OpenBSD
*** sendmail-8.9.1/BuildTools/OS/OpenBSD	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/OpenBSD	Tue Dec 29 09:39:50 1998
***************
*** 1,3 ****
! #	@(#)OpenBSD	8.5	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confENVDEF', ` -DNETISO')
--- 1,3 ----
! #	@(#)OpenBSD	8.5	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
  define(`confENVDEF', ` -DNETISO')
diff -cr sendmail-8.9.1/BuildTools/OS/PTX sendmail-8.9.2/BuildTools/OS/PTX
*** sendmail-8.9.1/BuildTools/OS/PTX	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/PTX	Tue Dec 29 09:39:50 1998
***************
*** 1,4 ****
! #	@(#)PTX	8.6	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM')
  define(`confOPTIMIZE', `-g')
  define(`confLIBS', `-lsocket -linet -lelf -lnsl -lseq')
--- 1,4 ----
! #	@(#)PTX	8.6	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM')
  define(`confOPTIMIZE', `-g')
  define(`confLIBS', `-lsocket -linet -lelf -lnsl -lseq')
diff -cr sendmail-8.9.1/BuildTools/OS/Paragon sendmail-8.9.2/BuildTools/OS/Paragon
*** sendmail-8.9.1/BuildTools/OS/Paragon	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/Paragon	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)Paragon	8.3	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM')
  define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
  define(`confLIBS', `-ldbm')
--- 1,4 ----
! #	@(#)Paragon	8.3	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM')
  define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
  define(`confLIBS', `-ldbm')
diff -cr sendmail-8.9.1/BuildTools/OS/PowerUX sendmail-8.9.2/BuildTools/OS/PowerUX
*** sendmail-8.9.1/BuildTools/OS/PowerUX	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/PowerUX	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)PowerUX	8.5	(Berkeley)	2/12/98
  define(`confENVDEF', `-D__svr4__ ')
  define(`confLIBS', `-Bstatic -lsocket -lnsl -lelf -lgen')
  define(`confMBINDIR', `/usr/local/etc')
--- 1,4 ----
! #	@(#)PowerUX	8.5	(Berkeley)	2/12/1998
  define(`confENVDEF', `-D__svr4__ ')
  define(`confLIBS', `-Bstatic -lsocket -lnsl -lelf -lgen')
  define(`confMBINDIR', `/usr/local/etc')
diff -cr sendmail-8.9.1/BuildTools/OS/QNX sendmail-8.9.2/BuildTools/OS/QNX
*** sendmail-8.9.1/BuildTools/OS/QNX	Tue May 19 16:33:42 1998
--- sendmail-8.9.2/BuildTools/OS/QNX	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)QNX	8.4	(Berkeley)	2/19/98
  PUSHDIVERT(1)
  #
  # For this Makefile to work you must compile and install the libdb package
--- 1,4 ----
! #	@(#)QNX	8.4	(Berkeley)	2/19/1998
  PUSHDIVERT(1)
  #
  # For this Makefile to work you must compile and install the libdb package
diff -cr sendmail-8.9.1/BuildTools/OS/RISCos sendmail-8.9.2/BuildTools/OS/RISCos
*** sendmail-8.9.1/BuildTools/OS/RISCos	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/RISCos	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)RISCos	8.5	(Berkeley)	3/12/1998
  define(`confCC', `cc -systype bsd43 -Olimit 900')
  define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
  define(`confMAPDEF', `-DNDBM')
diff -cr sendmail-8.9.1/BuildTools/OS/RISCos.4_0 sendmail-8.9.2/BuildTools/OS/RISCos.4_0
*** sendmail-8.9.1/BuildTools/OS/RISCos.4_0	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/RISCos.4_0	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)RISCos.4_0	8.6	(Berkeley)	3/12/1998
  define(`confCC', `cc -systype bsd43 -Olimit 900')
  define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
  define(`confMAPDEF', `-DNDBM')
Only in sendmail-8.9.2/BuildTools/OS: Rhapsody
diff -cr sendmail-8.9.1/BuildTools/OS/SCO sendmail-8.9.2/BuildTools/OS/SCO
*** sendmail-8.9.1/BuildTools/OS/SCO	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SCO	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)SCO	8.3	(Berkeley)	2/8/98
  define(`confENVDEF', `-D_SCO_unix_ ')
  define(`confLIBS', `-lsocket -lprot_s -lx -lc_s')
  define(`confMBINDIR', `/usr/lib')
--- 1,4 ----
! #	@(#)SCO	8.3	(Berkeley)	2/8/1998
  define(`confENVDEF', `-D_SCO_unix_ ')
  define(`confLIBS', `-lsocket -lprot_s -lx -lc_s')
  define(`confMBINDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/SCO.4.2 sendmail-8.9.2/BuildTools/OS/SCO.4.2
*** sendmail-8.9.1/BuildTools/OS/SCO.4.2	Tue Jun 30 15:11:23 1998
--- sendmail-8.9.2/BuildTools/OS/SCO.4.2	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)SCO.4.2	8.5	(Berkeley)	6/30/1998
  define(`confENVDEF', `-D_SCO_unix_4_2 ')
  define(`confLIBS', `-lsocket -lndbm -lprot_s -lx -lc_s')
  define(`confMAPDEF', `-DNDBM')
diff -cr sendmail-8.9.1/BuildTools/OS/SCO.5.x sendmail-8.9.2/BuildTools/OS/SCO.5.x
*** sendmail-8.9.1/BuildTools/OS/SCO.5.x	Tue Jun 30 15:11:23 1998
--- sendmail-8.9.2/BuildTools/OS/SCO.5.x	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)SCO.5.x	8.10	(Berkeley)	6/30/1998
  define(`confCC', `cc -b elf')
  define(`confLIBS', `-lsocket -lndbm -lprot -lcurses -lm -lx -lgen')
  define(`confMAPDEF', `-DMAP_REGEX -DNDBM')
diff -cr sendmail-8.9.1/BuildTools/OS/SINIX sendmail-8.9.2/BuildTools/OS/SINIX
*** sendmail-8.9.1/BuildTools/OS/SINIX	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SINIX	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)SINIX	8.5	(Berkeley)	2/12/98
  define(`confCC', `/usr/bin/cc')
  define(`confENVDEF', `-D__svr4__ ')
  define(`confLIBS', `-lsocket -lnsl -lelf')
--- 1,4 ----
! #	@(#)SINIX	8.5	(Berkeley)	2/12/1998
  define(`confCC', `/usr/bin/cc')
  define(`confENVDEF', `-D__svr4__ ')
  define(`confLIBS', `-lsocket -lnsl -lelf')
diff -cr sendmail-8.9.1/BuildTools/OS/SVR4 sendmail-8.9.2/BuildTools/OS/SVR4
*** sendmail-8.9.1/BuildTools/OS/SVR4	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SVR4	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)SVR4	8.6	(Berkeley)	3/12/98
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D__svr4__ ')
--- 1,4 ----
! #	@(#)SVR4	8.6	(Berkeley)	3/12/1998
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D__svr4__ ')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS sendmail-8.9.2/BuildTools/OS/SunOS
*** sendmail-8.9.1/BuildTools/OS/SunOS	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)SunOS	8.6	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLDOPTS', `-Bstatic')
  define(`confMBINDIR', `/usr/lib')
--- 1,4 ----
! #	@(#)SunOS	8.6	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLDOPTS', `-Bstatic')
  define(`confMBINDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.4.0 sendmail-8.9.2/BuildTools/OS/SunOS.4.0
*** sendmail-8.9.1/BuildTools/OS/SunOS.4.0	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.4.0	Tue Dec 29 09:39:51 1998
***************
*** 1,4 ****
! #	@(#)SunOS.4.0	8.6	(Berkeley)	3/12/98
  define(`confBEFORE', `stdlib.h stddef.h limits.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DSUNOS403 ')
--- 1,4 ----
! #	@(#)SunOS.4.0	8.6	(Berkeley)	3/12/1998
  define(`confBEFORE', `stdlib.h stddef.h limits.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DSUNOS403 ')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.1 sendmail-8.9.2/BuildTools/OS/SunOS.5.1
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.1	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.1	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.1	8.8	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
--- 1,4 ----
! #	@(#)SunOS.5.1	8.8	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.2 sendmail-8.9.2/BuildTools/OS/SunOS.5.2
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.2	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.2	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.2	8.8	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
--- 1,4 ----
! #	@(#)SunOS.5.2	8.8	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.3 sendmail-8.9.2/BuildTools/OS/SunOS.5.3
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.3	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.3	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.3	8.8	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
--- 1,4 ----
! #	@(#)SunOS.5.3	8.8	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.4 sendmail-8.9.2/BuildTools/OS/SunOS.5.4
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.4	Tue May 19 16:33:43 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.4	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.4	8.10	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
--- 1,4 ----
! #	@(#)SunOS.5.4	8.10	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.5 sendmail-8.9.2/BuildTools/OS/SunOS.5.5
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.5	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.5	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.5	8.11	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
--- 1,4 ----
! #	@(#)SunOS.5.5	8.11	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.6 sendmail-8.9.2/BuildTools/OS/SunOS.5.6
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.6	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.6	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.6	8.10	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
--- 1,4 ----
! #	@(#)SunOS.5.6	8.10	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
diff -cr sendmail-8.9.1/BuildTools/OS/SunOS.5.7 sendmail-8.9.2/BuildTools/OS/SunOS.5.7
*** sendmail-8.9.1/BuildTools/OS/SunOS.5.7	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/SunOS.5.7	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)SunOS.5.7	8.11	(Berkeley)	3/21/98
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
--- 1,4 ----
! #	@(#)SunOS.5.7	8.11	(Berkeley)	3/21/1998
  define(`confCC', `gcc')
  define(`confBEFORE', `sysexits.h')
  define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
diff -cr sendmail-8.9.1/BuildTools/OS/Titan sendmail-8.9.2/BuildTools/OS/Titan
*** sendmail-8.9.1/BuildTools/OS/Titan	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/Titan	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)Titan	8.5	(Berkeley)	3/12/98
  define(`confCC', `cc -43')
  define(`confBEFORE', `stddef.h stdlib.h')
  define(`confMAPDEF', `-DNDBM')
--- 1,4 ----
! #	@(#)Titan	8.5	(Berkeley)	3/12/1998
  define(`confCC', `cc -43')
  define(`confBEFORE', `stddef.h stdlib.h')
  define(`confMAPDEF', `-DNDBM')
diff -cr sendmail-8.9.1/BuildTools/OS/ULTRIX sendmail-8.9.2/BuildTools/OS/ULTRIX
*** sendmail-8.9.1/BuildTools/OS/ULTRIX	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/ULTRIX	Tue Dec 29 09:39:52 1998
***************
*** 1,5 ****
! #	@(#)ULTRIX	8.7	(Berkeley)	3/12/98
! define(`confCC', `cc -Olimit 950')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DIDENTPROTO=0 ')
  define(`confMBINDIR', `/usr/lib')
--- 1,5 ----
! #	@(#)ULTRIX	8.8	(Berkeley)	12/18/1998
! define(`confCC', `cc -Olimit 970')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DIDENTPROTO=0 ')
  define(`confMBINDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/UMAX sendmail-8.9.2/BuildTools/OS/UMAX
*** sendmail-8.9.1/BuildTools/OS/UMAX	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/UMAX	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)UMAX	8.5	(Berkeley)	3/12/98
  define(`confBEFORE', `stddef.h')
  define(`confMAPDEF', `-DNIS')
  define(`confENVDEF', `-DUMAXV ')
--- 1,4 ----
! #	@(#)UMAX	8.5	(Berkeley)	3/12/1998
  define(`confBEFORE', `stddef.h')
  define(`confMAPDEF', `-DNIS')
  define(`confENVDEF', `-DUMAXV ')
diff -cr sendmail-8.9.1/BuildTools/OS/UNICOS sendmail-8.9.2/BuildTools/OS/UNICOS
*** sendmail-8.9.1/BuildTools/OS/UNICOS	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/UNICOS	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)UNICOS	8.7	(Berkeley)	2/26/98
  define(`confENVDEF', `-DUNICOS ')
  define(`confOPTIMIZE', `-O')
  define(`confMBINDIR', `/usr/lib')
--- 1,4 ----
! #	@(#)UNICOS	8.7	(Berkeley)	2/26/1998
  define(`confENVDEF', `-DUNICOS ')
  define(`confOPTIMIZE', `-O')
  define(`confMBINDIR', `/usr/lib')
diff -cr sendmail-8.9.1/BuildTools/OS/UNIX_SV.4.x.i386 sendmail-8.9.2/BuildTools/OS/UNIX_SV.4.x.i386
*** sendmail-8.9.1/BuildTools/OS/UNIX_SV.4.x.i386	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/UNIX_SV.4.x.i386	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)UNIX_SV.4.x.i386	8.6	(Berkeley)	3/12/98
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D__svr4__ -DUNIXWARE ')
--- 1,4 ----
! #	@(#)UNIX_SV.4.x.i386	8.6	(Berkeley)	3/12/1998
  define(`confCC', `gcc')
  define(`confMAPDEF', `-DNDBM')
  define(`confENVDEF', `-D__svr4__ -DUNIXWARE ')
diff -cr sendmail-8.9.1/BuildTools/OS/UX4800 sendmail-8.9.2/BuildTools/OS/UX4800
*** sendmail-8.9.1/BuildTools/OS/UX4800	Thu Jun 18 10:47:29 1998
--- sendmail-8.9.2/BuildTools/OS/UX4800	Tue Dec 29 09:39:52 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)UX4800	8.8	(Berkeley)	3/12/1998
  define(`confCC', `/usr/abiccs/bin/cc -KOlimit=900')
  define(`confBEFORE', `sysexits.h ndbm.h')
  define(`confMAPDEF', `-DNDBM -DNIS		# without NEWDB')
diff -cr sendmail-8.9.1/BuildTools/OS/UXPDS.V10 sendmail-8.9.2/BuildTools/OS/UXPDS.V10
*** sendmail-8.9.1/BuildTools/OS/UXPDS.V10	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/UXPDS.V10	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)UXPDS.V10	8.9	(Berkeley)	3/12/98
  define(`confCC', `/usr/ccs/bin/cc')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DUXPDS=10 ')
--- 1,4 ----
! #	@(#)UXPDS.V10	8.9	(Berkeley)	3/12/1998
  define(`confCC', `/usr/ccs/bin/cc')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confENVDEF', `-DUXPDS=10 ')
diff -cr sendmail-8.9.1/BuildTools/OS/UXPDS.V20 sendmail-8.9.2/BuildTools/OS/UXPDS.V20
*** sendmail-8.9.1/BuildTools/OS/UXPDS.V20	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/UXPDS.V20	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)UXPDS.V20	8.8	(Berkeley)	3/12/98
  define(`confCC', `/usr/ccs/bin/cc')
  define(`confBEFORE', `netinet/ip_var.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
--- 1,4 ----
! #	@(#)UXPDS.V20	8.8	(Berkeley)	3/12/1998
  define(`confCC', `/usr/ccs/bin/cc')
  define(`confBEFORE', `netinet/ip_var.h')
  define(`confMAPDEF', `-DNDBM -DNIS')
Only in sendmail-8.9.2/BuildTools/OS: UnixWare.5.i386
diff -cr sendmail-8.9.1/BuildTools/OS/dcosx.1.x.NILE sendmail-8.9.2/BuildTools/OS/dcosx.1.x.NILE
*** sendmail-8.9.1/BuildTools/OS/dcosx.1.x.NILE	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/dcosx.1.x.NILE	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)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')
--- 1,4 ----
! #	@(#)dcosx.1.x.NILE	8.3	(Berkeley)	2/8/1998
  define(`confENVDEF', `-D__svr4__ -DDCOSx ')
  define(`confLIBS', `-lsocket -lnsl -lelf')
  define(`confHFDIR', `/usr/share/lib/mail')
diff -cr sendmail-8.9.1/BuildTools/OS/dgux sendmail-8.9.2/BuildTools/OS/dgux
*** sendmail-8.9.1/BuildTools/OS/dgux	Tue May 19 16:33:44 1998
--- sendmail-8.9.2/BuildTools/OS/dgux	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)dgux	8.5	(Berkeley)	3/12/98
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLIBS', `-ldbm')
  define(`confMBINDIR', `/usr/bin')
--- 1,4 ----
! #	@(#)dgux	8.5	(Berkeley)	3/12/1998
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLIBS', `-ldbm')
  define(`confMBINDIR', `/usr/bin')
diff -cr sendmail-8.9.1/BuildTools/OS/maxion sendmail-8.9.2/BuildTools/OS/maxion
*** sendmail-8.9.1/BuildTools/OS/maxion	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/maxion	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)maxion	8.6	(Berkeley)	3/12/98
  define(`confCC', `/usr/ucb/cc')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLIBDIRS', `-L/usr/ucblib')
--- 1,4 ----
! #	@(#)maxion	8.6	(Berkeley)	3/12/1998
  define(`confCC', `/usr/ucb/cc')
  define(`confMAPDEF', `-DNDBM -DNIS')
  define(`confLIBDIRS', `-L/usr/ucblib')
diff -cr sendmail-8.9.1/BuildTools/OS/uts.systemV sendmail-8.9.2/BuildTools/OS/uts.systemV
*** sendmail-8.9.1/BuildTools/OS/uts.systemV	Tue May 19 16:33:45 1998
--- sendmail-8.9.2/BuildTools/OS/uts.systemV	Tue Dec 29 09:39:53 1998
***************
*** 1,4 ****
! #	@(#)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.
--- 1,4 ----
! #	@(#)uts.systemV	8.10	(Berkeley)	3/12/1998
  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.
diff -cr sendmail-8.9.1/BuildTools/README sendmail-8.9.2/BuildTools/README
*** sendmail-8.9.1/BuildTools/README	Tue Jun 30 23:06:45 1998
--- sendmail-8.9.2/BuildTools/README	Tue Dec 29 09:39:14 1998
***************
*** 107,110 ****
  confUBINMODE	    555			The mode for user-executable binaries.
  
  
! @(#)README	8.22 (Berkeley) 6/30/98
--- 107,110 ----
  confUBINMODE	    555			The mode for user-executable binaries.
  
  
! @(#)README	8.22 (Berkeley) 6/30/1998
diff -cr sendmail-8.9.1/BuildTools/Site/README sendmail-8.9.2/BuildTools/Site/README
*** sendmail-8.9.1/BuildTools/Site/README	Tue May 19 16:33:50 1998
--- sendmail-8.9.2/BuildTools/Site/README	Tue Dec 29 09:40:01 1998
***************
*** 13,16 ****
  
  See the README in the BuildTools directory for more information.
  
! @(#)README	8.3 (Berkeley) 3/27/98
--- 13,16 ----
  
  See the README in the BuildTools directory for more information.
  
! @(#)README	8.3 (Berkeley) 3/27/1998
diff -cr sendmail-8.9.1/BuildTools/bin/Build sendmail-8.9.2/BuildTools/bin/Build
*** sendmail-8.9.1/BuildTools/bin/Build	Wed Jun 24 21:10:11 1998
--- sendmail-8.9.2/BuildTools/bin/Build	Tue Dec 29 09:40:09 1998
***************
*** 10,16 ****
  # the sendmail distribution.
  #
  #
! #       @(#)Build	8.93 (Berkeley) 6/24/98
  #
  
  #
--- 10,16 ----
  # the sendmail distribution.
  #
  #
! #       @(#)Build	8.93 (Berkeley) 6/24/1998
  #
  
  #
diff -cr sendmail-8.9.1/BuildTools/bin/configure.sh sendmail-8.9.2/BuildTools/bin/configure.sh
*** sendmail-8.9.1/BuildTools/bin/configure.sh	Tue May 19 16:33:54 1998
--- sendmail-8.9.2/BuildTools/bin/configure.sh	Tue Dec 29 09:40:09 1998
***************
*** 7,13 ****
  # the sendmail distribution.
  #
  #
! #	@(#)configure.sh	8.27 (Berkeley) 5/19/98
  
  #
  #  Special script to autoconfigure for M4 generation of Makefile
--- 7,13 ----
  # the sendmail distribution.
  #
  #
! #	@(#)configure.sh	8.27 (Berkeley) 5/19/1998
  
  #
  #  Special script to autoconfigure for M4 generation of Makefile
diff -cr sendmail-8.9.1/BuildTools/bin/find_m4.sh sendmail-8.9.2/BuildTools/bin/find_m4.sh
*** sendmail-8.9.1/BuildTools/bin/find_m4.sh	Tue May 19 16:33:54 1998
--- sendmail-8.9.2/BuildTools/bin/find_m4.sh	Tue Dec 29 09:40:09 1998
***************
*** 7,13 ****
  # the sendmail distribution.
  #
  #
! #       @(#)find_m4.sh	8.4 (Berkeley) 5/19/98
  #
  
  # Try to find a working M4 program.
--- 7,13 ----
  # the sendmail distribution.
  #
  #
! #       @(#)find_m4.sh	8.4 (Berkeley) 5/19/1998
  #
  
  # Try to find a working M4 program.
diff -cr sendmail-8.9.1/BuildTools/bin/install.sh sendmail-8.9.2/BuildTools/bin/install.sh
*** sendmail-8.9.1/BuildTools/bin/install.sh	Tue May 19 16:33:54 1998
--- sendmail-8.9.2/BuildTools/bin/install.sh	Tue Dec 29 09:40:09 1998
***************
*** 7,13 ****
  # the sendmail distribution.
  #
  #
! #	@(#)install.sh	8.9 (Berkeley) 5/19/98
  
  # Set default program
  program=mv
--- 7,13 ----
  # the sendmail distribution.
  #
  #
! #	@(#)install.sh	8.9 (Berkeley) 5/19/1998
  
  # Set default program
  program=mv
diff -cr sendmail-8.9.1/KNOWNBUGS sendmail-8.9.2/KNOWNBUGS
*** sendmail-8.9.1/KNOWNBUGS	Tue Jun 30 14:44:31 1998
--- sendmail-8.9.2/KNOWNBUGS	Tue Dec 29 09:39:08 1998
***************
*** 65,73 ****
  
  * accept() problem on Linux.
  
!   Apparently, the accept() in sendmail daemon loop can return ETIMEDOUT
!   and cause sendmail to sleep for 5 seconds during which time no new
!   connections will be accepted.  An error is reported to syslog:
  
    Jun  9 17:14:12 hostname sendmail[207]: NOQUEUE: SYSERR(root):
  			getrequests: accept: Connection timed out
--- 65,72 ----
  
  * accept() problem on Linux.
  
!   The accept() in sendmail daemon loop can return ETIMEDOUT.  An
!   error is reported to syslog:
  
    Jun  9 17:14:12 hostname sendmail[207]: NOQUEUE: SYSERR(root):
  			getrequests: accept: Connection timed out
***************
*** 143,147 ****
    MustQuoteChars even though it is not listed as a special character in
    STD 11.
  
  
! (Version 8.32, last updated 6/30/98)
--- 142,153 ----
    MustQuoteChars even though it is not listed as a special character in
    STD 11.
  
+ * bestmx map with -z flag truncates the list of MX hosts
  
!   A bestmx map configured with the -z flag will truncate the list
!   of MX hosts.  This prevents creation of strings which are too
!   long for ruleset parsing.  This can have an adverse effect on the
!   relay_based_on_MX feature.
! 
! 
! (Version 8.34, last updated 12/17/1998)
diff -cr sendmail-8.9.1/LICENSE sendmail-8.9.2/LICENSE
*** sendmail-8.9.1/LICENSE	Wed Jun 24 18:53:02 1998
--- sendmail-8.9.2/LICENSE	Tue Dec 29 09:39:10 1998
***************
*** 86,89 ****
     (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)
--- 86,89 ----
     (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/1998)
diff -cr sendmail-8.9.1/Makefile sendmail-8.9.2/Makefile
*** sendmail-8.9.1/Makefile	Tue May 19 16:33:00 1998
--- sendmail-8.9.2/Makefile	Tue Dec 29 09:39:10 1998
***************
*** 1,4 ****
! #       @(#)Makefile.dist	8.2 (Berkeley) 2/17/98
  
  SHELL= /bin/sh
  SUBDIRS= src mail.local mailstats makemap praliases rmail smrsh
--- 1,4 ----
! #       @(#)Makefile.dist	8.2 (Berkeley) 2/17/1998
  
  SHELL= /bin/sh
  SUBDIRS= src mail.local mailstats makemap praliases rmail smrsh
diff -cr sendmail-8.9.1/README sendmail-8.9.2/README
*** sendmail-8.9.1/README	Tue May 19 17:17:40 1998
--- sendmail-8.9.2/README	Tue Dec 29 09:39:10 1998
***************
*** 1,5 ****
  /*-
!  *	@(#)README	8.48 (Berkeley) 5/19/98
   */
  
  			SENDMAIL RELEASE 8
--- 1,5 ----
  /*-
!  *	@(#)README	8.50 (Berkeley) 12/17/1998
   */
  
  			SENDMAIL RELEASE 8
***************
*** 13,23 ****
  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.
--- 13,24 ----
  the latest updates.
  
  ******************************************************************
! **  A new Build architecture is in place that allows you to	**
! **  use the "Build" shell script in any of the program		**
! **  directories.  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.
***************
*** 232,237 ****
--- 233,239 ----
  	RFC1894	An Extensible Message Format for Delivery Status
  		Notifications
  	RFC1985	SMTP Service Extension for Remote Message Queue Starting
+ 	RFC2033 Local Mail Transfer Protocol
  
  Other standards that may be of interest (but which are less directly
  relevant to sendmail) are:
diff -cr sendmail-8.9.1/RELEASE_NOTES sendmail-8.9.2/RELEASE_NOTES
*** sendmail-8.9.1/RELEASE_NOTES	Thu Jul  2 11:06:17 1998
--- sendmail-8.9.2/RELEASE_NOTES	Tue Dec 29 10:34:13 1998
***************
*** 1,11 ****
  			SENDMAIL RELEASE NOTES
! 	     @(#)RELEASE_NOTES	8.9.1.1 (Berkeley) 7/2/98
  
  
  This listing shows the version of the sendmail binary, the version
  of the sendmail configuration files, the date of release, and a
  summary of the changes in that release.
  
  8.9.1/8.9.1	98/07/02
  	If both an OS specific site configuration file and a generic
  		site.config.m4 file existed, only the latter was used
--- 1,187 ----
  			SENDMAIL RELEASE NOTES
! 	     @(#)RELEASE_NOTES	8.9.2.4 (Berkeley) 12/29/1998
  
  
  This listing shows the version of the sendmail binary, the version
  of the sendmail configuration files, the date of release, and a
  summary of the changes in that release.
  
+ 8.9.2/8.9.2	98/12/30
+ 	SECURITY: Remove five second sleep on accepting daemon connections
+ 		due to an accept() failure.  This sleep could be used
+ 		for a denial of service attack.
+ 	Do not silently ignore queue files with names which are too long.
+ 		Patch from Bryan Costales of InfoBeat, Inc.
+ 	Do not store failures closing an SMTP session in persistent
+ 		host status.  Reported by Graeme Hewson of Oracle
+ 		Corporation UK.
+ 	Allow symbolic link forward files if they are in safe directories.
+ 		Problem noted by Andreas Schott of the Max Planck Society.
+ 	Missing columns in a text map could cause a segmentation fault.
+ 		Fix from David Lee of the University of Durham.
+ 	Note that for 8.9.X, PrivacyFlags=goaway also includes the
+ 		noetrn flag.  This is scheduled to change in a future
+ 		version of sendmail.  Problem noted by Theo Van Dinter of
+ 		Chrysalis Symbolic Designa and Alan Brown of Manawatu
+ 		Internet Services.
+ 	When trying to do host canonification in a Wildcard MX
+ 		environment, try an MX lookup of the hostname without the
+ 		default domain appended.  Problem noted by Olaf Seibert of
+ 		Polderland Language & Speech Technology.
+ 	Reject SMTP RCPT To: commands with only comments (i.e.
+ 		'RCPT TO: (comment)'.  Problem noted by Earle Ake of
+ 		Hassler Communication Systems Technology, Inc.
+ 	Handle any number of %s in the LDAP filter spec.  Patch from
+ 		Per Hedeland of Ericsson.
+ 	Clear ldapx open timeouts even if the map open failed to prevent
+ 		a segmentation fault.  Patch from Wayne Knowles of the
+ 		National Institute of Water & Atmospheric Research Ltd.
+ 	Do not syslog envelope clone messages when using address
+ 		verification (-bv).  Problem noted by Kari Hurtta of the
+ 		Finnish Meteorological Institute.
+ 	Continue to perform queue runs while in daemon mode even if the
+ 		daemon is rejecting connections due to a disk full
+ 		condition.  Problem noted by JR Oldroyd of TerraNet
+ 		Internet Services.
+ 	Include full filename on installation of the sendmail.hf file
+ 		in case the $HFDIR directory does not exist.  Problem
+ 		noted by Josef Svitak of Montana State University.
+ 	Close all maps when exiting the process with one exception.
+         	Berkeley DB can use internal shared memory locking for
+         	its memory pool.  Closing a map opened by another process
+         	will interfere with the shared memory and locks of the
+         	parent process leaving things in a bad state.  For
+ 		Berkeley DB, only close the map if the current process
+ 		is also the one that opened the map, otherwise only close
+ 		the map file descriptor.  Thanks to Yoseff Francus of
+ 		Collective Technologies for volunteering his system for
+ 		extended testing.
+ 	Avoid null pointer dereference on XDEBUG output for SMTP reply
+ 		failures.  Problem noted by Carlos Canau of EUnet Portugal.
+ 	On mailq and hoststat listings being piped to another program, such
+ 		as more, if the pipe closes (i.e. the user quits more),
+ 		stop sending output and exit.  Patch from Allan E Johannesen
+ 		of Worcester Polytechnic Institute.
+ 	In accordance with the documentation, LDAP map lookup failures
+ 		are now considered temporary failures instead of permanent
+ 		failures unless the -t flag is used in the map definition.
+ 		Problem noted by Booker Bense of Stanford University and
+ 		Eric C. Hagberg of Morgan Stanley.
+ 	Fix by one error reporting on long alias names.  Problem noted by
+ 		H. Paul Hammann of the Missouri Research and Education
+ 		Network.
+ 	Fix DontBlameSendmail=IncludeFileInUnsafeDirPath behavior.  Problem
+ 		noted by Barry S. Finkel of Argonne National Laboratory.
+ 	When automatically converting from 8 bit to quoted printable MIME,
+ 		be careful not to miss a multi-part boundary if that
+ 		boundary is preceded by a boundary-like line.  Problem
+ 		noted by Andreas Raschle of Ansid Inc.  Fix from
+ 		Kari Hurtta of the Finnish Meteorological Institute.
+ 	Avoid bogus reporting of "LMTP tobuf overflow" when the buffer
+ 		has enough space for the additional address.  Problem
+ 		noted by Steve Cliffe of the University of Wollongong.
+ 	Fix DontBlameSendmail=FileDeliveryToSymlinks behavior.  Problem
+ 		noted by Alex Vorobiev of Swarthmore College.
+ 	If the check_compat ruleset resolves to the $#discard mailer,
+ 		discard the current recipient.  Unlike check_relay,
+ 		check_mail, and check_rcpt, the entire envelope is not
+ 		discarded.  Problem noted by RZ D. Rahlfs.  Fix from
+ 		Claus Assmann of Christian-Albrechts-University of Kiel.
+ 	Avoid segmentation fault when reading ServiceSwitch files with
+ 		bogus formatting.  Patch from Kari Hurtta of the Finnish
+ 		Meteorological Institute.
+ 	Support Berkeley DB 2.6.4 API change.
+ 	OP.ME: Pages weren't properly output on duplexed printers.  Fix
+ 		from Matthew Black of CSU Long Beach.
+ 	Portability:
+ 		Apple Rhapsody from Wilfredo Sanchez of Apple Computer, Inc.
+ 		Avoid a clash with IRIX 6.2 getopt.h and the UserDatabase
+ 			option structure.  Problem noted by Ashley M.
+ 			Kirchner of Photo Craft Laboratories, Inc.
+ 		Break out IP address to hostname translation for
+ 			reading network interface addresses into
+ 			class 'w'.  Patch from John Kennedy of
+ 			Cal State University, Chico.
+ 		AIX 4.x use -qstrict with -O3 to prevent the optimized
+ 			from changing the semantics of the compiled
+ 			program.  From Simon Travaglia of the
+ 			University of Waikato, New Zealand.
+ 		FreeBSD 2.2.2 and later support setusercontext().  From
+ 			Peter Wemm of DIALix.
+ 		FreeBSD 3.x fix from Peter Wemm of DIALix.
+ 		IRIX 5.x has a syslog buffer size of 512 bytes.  From
+ 			Nao NINOMIYA of Utsunomiya University.
+ 		IRIX 6.5 64-bit Build support.
+ 		LDAP Version 3 support from John Beck and Ravi Iyer
+ 			of Sun Microsystems.
+ 		Linux does not implement seteuid() properly.  From
+ 			John Kennedy of Cal State University, Chico.
+ 		Linux timezone type was set improperly.  From Takeshi Itoh
+ 			of Bits Co., Ltd.
+ 		NCR MP-RAS 3.x needs -lresolv for confLIBS.  From
+ 			Tom J. Moore of NCR.
+ 		NeXT 4.x correction to man page path.  From J. P. McCann
+ 			of E I A.
+ 		System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatibility Libs)
+ 			from Paul Gampe of the Asia Pacific Network
+ 			Information Center.
+ 		ULTRIX now requires an optimization limit of 970 from
+ 			Allan E Johannesen of Worcester Polytechnic
+ 			Institute.
+ 		Fix extern declaration for sm_dopr().  Fix from Henk
+ 			van Oers of Algemeen Nederlands Persbureau.
+ 	CONFIG: Catch @hostname,user@anotherhost.domain as relaying.
+ 		Problem noted by Mark Rogov of AirMedia, Inc.  Fix from
+ 		Claus Assmann of Christian-Albrechts-University of Kiel.
+ 	CONFIG: Do not refer to http://maps.vix.com/ on RBL rejections as
+ 		there are multiple RBL's available and the MAPS RBL may
+ 		not be the one in use.  Suggested by Alan Brown of
+ 		Manawatu Internet Services.
+ 	CONFIG: Properly strip route addresses (i.e. @host1:user@host2)
+ 		when stripping down a recipient address to check for
+ 		relaying.  Patch from Claus Assmann of
+ 		Christian-Albrechts-University of Kiel and Neil W Rickert
+ 		of Northern Illinois University.
+ 	CONFIG: Allow the access database to override RBL lookups.  Patch
+ 		from Claus Assmann of Christian-Albrechts-University of
+ 		Kiel.
+ 	CONFIG: UnixWare 7 support from Phillip P. Porch of The Porch
+ 		Dot Com.
+ 	CONFIG: Fixed check for deferred delivery mode warning.  Patch
+ 		from Claus Assmann of Christian-Albrechts-University of
+                 Kiel and Per Hedeland of Ericsson.
+ 	CONFIG: If a recipient using % addressing is used, e.g.
+ 		user%site@othersite, and othersite's MX records are now
+ 		checked for local hosts if FEATURE(relay_based_on_MX) is
+ 		used.  Problem noted by Alexander Litvin of Lucky Net Ltd.
+ 		Patch from Alexander Litvin of Lucky Net Ltd and
+ 		Claus Assmann of Christian-Albrechts-University of Kiel.
+ 	MAIL.LOCAL: Prevent warning messages from appearing in the LMTP
+ 		stream.  Do not allow more than one response per recipient.
+ 	MAIL.LOCAL: Handle routed addresses properly when using LMTP.  Fix
+ 		from John Beck of Sun Microsystems.
+ 	MAIL.LOCAL: Properly check for CRLF when using LMTP.  Fix from
+ 		John Beck of Sun Microsystems.
+ 	MAIL.LOCAL: Substitute MAILER-DAEMON for the LMTP empty sender in
+ 		the envelope From header.
+ 	MAIL.LOCAL: Accept underscores in hostnames in LMTP mode.
+ 		Problem noted by Glenn A. Malling of Syracuse University.
+ 	MAILSTATS: Document msgsrej and msgsdis fields in the man page.
+ 		Problem noted by Richard Wong of Princeton University.
+ 	MAKEMAP: Build group list so group writable files are allowed with
+ 		the -s flag.  Problem noted by Curt Sampson of Internet
+ 		Portal Services, Inc.
+ 	PRALIASES: Automatically handle alias files created without the
+ 		NULL byte at the end of the key.  Patch from John Beck of
+ 		Sun Microsystems.
+ 	PRALIASES: Support Berkeley DB 2.6.4 API change.
+ 	New Files:
+ 		BuildTools/OS/IRIX64.6.5
+ 		BuildTools/OS/UnixWare.5.i386
+ 		cf/cf/unixware7.m4
+ 		contrib/smcontrol.pl
+ 		src/control.c
+ 
  8.9.1/8.9.1	98/07/02
  	If both an OS specific site configuration file and a generic
  		site.config.m4 file existed, only the latter was used
***************
*** 88,93 ****
--- 264,271 ----
  	RMAIL: Do not install rmail by default, require 'make force-install'
  		as this rmail isn't the same as others.  Suggested by
  		Kari Hurtta of the Finnish Meteorological Institute.
+ 	New Files:
+ 		BuildTools/OS/DomainOS.10.4
  
  8.9.0/8.9.0	98/05/19
  	SECURITY: To prevent users from reading files not normally
diff -cr sendmail-8.9.1/cf/README sendmail-8.9.2/cf/README
*** sendmail-8.9.1/cf/README	Tue Jun 30 14:16:35 1998
--- sendmail-8.9.2/cf/README	Tue Dec 29 09:53:55 1998
***************
*** 4,10 ****
  
  		Eric Allman <eric@Sendmail.ORG>
  
! 		@(#)README	8.174 (Berkeley) 6/30/98
  
  
  This document describes the sendmail configuration files being used
--- 4,10 ----
  
  		Eric Allman <eric@Sendmail.ORG>
  
! 		@(#)README	8.184 (Berkeley) 12/29/1998
  
  
  This document describes the sendmail configuration files being used
***************
*** 719,724 ****
--- 719,727 ----
  		they are qualified with the masquerade name, which
  		defaults to the name of the hub machine).  No mailers
  		should be defined.  No aliasing or forwarding is done.
+ 		Also, note that absolutely no anti-spam or anti-relaying
+ 		is done in a null client configuration.  More information
+ 		can be found in the ANTI-SPAM CONFIGURATION CONTROL section.
  
  local_lmtp	Use an LMTP capable local mailer.  The argument to this
  		feature is the pathname of an LMTP capable mailer.  By
***************
*** 783,796 ****
  
  relay_based_on_MX
  		Turns on the ability to allow relaying based on the MX
! 		records of the host portion of an incoming recipient.  See
  		description below for more information before using this
! 		feature.
  
  relay_local_from
  		Allows relaying if the domain portion of the mail sender
  		is a local host.  This should only be used if absolutely
! 		necessary as it opens a window for spammers.
  		
  accept_unqualified_senders
  		Normally, MAIL FROM: commands in the SMTP session will be
--- 786,812 ----
  
  relay_based_on_MX
  		Turns on the ability to allow relaying based on the MX
! 		records of the host portion of an incoming recipient; that
! 		is, if an MX record for host foo.com points to your site,
! 		you will accept and relay mail addressed to foo.com.  See
  		description below for more information before using this
! 		feature.  Also, see the KNOWNBUGS entry regarding bestmx
! 		map lookups.
! 
! 		FEATURE(relay_based_on_MX) does not necessarily allow
! 		routing of these messages which you expect to be allowed,
! 		if route address syntax (or %-hack syntax) is used.  If
! 		this is a problem, add entries to the access-table or use
! 		FEATURE(loose_relay_check).
  
  relay_local_from
  		Allows relaying if the domain portion of the mail sender
  		is a local host.  This should only be used if absolutely
! 		necessary as it opens a window for spammers.  Specifically,
! 		they can send mail to your mail server that claims to be
! 		from your domain (either directly or via a routed address),
! 		and you will go ahead and relay it out to arbitrary hosts
! 		on the Internet.
  		
  accept_unqualified_senders
  		Normally, MAIL FROM: commands in the SMTP session will be
***************
*** 1203,1209 ****
  	FEATURE(relay_entire_domain)
  
  then any host in any of your local domains (that is, the $=m class)
! will be relayed.
  
  You can also allow relaying based on the MX records of the host
  portion of an incoming recipient address by using
--- 1219,1226 ----
  	FEATURE(relay_entire_domain)
  
  then any host in any of your local domains (that is, the $=m class)
! will be relayed (that is, you will accept mail either to or from any
! host in your domain).
  
  You can also allow relaying based on the MX records of the host
  portion of an incoming recipient address by using
***************
*** 1212,1220 ****
  
  For example, if your server receives a recipient of user@domain.com
  and domain.com lists your server in its MX records, the mail will be
! accepted.  Note that this will stop spammers from using your host to
! relay spam but it will not stop outsiders from using your server as a
! relay for their site.  Along the same lines,
  
  	FEATURE(relay_local_from)
  
--- 1229,1239 ----
  
  For example, if your server receives a recipient of user@domain.com
  and domain.com lists your server in its MX records, the mail will be
! accepted for relay to domain.com.  Note that this will stop spammers
! from using your host to relay spam but it will not stop outsiders from
! using your server as a relay for their site (that is, they set up an
! MX record pointing to your mail server, and you will relay mail addressed
! to them without any prior arrangement).  Along the same lines,
  
  	FEATURE(relay_local_from)
  
***************
*** 1265,1292 ****
  
  	FEATURE(access_db, hash -o /etc/mail/access)
  
  The table itself uses e-mail addresses, domain names, and network
  numbers as keys.  For example,
  
  	spammer@aol.com		REJECT
  	cyberspammer.com	REJECT
! 	206.117.147		REJECT
  
  would refuse mail from spammer@aol.com, any user from cyberspammer.com
  (or any host within the cyberspammer.com domain), and any host on the
! 206.117.147.* network.
  
  The value part of the map can contain:
  
! 	OK		accept mail even if other rules in the
! 			running ruleset would reject it.
! 	RELAY		Allow domain to relay through your SMTP
! 			server.  RELAY also serves an implicit
! 			OK for the other checks.
! 	REJECT		reject the sender/recipient with a general
  			purpose message.
! 	DISCARD		discard the message completely using
! 			the $#discard mailer
  	### any text	where ### is an RFC 821 compliant error code
  			and "any text" is a message to return for
  			the command.
--- 1284,1322 ----
  
  	FEATURE(access_db, hash -o /etc/mail/access)
  
+ Remember, since /etc/mail/access is a database, after creating the text
+ file as described below, you must use makemap to create the database
+ map.  For example:
+ 
+ makemap hash /etc/mail/access < /etc/mail/access
+ 
  The table itself uses e-mail addresses, domain names, and network
  numbers as keys.  For example,
  
  	spammer@aol.com		REJECT
  	cyberspammer.com	REJECT
! 	192.168.212		REJECT
  
  would refuse mail from spammer@aol.com, any user from cyberspammer.com
  (or any host within the cyberspammer.com domain), and any host on the
! 192.168.212.* network.
  
  The value part of the map can contain:
  
! 	OK		Accept mail even if other rules in the
! 			running ruleset would reject it, for example,
! 			if the domain name is unresolvable.
! 	RELAY		Accept mail addressed to the indicated domain or
! 			received from the indicated domain for relaying
! 			through your SMTP server.  RELAY also serves as
! 			an implicit OK for the other checks.
! 	REJECT		Reject the sender or recipient with a general
  			purpose message.
! 	DISCARD		Discard the message completely using the
! 			$#discard mailer.  This only works for sender
! 			addresses (i.e., it indicates that you should
! 			discard anything received from the indicated
! 			domain).
  	### any text	where ### is an RFC 821 compliant error code
  			and "any text" is a message to return for
  			the command.
***************
*** 1333,1339 ****
  
  This would prevent a recipient of badlocaluser@mydomain.com, any
  user at host.mydomain.com, and the single address
! user@otherhost.mydomain.com from receiving mail.
  
  There is also a ``Realtime Blackhole List'' run by the MAPS project
  at http://maps.vix.com/.  This is a database maintained in DNS of
--- 1363,1377 ----
  
  This would prevent a recipient of badlocaluser@mydomain.com, any
  user at host.mydomain.com, and the single address
! user@otherhost.mydomain.com from receiving mail.  Enabling this
! feature will keep you from sending mails to all addresses that
! have an error message or REJECT as value part in the access map.
! Taking the example from above:
! 
! 	spammer@aol.com		REJECT
! 	cyberspammer.com	REJECT
! 
! Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com.
  
  There is also a ``Realtime Blackhole List'' run by the MAPS project
  at http://maps.vix.com/.  This is a database maintained in DNS of
***************
*** 1382,1387 ****
--- 1420,1436 ----
  	R< $+ @ $+ >		$@ OK
  	R$*			$#error $: 553 Header Error
  
+ Users of FEATURE(nullclient) who desire to use the anti-spam and
+ anti-relaying capabilities should replace FEATURE(nullclient, mailhub)
+ with:
+ 
+ 	undefine(`ALIAS_FILE')
+ 	define(`MAIL_HUB', `mailhub')
+ 	define(`SMART_HOST', `mailhub')
+ 	define(`confFORWARD_PATH', `')
+ 
+ where mailhub is the fully qualified hostname for their mail server.
+ 
  
  +--------------------------------+
  | ADDING NEW MAILERS OR RULESETS |
***************
*** 1712,1718 ****
  					file if needed.
  confERROR_MODE		ErrorMode	[print] Error message mode.
  confERROR_MESSAGE	ErrorHeader	[undefined] Error message header/file.
! confSAVE_FROM_LINES	SafeFromLine	Save extra leading From_ lines.
  confTEMP_FILE_MODE	TempFileMode	[0600] Temporary file mode.
  confMATCH_GECOS		MatchGECOS	[False] Match GECOS field.
  confMAX_HOP		MaxHopCount	[25] Maximum hop count.
--- 1761,1767 ----
  					file if needed.
  confERROR_MODE		ErrorMode	[print] Error message mode.
  confERROR_MESSAGE	ErrorHeader	[undefined] Error message header/file.
! confSAVE_FROM_LINES	SaveFromLine	Save extra leading From_ lines.
  confTEMP_FILE_MODE	TempFileMode	[0600] Temporary file mode.
  confMATCH_GECOS		MatchGECOS	[False] Match GECOS field.
  confMAX_HOP		MaxHopCount	[25] Maximum hop count.
diff -cr sendmail-8.9.1/cf/cf/Build sendmail-8.9.2/cf/cf/Build
*** sendmail-8.9.1/cf/cf/Build	Tue May 19 16:34:11 1998
--- sendmail-8.9.2/cf/cf/Build	Tue Dec 29 09:42:05 1998
***************
*** 7,13 ****
  # the sendmail distribution.
  #
  #
! #       @(#)Build	8.3 (Berkeley) 5/19/98
  #
  
  #
--- 7,13 ----
  # the sendmail distribution.
  #
  #
! #       @(#)Build	8.3 (Berkeley) 5/19/1998
  #
  
  #
diff -cr sendmail-8.9.1/cf/cf/Makefile sendmail-8.9.2/cf/cf/Makefile
*** sendmail-8.9.1/cf/cf/Makefile	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/Makefile	Tue Dec 29 09:42:04 1998
***************
*** 1,7 ****
  #
  #  Makefile for configuration files.
  #
! #	@(#)Makefile	8.17 (Berkeley) 4/2/98
  #
  
  #
--- 1,7 ----
  #
  #  Makefile for configuration files.
  #
! #	@(#)Makefile	8.17 (Berkeley) 4/2/1998
  #
  
  #
diff -cr sendmail-8.9.1/cf/cf/chez.cs.mc sendmail-8.9.2/cf/cf/chez.cs.mc
*** sendmail-8.9.1/cf/cf/chez.cs.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/chez.cs.mc	Tue Dec 29 09:42:05 1998
***************
*** 23,29 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)chez.cs.mc	8.11 (Berkeley) 5/19/98')
  OSTYPE(bsd4.4)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
--- 23,29 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)chez.cs.mc	8.11 (Berkeley) 5/19/1998')
  OSTYPE(bsd4.4)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/clientproto.mc sendmail-8.9.2/cf/cf/clientproto.mc
*** sendmail-8.9.1/cf/cf/clientproto.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/clientproto.mc	Tue Dec 29 09:42:04 1998
***************
*** 27,33 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)clientproto.mc	8.12 (Berkeley) 5/19/98')
  
  OSTYPE(unknown)
  FEATURE(nullclient, mailhost.$m)
--- 27,33 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)clientproto.mc	8.12 (Berkeley) 5/19/1998')
  
  OSTYPE(unknown)
  FEATURE(nullclient, mailhost.$m)
diff -cr sendmail-8.9.1/cf/cf/cs-hpux10.mc sendmail-8.9.2/cf/cf/cs-hpux10.mc
*** sendmail-8.9.1/cf/cf/cs-hpux10.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/cs-hpux10.mc	Tue Dec 29 09:42:04 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-hpux10.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(hpux10)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-hpux10.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(hpux10)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/cs-hpux9.mc sendmail-8.9.2/cf/cf/cs-hpux9.mc
*** sendmail-8.9.1/cf/cf/cs-hpux9.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/cs-hpux9.mc	Tue Dec 29 09:42:05 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-hpux9.mc	8.11 (Berkeley) 5/19/98')
  OSTYPE(hpux9)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-hpux9.mc	8.11 (Berkeley) 5/19/1998')
  OSTYPE(hpux9)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/cs-osf1.mc sendmail-8.9.2/cf/cf/cs-osf1.mc
*** sendmail-8.9.1/cf/cf/cs-osf1.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/cs-osf1.mc	Tue Dec 29 09:42:04 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-osf1.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(osf1)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-osf1.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(osf1)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/cs-solaris2.mc sendmail-8.9.2/cf/cf/cs-solaris2.mc
*** sendmail-8.9.1/cf/cf/cs-solaris2.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/cs-solaris2.mc	Tue Dec 29 09:42:05 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-solaris2.mc	8.9 (Berkeley) 5/19/98')
  OSTYPE(solaris2)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-solaris2.mc	8.9 (Berkeley) 5/19/1998')
  OSTYPE(solaris2)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/cs-sunos4.1.mc sendmail-8.9.2/cf/cf/cs-sunos4.1.mc
*** sendmail-8.9.1/cf/cf/cs-sunos4.1.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/cs-sunos4.1.mc	Tue Dec 29 09:42:04 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-sunos4.1.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(sunos4.1)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-sunos4.1.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(sunos4.1)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/cs-ultrix4.mc sendmail-8.9.2/cf/cf/cs-ultrix4.mc
*** sendmail-8.9.1/cf/cf/cs-ultrix4.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/cs-ultrix4.mc	Tue Dec 29 09:42:04 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-ultrix4.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(ultrix4)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)cs-ultrix4.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(ultrix4)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-bsd4.4.mc sendmail-8.9.2/cf/cf/generic-bsd4.4.mc
*** sendmail-8.9.1/cf/cf/generic-bsd4.4.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-bsd4.4.mc	Tue Dec 29 09:42:05 1998
***************
*** 20,26 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-bsd4.4.mc	8.7 (Berkeley) 5/19/98')
  OSTYPE(bsd4.4)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 20,26 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-bsd4.4.mc	8.7 (Berkeley) 5/19/1998')
  OSTYPE(bsd4.4)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-hpux10.mc sendmail-8.9.2/cf/cf/generic-hpux10.mc
*** sendmail-8.9.1/cf/cf/generic-hpux10.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-hpux10.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-hpux10.mc	8.8 (Berkeley) 5/19/98')
  OSTYPE(hpux10)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-hpux10.mc	8.8 (Berkeley) 5/19/1998')
  OSTYPE(hpux10)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-hpux9.mc sendmail-8.9.2/cf/cf/generic-hpux9.mc
*** sendmail-8.9.1/cf/cf/generic-hpux9.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-hpux9.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-hpux9.mc	8.8 (Berkeley) 5/19/98')
  OSTYPE(hpux9)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-hpux9.mc	8.8 (Berkeley) 5/19/1998')
  OSTYPE(hpux9)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-nextstep3.3.mc sendmail-8.9.2/cf/cf/generic-nextstep3.3.mc
*** sendmail-8.9.1/cf/cf/generic-nextstep3.3.mc	Tue May 19 16:34:11 1998
--- sendmail-8.9.2/cf/cf/generic-nextstep3.3.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-nextstep3.3.mc	8.7 (Berkeley) 5/19/98')
  OSTYPE(nextstep)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-nextstep3.3.mc	8.7 (Berkeley) 5/19/1998')
  OSTYPE(nextstep)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-osf1.mc sendmail-8.9.2/cf/cf/generic-osf1.mc
*** sendmail-8.9.1/cf/cf/generic-osf1.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-osf1.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-osf1.mc	8.8 (Berkeley) 5/19/98')
  OSTYPE(osf1)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-osf1.mc	8.8 (Berkeley) 5/19/1998')
  OSTYPE(osf1)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-solaris2.mc sendmail-8.9.2/cf/cf/generic-solaris2.mc
*** sendmail-8.9.1/cf/cf/generic-solaris2.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-solaris2.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-solaris2.mc	8.8 (Berkeley) 5/19/98')
  OSTYPE(solaris2)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-solaris2.mc	8.8 (Berkeley) 5/19/1998')
  OSTYPE(solaris2)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-sunos4.1.mc sendmail-8.9.2/cf/cf/generic-sunos4.1.mc
*** sendmail-8.9.1/cf/cf/generic-sunos4.1.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-sunos4.1.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-sunos4.1.mc	8.8 (Berkeley) 5/19/98')
  OSTYPE(sunos4.1)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-sunos4.1.mc	8.8 (Berkeley) 5/19/1998')
  OSTYPE(sunos4.1)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/generic-ultrix4.mc sendmail-8.9.2/cf/cf/generic-ultrix4.mc
*** sendmail-8.9.1/cf/cf/generic-ultrix4.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/generic-ultrix4.mc	Tue Dec 29 09:42:05 1998
***************
*** 19,25 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-ultrix4.mc	8.8 (Berkeley) 5/19/98')
  OSTYPE(ultrix4)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
--- 19,25 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)generic-ultrix4.mc	8.8 (Berkeley) 5/19/1998')
  OSTYPE(ultrix4)dnl
  DOMAIN(generic)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/huginn.cs.mc sendmail-8.9.2/cf/cf/huginn.cs.mc
*** sendmail-8.9.1/cf/cf/huginn.cs.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/huginn.cs.mc	Tue Dec 29 09:42:05 1998
***************
*** 21,27 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)huginn.cs.mc	8.12 (Berkeley) 5/19/98')
  OSTYPE(hpux9)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MASQUERADE_AS(CS.Berkeley.EDU)dnl
--- 21,27 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)huginn.cs.mc	8.12 (Berkeley) 5/19/1998')
  OSTYPE(hpux9)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MASQUERADE_AS(CS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/knecht.mc sendmail-8.9.2/cf/cf/knecht.mc
*** sendmail-8.9.1/cf/cf/knecht.mc	Thu Jun 11 13:33:12 1998
--- sendmail-8.9.2/cf/cf/knecht.mc	Tue Dec 29 09:42:05 1998
***************
*** 16,22 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)knecht.mc	8.30 (Berkeley) 6/11/98')
  OSTYPE(bsd4.4)dnl
  DOMAIN(generic)dnl
  define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')dnl
--- 16,22 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)knecht.mc	8.30 (Berkeley) 6/11/1998')
  OSTYPE(bsd4.4)dnl
  DOMAIN(generic)dnl
  define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')dnl
diff -cr sendmail-8.9.1/cf/cf/mail.cs.mc sendmail-8.9.2/cf/cf/mail.cs.mc
*** sendmail-8.9.1/cf/cf/mail.cs.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/mail.cs.mc	Tue Dec 29 09:42:04 1998
***************
*** 21,27 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)mail.cs.mc	8.15 (Berkeley) 5/19/98')
  OSTYPE(ultrix4)dnl
  DOMAIN(Berkeley.EDU)dnl
  MASQUERADE_AS(CS.Berkeley.EDU)dnl
--- 21,27 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)mail.cs.mc	8.15 (Berkeley) 5/19/1998')
  OSTYPE(ultrix4)dnl
  DOMAIN(Berkeley.EDU)dnl
  MASQUERADE_AS(CS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/mail.eecs.mc sendmail-8.9.2/cf/cf/mail.eecs.mc
*** sendmail-8.9.1/cf/cf/mail.eecs.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/mail.eecs.mc	Tue Dec 29 09:42:04 1998
***************
*** 21,27 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)mail.eecs.mc	8.15 (Berkeley) 5/19/98')
  OSTYPE(ultrix4)dnl
  DOMAIN(EECS.Berkeley.EDU)dnl
  MASQUERADE_AS(EECS.Berkeley.EDU)dnl
--- 21,27 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)mail.eecs.mc	8.15 (Berkeley) 5/19/1998')
  OSTYPE(ultrix4)dnl
  DOMAIN(EECS.Berkeley.EDU)dnl
  MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/mailspool.cs.mc sendmail-8.9.2/cf/cf/mailspool.cs.mc
*** sendmail-8.9.1/cf/cf/mailspool.cs.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/mailspool.cs.mc	Tue Dec 29 09:42:05 1998
***************
*** 23,29 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)mailspool.cs.mc	8.9 (Berkeley) 5/19/98')
  OSTYPE(sunos4.1)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 23,29 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)mailspool.cs.mc	8.9 (Berkeley) 5/19/1998')
  OSTYPE(sunos4.1)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/python.cs.mc sendmail-8.9.2/cf/cf/python.cs.mc
*** sendmail-8.9.1/cf/cf/python.cs.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/python.cs.mc	Tue Dec 29 09:42:04 1998
***************
*** 23,29 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)python.cs.mc	8.9 (Berkeley) 5/19/98')
  OSTYPE(bsd4.4)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
--- 23,29 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)python.cs.mc	8.9 (Berkeley) 5/19/1998')
  OSTYPE(bsd4.4)dnl
  DOMAIN(CS.Berkeley.EDU)dnl
  define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/cf/s2k-osf1.mc sendmail-8.9.2/cf/cf/s2k-osf1.mc
*** sendmail-8.9.1/cf/cf/s2k-osf1.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/s2k-osf1.mc	Tue Dec 29 09:42:04 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)s2k-osf1.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(osf1)dnl
  DOMAIN(S2K.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)s2k-osf1.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(osf1)dnl
  DOMAIN(S2K.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/s2k-ultrix4.mc sendmail-8.9.2/cf/cf/s2k-ultrix4.mc
*** sendmail-8.9.1/cf/cf/s2k-ultrix4.mc	Tue May 19 16:34:11 1998
--- sendmail-8.9.2/cf/cf/s2k-ultrix4.mc	Tue Dec 29 09:42:05 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)s2k-ultrix4.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(ultrix4)dnl
  DOMAIN(S2K.Berkeley.EDU)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)s2k-ultrix4.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(ultrix4)dnl
  DOMAIN(S2K.Berkeley.EDU)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/tcpproto.mc sendmail-8.9.2/cf/cf/tcpproto.mc
*** sendmail-8.9.1/cf/cf/tcpproto.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/tcpproto.mc	Tue Dec 29 09:42:04 1998
***************
*** 25,31 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)tcpproto.mc	8.10 (Berkeley) 5/19/98')
  OSTYPE(unknown)
  FEATURE(nouucp)
  MAILER(local)
--- 25,31 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)tcpproto.mc	8.10 (Berkeley) 5/19/1998')
  OSTYPE(unknown)
  FEATURE(nouucp)
  MAILER(local)
diff -cr sendmail-8.9.1/cf/cf/ucbarpa.mc sendmail-8.9.2/cf/cf/ucbarpa.mc
*** sendmail-8.9.1/cf/cf/ucbarpa.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/ucbarpa.mc	Tue Dec 29 09:42:04 1998
***************
*** 20,26 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)ucbarpa.mc	8.9 (Berkeley) 5/19/98')
  DOMAIN(CS.Berkeley.EDU)dnl
  OSTYPE(bsd4.4)dnl
  MAILER(local)dnl
--- 20,26 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)ucbarpa.mc	8.9 (Berkeley) 5/19/1998')
  DOMAIN(CS.Berkeley.EDU)dnl
  OSTYPE(bsd4.4)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/cf/ucbvax.mc sendmail-8.9.2/cf/cf/ucbvax.mc
*** sendmail-8.9.1/cf/cf/ucbvax.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/ucbvax.mc	Tue Dec 29 09:42:04 1998
***************
*** 21,27 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)ucbvax.mc	8.11 (Berkeley) 5/19/98')
  OSTYPE(bsd4.3)
  DOMAIN(CS.Berkeley.EDU)
  MASQUERADE_AS(CS.Berkeley.EDU)
--- 21,27 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)ucbvax.mc	8.11 (Berkeley) 5/19/1998')
  OSTYPE(bsd4.3)
  DOMAIN(CS.Berkeley.EDU)
  MASQUERADE_AS(CS.Berkeley.EDU)
diff -cr sendmail-8.9.1/cf/cf/uucpproto.mc sendmail-8.9.2/cf/cf/uucpproto.mc
*** sendmail-8.9.1/cf/cf/uucpproto.mc	Tue May 19 16:34:10 1998
--- sendmail-8.9.2/cf/cf/uucpproto.mc	Tue Dec 29 09:42:04 1998
***************
*** 25,31 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)uucpproto.mc	8.12 (Berkeley) 5/19/98')
  OSTYPE(unknown)
  FEATURE(promiscuous_relay)dnl
  FEATURE(accept_unresolvable_domains)dnl
--- 25,31 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)uucpproto.mc	8.12 (Berkeley) 5/19/1998')
  OSTYPE(unknown)
  FEATURE(promiscuous_relay)dnl
  FEATURE(accept_unresolvable_domains)dnl
diff -cr sendmail-8.9.1/cf/cf/vangogh.cs.mc sendmail-8.9.2/cf/cf/vangogh.cs.mc
*** sendmail-8.9.1/cf/cf/vangogh.cs.mc	Tue May 19 16:34:09 1998
--- sendmail-8.9.2/cf/cf/vangogh.cs.mc	Tue Dec 29 09:42:04 1998
***************
*** 22,28 ****
  #
  
  divert(0)dnl
! VERSIONID(`@(#)vangogh.cs.mc	8.10 (Berkeley) 5/19/98')
  DOMAIN(CS.Berkeley.EDU)dnl
  OSTYPE(bsd4.4)dnl
  MAILER(local)dnl
--- 22,28 ----
  #
  
  divert(0)dnl
! VERSIONID(`@(#)vangogh.cs.mc	8.10 (Berkeley) 5/19/1998')
  DOMAIN(CS.Berkeley.EDU)dnl
  OSTYPE(bsd4.4)dnl
  MAILER(local)dnl
diff -cr sendmail-8.9.1/cf/domain/Berkeley.EDU.m4 sendmail-8.9.2/cf/domain/Berkeley.EDU.m4
*** sendmail-8.9.1/cf/domain/Berkeley.EDU.m4	Tue May 19 16:34:26 1998
--- sendmail-8.9.2/cf/domain/Berkeley.EDU.m4	Tue Dec 29 09:42:06 1998
***************
*** 11,17 ****
  #
  #
  divert(0)
! VERSIONID(`@(#)Berkeley.EDU.m4	8.14 (Berkeley) 5/19/98')
  DOMAIN(berkeley-only)dnl
  define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
  define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
--- 11,17 ----
  #
  #
  divert(0)
! VERSIONID(`@(#)Berkeley.EDU.m4	8.14 (Berkeley) 5/19/1998')
  DOMAIN(berkeley-only)dnl
  define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
  define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
diff -cr sendmail-8.9.1/cf/domain/CS.Berkeley.EDU.m4 sendmail-8.9.2/cf/domain/CS.Berkeley.EDU.m4
*** sendmail-8.9.1/cf/domain/CS.Berkeley.EDU.m4	Tue May 19 16:34:26 1998
--- sendmail-8.9.2/cf/domain/CS.Berkeley.EDU.m4	Tue Dec 29 09:42:07 1998
***************
*** 11,17 ****
  #
  #
  divert(0)
! VERSIONID(`@(#)CS.Berkeley.EDU.m4	8.7 (Berkeley) 5/19/98')
  DOMAIN(Berkeley.EDU)dnl
  HACK(cssubdomain)dnl
  define(`confUSERDB_SPEC',
--- 11,17 ----
  #
  #
  divert(0)
! VERSIONID(`@(#)CS.Berkeley.EDU.m4	8.7 (Berkeley) 5/19/1998')
  DOMAIN(Berkeley.EDU)dnl
  HACK(cssubdomain)dnl
  define(`confUSERDB_SPEC',
diff -cr sendmail-8.9.1/cf/domain/EECS.Berkeley.EDU.m4 sendmail-8.9.2/cf/domain/EECS.Berkeley.EDU.m4
*** sendmail-8.9.1/cf/domain/EECS.Berkeley.EDU.m4	Tue May 19 16:34:26 1998
--- sendmail-8.9.2/cf/domain/EECS.Berkeley.EDU.m4	Tue Dec 29 09:42:07 1998
***************
*** 11,16 ****
  #
  #
  divert(0)
! VERSIONID(`@(#)EECS.Berkeley.EDU.m4	8.7 (Berkeley) 5/19/98')
  DOMAIN(Berkeley.EDU)dnl
  MASQUERADE_AS(EECS.Berkeley.EDU)dnl
--- 11,16 ----
  #
  #
  divert(0)
! VERSIONID(`@(#)EECS.Berkeley.EDU.m4	8.7 (Berkeley) 5/19/1998')
  DOMAIN(Berkeley.EDU)dnl
  MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/domain/S2K.Berkeley.EDU.m4 sendmail-8.9.2/cf/domain/S2K.Berkeley.EDU.m4
*** sendmail-8.9.1/cf/domain/S2K.Berkeley.EDU.m4	Tue May 19 16:34:26 1998
--- sendmail-8.9.2/cf/domain/S2K.Berkeley.EDU.m4	Tue Dec 29 09:42:06 1998
***************
*** 11,16 ****
  #
  #
  divert(0)
! VERSIONID(`@(#)S2K.Berkeley.EDU.m4	8.7 (Berkeley) 5/19/98')
  DOMAIN(CS.Berkeley.EDU)dnl
  MASQUERADE_AS(postgres.Berkeley.EDU)dnl
--- 11,16 ----
  #
  #
  divert(0)
! VERSIONID(`@(#)S2K.Berkeley.EDU.m4	8.7 (Berkeley) 5/19/1998')
  DOMAIN(CS.Berkeley.EDU)dnl
  MASQUERADE_AS(postgres.Berkeley.EDU)dnl
diff -cr sendmail-8.9.1/cf/domain/berkeley-only.m4 sendmail-8.9.2/cf/domain/berkeley-only.m4
*** sendmail-8.9.1/cf/domain/berkeley-only.m4	Tue May 19 16:34:26 1998
--- sendmail-8.9.2/cf/domain/berkeley-only.m4	Tue Dec 29 09:42:07 1998
***************
*** 11,17 ****
  #
  #
  divert(0)
! VERSIONID(`@(#)unspecified-domain.m4	8.7 (Berkeley) 5/19/98')
  errprint(`*** ERROR: You are trying to use the Berkeley sample configuration')
  errprint(`	files outside of the Computer Science Division at Berkeley.')
  errprint(`	The configuration (.mc) files must be customized to reference')
--- 11,17 ----
  #
  #
  divert(0)
! VERSIONID(`@(#)unspecified-domain.m4	8.7 (Berkeley) 5/19/1998')
  errprint(`*** ERROR: You are trying to use the Berkeley sample configuration')
  errprint(`	files outside of the Computer Science Division at Berkeley.')
  errprint(`	The configuration (.mc) files must be customized to reference')
diff -cr sendmail-8.9.1/cf/domain/generic.m4 sendmail-8.9.2/cf/domain/generic.m4
*** sendmail-8.9.1/cf/domain/generic.m4	Tue May 19 16:34:26 1998
--- sendmail-8.9.2/cf/domain/generic.m4	Tue Dec 29 09:42:06 1998
***************
*** 19,25 ****
  #  files.
  #
  divert(0)
! VERSIONID(`@(#)generic.m4	8.9 (Berkeley) 5/19/98')
  define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl
  FEATURE(redirect)dnl
  FEATURE(use_cw_file)dnl
--- 19,25 ----
  #  files.
  #
  divert(0)
! VERSIONID(`@(#)generic.m4	8.9 (Berkeley) 5/19/1998')
  define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl
  FEATURE(redirect)dnl
  FEATURE(use_cw_file)dnl
diff -cr sendmail-8.9.1/cf/feature/accept_unqualified_senders.m4 sendmail-8.9.2/cf/feature/accept_unqualified_senders.m4
*** sendmail-8.9.1/cf/feature/accept_unqualified_senders.m4	Tue May 19 16:34:34 1998
--- sendmail-8.9.2/cf/feature/accept_unqualified_senders.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)accept_unqualified_senders.m4	8.3 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)accept_unqualified_senders.m4	8.3 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1)
diff -cr sendmail-8.9.1/cf/feature/accept_unresolvable_domains.m4 sendmail-8.9.2/cf/feature/accept_unresolvable_domains.m4
*** sendmail-8.9.1/cf/feature/accept_unresolvable_domains.m4	Tue May 19 16:34:34 1998
--- sendmail-8.9.2/cf/feature/accept_unresolvable_domains.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)accept_unresolvable_domains.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)accept_unresolvable_domains.m4	8.7 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1)
diff -cr sendmail-8.9.1/cf/feature/access_db.m4 sendmail-8.9.2/cf/feature/access_db.m4
*** sendmail-8.9.1/cf/feature/access_db.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/access_db.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)access_db.m4	8.8 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`ACCESS_TABLE',
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)access_db.m4	8.8 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`ACCESS_TABLE',
diff -cr sendmail-8.9.1/cf/feature/allmasquerade.m4 sendmail-8.9.2/cf/feature/allmasquerade.m4
*** sendmail-8.9.1/cf/feature/allmasquerade.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/allmasquerade.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)allmasquerade.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
  
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)allmasquerade.m4	8.7 (Berkeley) 5/19/1998')
  divert(-1)
  
  
diff -cr sendmail-8.9.1/cf/feature/always_add_domain.m4 sendmail-8.9.2/cf/feature/always_add_domain.m4
*** sendmail-8.9.1/cf/feature/always_add_domain.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/always_add_domain.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)always_add_domain.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_ALWAYS_ADD_DOMAIN_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)always_add_domain.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_ALWAYS_ADD_DOMAIN_', 1)
diff -cr sendmail-8.9.1/cf/feature/bestmx_is_local.m4 sendmail-8.9.2/cf/feature/bestmx_is_local.m4
*** sendmail-8.9.1/cf/feature/bestmx_is_local.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/bestmx_is_local.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,19 ****
  #
  
  divert(0)
! VERSIONID(`@(#)bestmx_is_local.m4	8.12 (Berkeley) 5/19/98')
  divert(-1)
  
  LOCAL_CONFIG
  # turn on bestMX lookup table
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)bestmx_is_local.m4	8.13 (Berkeley) 8/13/1998')
  divert(-1)
+ 
+ define(_BESTMX_IS_LOCAL_, _ARG_)
  
  LOCAL_CONFIG
  # turn on bestMX lookup table
diff -cr sendmail-8.9.1/cf/feature/bitdomain.m4 sendmail-8.9.2/cf/feature/bitdomain.m4
*** sendmail-8.9.1/cf/feature/bitdomain.m4	Tue May 19 16:34:32 1998
--- sendmail-8.9.2/cf/feature/bitdomain.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)bitdomain.m4	8.13 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`BITDOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/bitdomain', `_ARG_'))dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)bitdomain.m4	8.14 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`BITDOMAIN_TABLE', ifelse(_ARG_, `', 
! 				 ifdef(`_USE_ETC_MAIL_',
! 				       DATABASE_MAP_TYPE` -o /etc/mail/bitdomain',
! 				       DATABASE_MAP_TYPE` -o /etc/bitdomain'),
! 				 `_ARG_'))dnl
diff -cr sendmail-8.9.1/cf/feature/blacklist_recipients.m4 sendmail-8.9.2/cf/feature/blacklist_recipients.m4
*** sendmail-8.9.1/cf/feature/blacklist_recipients.m4	Tue May 19 16:34:34 1998
--- sendmail-8.9.2/cf/feature/blacklist_recipients.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)blacklist_recipients.m4	8.9 (Berkeley) 5/19/98')
  divert(-1)
  
  ifdef(`ACCESS_TABLE',
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)blacklist_recipients.m4	8.9 (Berkeley) 5/19/1998')
  divert(-1)
  
  ifdef(`ACCESS_TABLE',
diff -cr sendmail-8.9.1/cf/feature/domaintable.m4 sendmail-8.9.2/cf/feature/domaintable.m4
*** sendmail-8.9.1/cf/feature/domaintable.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/domaintable.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)domaintable.m4	8.8 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`DOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/domaintable', `_ARG_'))dnl
--- 12,23 ----
  #
  
  divert(0)
! VERSIONID(`@(#)domaintable.m4	8.9 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`DOMAIN_TABLE', ifelse(_ARG_, `',
! 			      ifdef(`_USE_ETC_MAIL_',
! 				    DATABASE_MAP_TYPE` -o /etc/mail/domaintable',
! 				    DATABASE_MAP_TYPE` -o /etc/domaintable'),
! 			      `_ARG_'))dnl
! 
diff -cr sendmail-8.9.1/cf/feature/genericstable.m4 sendmail-8.9.2/cf/feature/genericstable.m4
*** sendmail-8.9.1/cf/feature/genericstable.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/genericstable.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)genericstable.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`GENERICS_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/genericstable', `_ARG_'))dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)genericstable.m4	8.8 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`GENERICS_TABLE', ifelse(_ARG_, `',
! 				ifdef(`_USE_ETC_MAIL_',
! 				      DATABASE_MAP_TYPE` -o /etc/mail/genericstable',
! 				      DATABASE_MAP_TYPE` -o /etc/genericstable'),
! 				`_ARG_'))dnl
diff -cr sendmail-8.9.1/cf/feature/limited_masquerade.m4 sendmail-8.9.2/cf/feature/limited_masquerade.m4
*** sendmail-8.9.1/cf/feature/limited_masquerade.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/limited_masquerade.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)limited_masquerade.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_LIMITED_MASQUERADE_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)limited_masquerade.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_LIMITED_MASQUERADE_', 1)
diff -cr sendmail-8.9.1/cf/feature/local_lmtp.m4 sendmail-8.9.2/cf/feature/local_lmtp.m4
*** sendmail-8.9.1/cf/feature/local_lmtp.m4	Tue May 19 16:34:34 1998
--- sendmail-8.9.2/cf/feature/local_lmtp.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)local_lmtp.m4	8.5 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`LOCAL_MAILER_PATH',
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)local_lmtp.m4	8.5 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`LOCAL_MAILER_PATH',
diff -cr sendmail-8.9.1/cf/feature/local_procmail.m4 sendmail-8.9.2/cf/feature/local_procmail.m4
*** sendmail-8.9.1/cf/feature/local_procmail.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/local_procmail.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)local_procmail.m4	8.11 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`LOCAL_MAILER_PATH',
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)local_procmail.m4	8.11 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`LOCAL_MAILER_PATH',
diff -cr sendmail-8.9.1/cf/feature/loose_relay_check.m4 sendmail-8.9.2/cf/feature/loose_relay_check.m4
*** sendmail-8.9.1/cf/feature/loose_relay_check.m4	Tue May 19 16:34:34 1998
--- sendmail-8.9.2/cf/feature/loose_relay_check.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)loose_relay_check.m4	8.3 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_LOOSE_RELAY_CHECK_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)loose_relay_check.m4	8.3 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_LOOSE_RELAY_CHECK_', 1)
diff -cr sendmail-8.9.1/cf/feature/mailertable.m4 sendmail-8.9.2/cf/feature/mailertable.m4
*** sendmail-8.9.1/cf/feature/mailertable.m4	Tue May 19 16:34:32 1998
--- sendmail-8.9.2/cf/feature/mailertable.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)mailertable.m4	8.9 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`MAILER_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/mailertable', `_ARG_'))dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)mailertable.m4	8.10 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`MAILER_TABLE', ifelse(_ARG_, `',
! 			      ifdef(`_USE_ETC_MAIL_',
! 				    DATABASE_MAP_TYPE` -o /etc/mail/mailertable',
! 				    DATABASE_MAP_TYPE` -o /etc/mailertable'),
! 			      `_ARG_'))dnl
diff -cr sendmail-8.9.1/cf/feature/masquerade_entire_domain.m4 sendmail-8.9.2/cf/feature/masquerade_entire_domain.m4
*** sendmail-8.9.1/cf/feature/masquerade_entire_domain.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/masquerade_entire_domain.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)masquerade_entire_domain.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_MASQUERADE_ENTIRE_DOMAIN_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)masquerade_entire_domain.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_MASQUERADE_ENTIRE_DOMAIN_', 1)
diff -cr sendmail-8.9.1/cf/feature/masquerade_envelope.m4 sendmail-8.9.2/cf/feature/masquerade_envelope.m4
*** sendmail-8.9.1/cf/feature/masquerade_envelope.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/masquerade_envelope.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)masquerade_envelope.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_MASQUERADE_ENVELOPE_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)masquerade_envelope.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_MASQUERADE_ENVELOPE_', 1)
diff -cr sendmail-8.9.1/cf/feature/nocanonify.m4 sendmail-8.9.2/cf/feature/nocanonify.m4
*** sendmail-8.9.1/cf/feature/nocanonify.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/nocanonify.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)nocanonify.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_NO_CANONIFY_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)nocanonify.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_NO_CANONIFY_', 1)
diff -cr sendmail-8.9.1/cf/feature/nodns.m4 sendmail-8.9.2/cf/feature/nodns.m4
*** sendmail-8.9.1/cf/feature/nodns.m4	Tue May 19 16:34:32 1998
--- sendmail-8.9.2/cf/feature/nodns.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,21 ****
  #
  
  divert(0)
! 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.
  ')
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)nodns.m4	8.9 (Berkeley) 10/6/1998')
  divert(-1)
  
  undefine(`confBIND_OPTS')dnl
  errprint(`FEATURE(nodns) is no-op.
! Use ServiceSwitchFile ('ifdef(`confSERVICE_SWITCH_FILE',confSERVICE_SWITCH_FILE,ifdef(`_USE_ETC_MAIL_',`/etc/mail/service.switch',`/etc/service.switch'))`) if your OS does not provide its own instead.
  ')
diff -cr sendmail-8.9.1/cf/feature/notsticky.m4 sendmail-8.9.2/cf/feature/notsticky.m4
*** sendmail-8.9.1/cf/feature/notsticky.m4	Tue May 19 16:34:32 1998
--- sendmail-8.9.2/cf/feature/notsticky.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)notsticky.m4	8.8 (Berkeley) 5/19/98')
  #
  #  This is now the default.  Use ``FEATURE(stickyhost)'' if you want
  #  the old default behaviour.
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)notsticky.m4	8.8 (Berkeley) 5/19/1998')
  #
  #  This is now the default.  Use ``FEATURE(stickyhost)'' if you want
  #  the old default behaviour.
diff -cr sendmail-8.9.1/cf/feature/nouucp.m4 sendmail-8.9.2/cf/feature/nouucp.m4
*** sendmail-8.9.1/cf/feature/nouucp.m4	Tue May 19 16:34:32 1998
--- sendmail-8.9.2/cf/feature/nouucp.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)nouucp.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_NO_UUCP_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)nouucp.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_NO_UUCP_', 1)
diff -cr sendmail-8.9.1/cf/feature/nullclient.m4 sendmail-8.9.2/cf/feature/nullclient.m4
*** sendmail-8.9.1/cf/feature/nullclient.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/nullclient.m4	Tue Dec 29 09:42:12 1998
***************
*** 23,29 ****
  #  sendmail.
  #
  
! VERSIONID(`@(#)nullclient.m4	8.12 (Berkeley) 5/19/98')
  
  PUSHDIVERT(6)
  # hub host (to which all mail is sent)
--- 23,29 ----
  #  sendmail.
  #
  
! VERSIONID(`@(#)nullclient.m4	8.12 (Berkeley) 5/19/1998')
  
  PUSHDIVERT(6)
  # hub host (to which all mail is sent)
diff -cr sendmail-8.9.1/cf/feature/promiscuous_relay.m4 sendmail-8.9.2/cf/feature/promiscuous_relay.m4
*** sendmail-8.9.1/cf/feature/promiscuous_relay.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/promiscuous_relay.m4	Tue Dec 29 09:42:12 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)promiscuous_relay.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_PROMISCUOUS_RELAY_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)promiscuous_relay.m4	8.7 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_PROMISCUOUS_RELAY_', 1)
diff -cr sendmail-8.9.1/cf/feature/rbl.m4 sendmail-8.9.2/cf/feature/rbl.m4
*** sendmail-8.9.1/cf/feature/rbl.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/rbl.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)rbl.m4	8.8 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_RBL_', ifelse(_ARG_, `', `rbl.maps.vix.com', `_ARG_'))dnl
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)rbl.m4	8.8 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_RBL_', ifelse(_ARG_, `', `rbl.maps.vix.com', `_ARG_'))dnl
diff -cr sendmail-8.9.1/cf/feature/redirect.m4 sendmail-8.9.2/cf/feature/redirect.m4
*** sendmail-8.9.1/cf/feature/redirect.m4	Tue May 19 16:34:32 1998
--- sendmail-8.9.2/cf/feature/redirect.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)redirect.m4	8.10 (Berkeley) 5/19/98')
  divert(-1)
  
  
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)redirect.m4	8.10 (Berkeley) 5/19/1998')
  divert(-1)
  
  
diff -cr sendmail-8.9.1/cf/feature/relay_based_on_MX.m4 sendmail-8.9.2/cf/feature/relay_based_on_MX.m4
*** sendmail-8.9.1/cf/feature/relay_based_on_MX.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/relay_based_on_MX.m4	Tue Dec 29 09:42:12 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)relay_based_on_MX.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_RELAY_MX_SERVED_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)relay_based_on_MX.m4	8.7 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_RELAY_MX_SERVED_', 1)
diff -cr sendmail-8.9.1/cf/feature/relay_entire_domain.m4 sendmail-8.9.2/cf/feature/relay_entire_domain.m4
*** sendmail-8.9.1/cf/feature/relay_entire_domain.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/relay_entire_domain.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)relay_entire_domain.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_RELAY_ENTIRE_DOMAIN_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)relay_entire_domain.m4	8.7 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_RELAY_ENTIRE_DOMAIN_', 1)
diff -cr sendmail-8.9.1/cf/feature/relay_hosts_only.m4 sendmail-8.9.2/cf/feature/relay_hosts_only.m4
*** sendmail-8.9.1/cf/feature/relay_hosts_only.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/relay_hosts_only.m4	Tue Dec 29 09:42:12 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)relay_hosts_only.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_RELAY_HOSTS_ONLY_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)relay_hosts_only.m4	8.7 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_RELAY_HOSTS_ONLY_', 1)
diff -cr sendmail-8.9.1/cf/feature/relay_local_from.m4 sendmail-8.9.2/cf/feature/relay_local_from.m4
*** sendmail-8.9.1/cf/feature/relay_local_from.m4	Tue May 19 16:34:34 1998
--- sendmail-8.9.2/cf/feature/relay_local_from.m4	Tue Dec 29 09:42:13 1998
***************
*** 9,15 ****
  #
  
  divert(0)
! VERSIONID(`@(#)relay_local_from.m4	8.2 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_RELAY_LOCAL_FROM_', 1)
--- 9,15 ----
  #
  
  divert(0)
! VERSIONID(`@(#)relay_local_from.m4	8.2 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_RELAY_LOCAL_FROM_', 1)
diff -cr sendmail-8.9.1/cf/feature/smrsh.m4 sendmail-8.9.2/cf/feature/smrsh.m4
*** sendmail-8.9.1/cf/feature/smrsh.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/smrsh.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)smrsh.m4	8.8 (Berkeley) 5/19/98')
  divert(-1)
  
  ifdef(`_MAILER_local_',
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)smrsh.m4	8.8 (Berkeley) 5/19/1998')
  divert(-1)
  
  ifdef(`_MAILER_local_',
diff -cr sendmail-8.9.1/cf/feature/stickyhost.m4 sendmail-8.9.2/cf/feature/stickyhost.m4
*** sendmail-8.9.1/cf/feature/stickyhost.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/stickyhost.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)stickyhost.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`_STICKY_LOCAL_DOMAIN_', 1)
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)stickyhost.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  define(`_STICKY_LOCAL_DOMAIN_', 1)
diff -cr sendmail-8.9.1/cf/feature/use_ct_file.m4 sendmail-8.9.2/cf/feature/use_ct_file.m4
*** sendmail-8.9.1/cf/feature/use_ct_file.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/use_ct_file.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)use_ct_file.m4	8.6 (Berkeley) 5/19/98')
  divert(-1)
  
  # if defined, the sendmail.cf will read the /etc/sendmail.ct file
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)use_ct_file.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  # if defined, the sendmail.cf will read the /etc/sendmail.ct file
diff -cr sendmail-8.9.1/cf/feature/use_cw_file.m4 sendmail-8.9.2/cf/feature/use_cw_file.m4
*** sendmail-8.9.1/cf/feature/use_cw_file.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/use_cw_file.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! 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
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)use_cw_file.m4	8.6 (Berkeley) 5/19/1998')
  divert(-1)
  
  # if defined, the sendmail.cf will read the /etc/sendmail.cw file
diff -cr sendmail-8.9.1/cf/feature/uucpdomain.m4 sendmail-8.9.2/cf/feature/uucpdomain.m4
*** sendmail-8.9.1/cf/feature/uucpdomain.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/uucpdomain.m4	Tue Dec 29 09:42:11 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)uucpdomain.m4	8.13 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`UUDOMAIN_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/uudomain', `_ARG_'))dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)uucpdomain.m4	8.14 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`UUDOMAIN_TABLE', ifelse(_ARG_, `',
! 				ifdef(`_USE_ETC_MAIL_',
! 				      DATABASE_MAP_TYPE` -o /etc/mail/uudomain',
! 				      DATABASE_MAP_TYPE` -o /etc/uudomain'),
! 				`_ARG_'))dnl
diff -cr sendmail-8.9.1/cf/feature/virtusertable.m4 sendmail-8.9.2/cf/feature/virtusertable.m4
*** sendmail-8.9.1/cf/feature/virtusertable.m4	Tue May 19 16:34:33 1998
--- sendmail-8.9.2/cf/feature/virtusertable.m4	Tue Dec 29 09:42:12 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)virtusertable.m4	8.7 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`VIRTUSER_TABLE', ifelse(_ARG_, `', DATABASE_MAP_TYPE` -o /etc/virtusertable', `_ARG_'))dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)virtusertable.m4	8.8 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`VIRTUSER_TABLE', ifelse(_ARG_, `',
! 				ifdef(`_USE_ETC_MAIL_',
! 				      DATABASE_MAP_TYPE` -o /etc/mail/virtusertable',
! 				      DATABASE_MAP_TYPE` -o /etc/virtusertable'),
! 				`_ARG_'))dnl
diff -cr sendmail-8.9.1/cf/hack/cssubdomain.m4 sendmail-8.9.2/cf/hack/cssubdomain.m4
*** sendmail-8.9.1/cf/hack/cssubdomain.m4	Tue May 19 16:34:37 1998
--- sendmail-8.9.2/cf/hack/cssubdomain.m4	Tue Dec 29 09:42:08 1998
***************
*** 11,17 ****
  #
  #
  divert(0)
! VERSIONID(`@(#)cssubdomain.m4	8.6 (Berkeley) 5/19/98')
  
  divert(2)
  # find possible (old & new) versions of our name via short circuit hack
--- 11,17 ----
  #
  #
  divert(0)
! VERSIONID(`@(#)cssubdomain.m4	8.6 (Berkeley) 5/19/1998')
  
  divert(2)
  # find possible (old & new) versions of our name via short circuit hack
diff -cr sendmail-8.9.1/cf/m4/cf.m4 sendmail-8.9.2/cf/m4/cf.m4
*** sendmail-8.9.1/cf/m4/cf.m4	Tue May 19 16:34:41 1998
--- sendmail-8.9.2/cf/m4/cf.m4	Tue Dec 29 09:42:07 1998
***************
*** 25,28 ****
  divert(0)dnl
  ifdef(`OSTYPE', `dnl',
  `include(_CF_DIR_`'m4/cfhead.m4)dnl
! VERSIONID(`@(#)cf.m4	8.29 (Berkeley) 5/19/98')')
--- 25,28 ----
  divert(0)dnl
  ifdef(`OSTYPE', `dnl',
  `include(_CF_DIR_`'m4/cfhead.m4)dnl
! VERSIONID(`@(#)cf.m4	8.29 (Berkeley) 5/19/1998')')
diff -cr sendmail-8.9.1/cf/m4/cfhead.m4 sendmail-8.9.2/cf/m4/cfhead.m4
*** sendmail-8.9.1/cf/m4/cfhead.m4	Tue May 19 16:34:41 1998
--- sendmail-8.9.2/cf/m4/cfhead.m4	Tue Dec 29 09:42:08 1998
***************
*** 105,111 ****
  m4wrap(`include(_CF_DIR_`m4/proto.m4')')
  
  # set up default values for options
! define(`ALIAS_FILE', `/etc/aliases')
  define(`confMAILER_NAME', ``MAILER-DAEMON'')
  define(`confFROM_LINE', `From $g  $d')
  define(`confOPERATORS', `.:%@!^/[]+')
--- 105,111 ----
  m4wrap(`include(_CF_DIR_`m4/proto.m4')')
  
  # set up default values for options
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))
  define(`confMAILER_NAME', ``MAILER-DAEMON'')
  define(`confFROM_LINE', `From $g  $d')
  define(`confOPERATORS', `.:%@!^/[]+')
***************
*** 133,142 ****
  define(`confTO_QUEUERETURN', `5d')
  define(`confTO_QUEUEWARN', `4h')
  define(`confTIME_ZONE', `USE_SYSTEM')
! define(`confCW_FILE', `/etc/sendmail.cw')
  define(`confMIME_FORMAT_ERRORS', `True')
  define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
  define(`confCR_FILE', `-o /etc/mail/relay-domains')
  
  divert(0)dnl
! VERSIONID(`@(#)cfhead.m4	8.22 (Berkeley) 5/19/98')
--- 133,142 ----
  define(`confTO_QUEUERETURN', `5d')
  define(`confTO_QUEUEWARN', `4h')
  define(`confTIME_ZONE', `USE_SYSTEM')
! define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/sendmail.cw'))
  define(`confMIME_FORMAT_ERRORS', `True')
  define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
  define(`confCR_FILE', `-o /etc/mail/relay-domains')
  
  divert(0)dnl
! VERSIONID(`@(#)cfhead.m4	8.23 (Berkeley) 10/6/1998')
diff -cr sendmail-8.9.1/cf/m4/nullrelay.m4 sendmail-8.9.2/cf/m4/nullrelay.m4
*** sendmail-8.9.1/cf/m4/nullrelay.m4	Tue May 19 16:34:41 1998
--- sendmail-8.9.2/cf/m4/nullrelay.m4	Tue Dec 29 09:42:07 1998
***************
*** 12,18 ****
  #
  divert(0)
  
! VERSIONID(`@(#)nullrelay.m4	8.19 (Berkeley) 5/19/98')
  
  #
  #  This configuration applies only to relay-only hosts.  They send
--- 12,18 ----
  #
  divert(0)
  
! VERSIONID(`@(#)nullrelay.m4	8.19 (Berkeley) 5/19/1998')
  
  #
  #  This configuration applies only to relay-only hosts.  They send
diff -cr sendmail-8.9.1/cf/m4/proto.m4 sendmail-8.9.2/cf/m4/proto.m4
*** sendmail-8.9.1/cf/m4/proto.m4	Tue Jun 30 11:23:41 1998
--- sendmail-8.9.2/cf/m4/proto.m4	Tue Dec 29 09:42:07 1998
***************
*** 12,23 ****
  #
  divert(0)
  
! VERSIONID(`@(#)proto.m4	8.223 (Berkeley) 6/30/98')
  
  MAILER(local)dnl
  
  # level 8 config file format
! V8/Berkeley
  divert(-1)
  
  # do some sanity checking
--- 12,23 ----
  #
  divert(0)
  
! VERSIONID(`@(#)proto.m4	8.237 (Berkeley) 12/17/1998')
  
  MAILER(local)dnl
  
  # level 8 config file format
! V8/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
  divert(-1)
  
  # do some sanity checking
***************
*** 220,226 ****
  _OPTION(AliasWait, `confALIAS_WAIT', 5m)
  
  # location of alias file
! _OPTION(AliasFile, `ALIAS_FILE', /etc/aliases)
  ')
  # minimum number of free blocks on filesystem
  _OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', 100)
--- 220,226 ----
  _OPTION(AliasWait, `confALIAS_WAIT', 5m)
  
  # location of alias file
! _OPTION(AliasFile, `ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/aliases, /etc/aliases))
  ')
  # minimum number of free blocks on filesystem
  _OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', 100)
***************
*** 244,250 ****
  _OPTION(AutoRebuildAliases, `confAUTO_REBUILD')
  
  # error message header/file
! _OPTION(ErrorHeader, `confERROR_MESSAGE', /etc/sendmail.oE)
  
  # error mode
  _OPTION(ErrorMode, `confERROR_MODE', print)
--- 244,250 ----
  _OPTION(AutoRebuildAliases, `confAUTO_REBUILD')
  
  # error message header/file
! _OPTION(ErrorHeader, `confERROR_MESSAGE', ifdef(`_USE_ETC_MAIL_', /etc/mail/error-header, /etc/sendmail.oE))
  
  # error mode
  _OPTION(ErrorMode, `confERROR_MODE', print)
***************
*** 262,268 ****
  _OPTION(MaxHopCount, `confMAX_HOP', 17)
  
  # location of help file
! O HelpFile=ifdef(`HELP_FILE', HELP_FILE, /usr/lib/sendmail.hf)
  
  # ignore dots as terminators in incoming messages?
  _OPTION(IgnoreDots, `confIGNORE_DOTS')
--- 262,268 ----
  _OPTION(MaxHopCount, `confMAX_HOP', 17)
  
  # location of help file
! O HelpFile=ifdef(`HELP_FILE', HELP_FILE, ifdef(`_USE_ETC_MAIL_', /etc/mail/helpfile, /usr/lib/sendmail.hf))
  
  # ignore dots as terminators in incoming messages?
  _OPTION(IgnoreDots, `confIGNORE_DOTS')
***************
*** 351,357 ****
  _OPTION(SuperSafe, `confSAFE_QUEUE')
  
  # status file
! O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', /etc/sendmail.st)
  
  # time zone handling:
  #  if undefined, use system default
--- 351,357 ----
  _OPTION(SuperSafe, `confSAFE_QUEUE')
  
  # status file
! O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/statistics, /etc/sendmail.st))
  
  # time zone handling:
  #  if undefined, use system default
***************
*** 365,371 ****
  _OPTION(DefaultUser, `confDEF_USER_ID', mailnull)
  
  # list of locations of user database file (null means no lookup)
! _OPTION(UserDatabaseSpec, `confUSERDB_SPEC', /etc/userdb)
  
  # fallback MX host
  _OPTION(FallbackMXhost, `confFALLBACK_MX', fall.back.host.net)
--- 365,371 ----
  _OPTION(DefaultUser, `confDEF_USER_ID', mailnull)
  
  # list of locations of user database file (null means no lookup)
! _OPTION(UserDatabaseSpec, `confUSERDB_SPEC', ifdef(`_USE_ETC_MAIL_', /etc/mail/userdb, /etc/userdb))
  
  # fallback MX host
  _OPTION(FallbackMXhost, `confFALLBACK_MX', fall.back.host.net)
***************
*** 407,413 ****
  _OPTION(DefaultCharSet, `confDEF_CHAR_SET', iso-8859-1)
  
  # service switch file (ignored on Solaris, Ultrix, OSF/1, others)
! _OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', /etc/service.switch)
  
  # hosts file (normally /etc/hosts)
  _OPTION(HostsFile, `confHOSTS_FILE', /etc/hosts)
--- 407,413 ----
  _OPTION(DefaultCharSet, `confDEF_CHAR_SET', iso-8859-1)
  
  # service switch file (ignored on Solaris, Ultrix, OSF/1, others)
! _OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/service.switch, /etc/service.switch))
  
  # hosts file (normally /etc/hosts)
  _OPTION(HostsFile, `confHOSTS_FILE', /etc/hosts)
***************
*** 466,471 ****
--- 466,484 ----
  # shall we get local names from our installed interfaces?
  _OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES')
  
+ ifdef(`confTRUSTED_USER',
+ `# Trusted user for file ownership and starting the daemon
+ O TrustedUser=confTRUSTED_USER
+ ')
+ ifdef(`confCONTROL_SOCKET_NAME',
+ `# Control socket for daemon management
+ O ControlSocketName=confCONTROL_SOCKET_NAME
+ ')
+ ifdef(`confMAX_MIME_HEADER_LENGTH',
+ `# Maximum MIME header length to protect MUAs
+ O MaxMimeHeaderLength=confMAX_MIME_HEADER_LENGTH
+ ')
+ 
  ###########################
  #   Message precedences   #
  ###########################
***************
*** 481,487 ****
  #####################
  
  # this is equivalent to setting class "t"
! ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, `/etc/sendmail.ct')
  Troot
  Tdaemon
  ifdef(`_NO_UUCP_', `dnl', `Tuucp')
--- 494,500 ----
  #####################
  
  # this is equivalent to setting class "t"
! ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, ifdef(`_USE_ETC_MAIL_', `/etc/mail/trusted-users', `/etc/sendmail.ct'))
  Troot
  Tdaemon
  ifdef(`_NO_UUCP_', `dnl', `Tuucp')
***************
*** 827,833 ****
  # deal with other remote names
  ifdef(`_MAILER_smtp_',
  `R$* < @$* > $*		$#_SMTP_ $@ $2 $: $1 < @ $2 > $3		user@host.domain',
! `R$* < @$* > $*		$#error $@ 5.1.2 $: "Unrecognized host name" $2')
  
  # handle locally delivered names
  R$=L			$#_LOCAL_ $: @ $1			special local names
--- 840,846 ----
  # deal with other remote names
  ifdef(`_MAILER_smtp_',
  `R$* < @$* > $*		$#_SMTP_ $@ $2 $: $1 < @ $2 > $3		user@host.domain',
! `R$* < @$* > $*		$#error $@ 5.1.2 $: "Unrecognized host name " $2')
  
  # handle locally delivered names
  R$=L			$#_LOCAL_ $: @ $1			special local names
***************
*** 965,971 ****
  S98
  undivert(3)dnl
  
! ifelse(confDELIVERY_MODE, defer, `errprint(`WARNING: Antispam rules not available in deferred delivery mode.')')
  ifdef(`ACCESS_TABLE', `dnl
  ######################################################################
  ###  LookUpDomain -- search for domain in access database
--- 978,984 ----
  S98
  undivert(3)dnl
  
! ifelse(substr(confDELIVERY_MODE,0,1), `d', `errprint(`WARNING: Antispam rules not available in deferred delivery mode.')')
  ifdef(`ACCESS_TABLE', `dnl
  ######################################################################
  ###  LookUpDomain -- search for domain in access database
***************
*** 999,1004 ****
--- 1012,1035 ----
  `dnl')
  
  ######################################################################
+ ###  CanonAddr --	Convert an address into a standard form for
+ ###			relay checking.  Route address syntax is
+ ###			crudely converted into a %-hack address.
+ ###
+ ###	Parameters:
+ ###		$1 -- full recipient address
+ ###
+ ###	Returns:
+ ###		parsed address, not in source route form
+ ######################################################################
+ 
+ SCanonAddr
+ R$*			$: $>Parse0 $>3 $1	make domain canonical
+ R< @ $+ > : $* @ $*	< @ $1 > : $2 % $3	change @ to % in src route
+ R$* < @ $+ > : $* : $*	$3 $1 < @ $2 > : $4	change to % hack.
+ R$* < @ $+ > : $*	$3 $1 < @ $2 >
+ 
+ ######################################################################
  ###  ParseRecipient --	Strip off hosts in $=R as well as possibly
  ###			$* $=m or the access database.
  ###			Check user portion for host separators.
***************
*** 1011,1037 ****
  ######################################################################
  
  SParseRecipient
! R$*			$: <?> $>Parse0 $>3 $1
! R<?> $* < @ $* . >	<?> $1 < @ $2 >		strip trailing dots
! R<?> $- < @ $* >	$: <?> $(dequote $1 $) < @ $2 >		dequote local part
  
  # if no $=O character, no host in the user portion, we are done
! R<?> $* $=O $* < @ $* >	$: <NO> $1 $2 $3 < @ $4>
! R<?> $*			$@ $1
  
  ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
  # if we relay, check username portion for user%host so host can be checked also
! R<NO> $* < @ $* $=m >	$: <RELAY> $1 < @ $2 $3 >', `dnl')
  ifdef(`_RELAY_HOSTS_ONLY_',
! `R<NO> $* < @ $=R >	$: <RELAY> $1 < @ $2 >
  ifdef(`ACCESS_TABLE', `dnl
! R<NO> $* < @ $* >	$: <$(access $2 $: NO $)> $1 < @ $2 >',`dnl')',
! `R<NO> $* < @ $* $=R >	$: <RELAY> $1 < @ $2 $3 >
  ifdef(`ACCESS_TABLE', `dnl
! R<NO> $* < @ $* >	$: $>LookUpDomain <$2> <NO> <$1 < @ $2 >>
! R<$+> <$+>		$: <$1> $2',`dnl')')
! R<RELAY> $* < @ $* >	$@ $>ParseRecipient $1
! R<$-> $*		$@ $2
  
  ######################################################################
  ###  check_relay -- check hostname/address on SMTP startup
--- 1042,1076 ----
  ######################################################################
  
  SParseRecipient
! R$*				$: <?> $>CanonAddr $1
! R<?> $* < @ $* . >		<?> $1 < @ $2 >			strip trailing dots
! R<?> $- < @ $* >		$: <?> $(dequote $1 $) < @ $2 >	dequote local part
  
  # if no $=O character, no host in the user portion, we are done
! R<?> $* $=O $* < @ $* >		$: <NO> $1 $2 $3 < @ $4>
! R<?> $*				$@ $1
  
  ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
  # if we relay, check username portion for user%host so host can be checked also
! R<NO> $* < @ $* $=m >		$: <RELAY> $1 < @ $2 $3 >', `dnl')
! 
! ifdef(`_RELAY_MX_SERVED_', `dnl
! R<NO> $* < @ $+ >		$: <MX> < : $(mxserved $2 $) : > < $1 < @$2 > >
! R<MX> < : $* <TEMP> : > $*	$#error $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
! R<MX> < $* : $=w. : $* > < $+ >	$: <RELAY> $4
! R<MX> < : $* : > < $+ >		$: <NO> $2', `dnl')
! 
  ifdef(`_RELAY_HOSTS_ONLY_',
! `R<NO> $* < @ $=R >		$: <RELAY> $1 < @ $2 >
  ifdef(`ACCESS_TABLE', `dnl
! R<NO> $* < @ $+ >		$: <$(access $2 $: NO $)> $1 < @ $2 >',`dnl')',
! `R<NO> $* < @ $* $=R >		$: <RELAY> $1 < @ $2 $3 >
  ifdef(`ACCESS_TABLE', `dnl
! R<NO> $* < @ $+ >		$: $>LookUpDomain <$2> <NO> <$1 < @ $2 >>
! R<$+> <$+>			$: <$1> $2',`dnl')')
! 
! R<RELAY> $* < @ $* >		$@ $>ParseRecipient $1
! R<$-> $*			$@ $2
  
  ######################################################################
  ###  check_relay -- check hostname/address on SMTP startup
***************
*** 1051,1069 ****
  
  ifdef(`ACCESS_TABLE', `dnl
  R$+ $| $+		$: $>LookUpDomain < $1 > <?> < $2 >
! R<?> < $+ >		$: $>LookUpAddress < $1 > <OK> < $1 >
! R<OK> < $* >		$: $1
! R<RELAY> < $* >		$: $1
  R<REJECT> $*		$#error $@ 5.7.1 $: "ifdef(`confREJECT_MSG', `confREJECT_MSG', `550 Access denied')"
  R<DISCARD> $*		$#discard $: discard
  R<$+> $*		$#error $@ 5.7.1 $: $1', `dnl')
  
  ifdef(`_RBL_', `dnl
! # MAPS project checks -- http://maps.vix.com/
  R$*			$: $&{client_addr}
  R$-.$-.$-.$-		$: $(host $4.$3.$2.$1._RBL_. $: OK $)
  ROK			$@ OK
! R$+			$#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused; see http://maps.vix.com/rbl/"',
  `dnl')
  
  ######################################################################
--- 1090,1109 ----
  
  ifdef(`ACCESS_TABLE', `dnl
  R$+ $| $+		$: $>LookUpDomain < $1 > <?> < $2 >
! R<?> < $+ >		$: $>LookUpAddress < $1 > <?> < $1 >
! R<?> < $+ >		$: $1
! R<OK> < $* >		$@ OK
! R<RELAY> < $* >		$@ RELAY
  R<REJECT> $*		$#error $@ 5.7.1 $: "ifdef(`confREJECT_MSG', `confREJECT_MSG', `550 Access denied')"
  R<DISCARD> $*		$#discard $: discard
  R<$+> $*		$#error $@ 5.7.1 $: $1', `dnl')
  
  ifdef(`_RBL_', `dnl
! # DNS based IP address spam lists
  R$*			$: $&{client_addr}
  R$-.$-.$-.$-		$: $(host $4.$3.$2.$1._RBL_. $: OK $)
  ROK			$@ OK
! R$+			$#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _RBL_"',
  `dnl')
  
  ######################################################################
***************
*** 1083,1090 ****
  R< $* > $*		$: $2
  
  R<>			$@ <OK>
! R$*			$: <?> $>Parse0 $>3 $1		make domain canonical
! R<?> $* < @ $+ . > $*	<?> $1 < @ $2 > $3		strip trailing dots
  # handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
  R<?> $* < $* $=P > $*	$: <OK> $1 < @ $2 $3 > $4
  ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',
--- 1123,1130 ----
  R< $* > $*		$: $2
  
  R<>			$@ <OK>
! R$*			$: <?> $>CanonAddr $1
! R<?> $* < @ $+ . >	<?> $1 < @ $2 >			strip trailing dots
  # handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
  R<?> $* < $* $=P > $*	$: <OK> $1 < @ $2 $3 > $4
  ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',
***************
*** 1158,1167 ****
  R< $* > $*		$: $2
  
  ifdef(`_LOOSE_RELAY_CHECK_',`dnl
! R$*			$: $>Parse0 $>3 $1
  R$* < @ $* . >		$1 < @ $2 >			strip trailing dots',
  `R$*			$: $>ParseRecipient $1		strip relayable hosts')
  
  ifdef(`_BLACKLIST_RCPT_',`dnl
  ifdef(`ACCESS_TABLE', `dnl
  # blacklist local users or any host from receiving mail
--- 1198,1218 ----
  R< $* > $*		$: $2
  
  ifdef(`_LOOSE_RELAY_CHECK_',`dnl
! R$*			$: $>CanonAddr $1
  R$* < @ $* . >		$1 < @ $2 >			strip trailing dots',
  `R$*			$: $>ParseRecipient $1		strip relayable hosts')
  
+ ifdef(`_BESTMX_IS_LOCAL_',`dnl
+ ifelse(_BESTMX_IS_LOCAL_, `', `dnl
+ # unlimited bestmx
+ R$* < @ $* > $*			$: $1 < @ $2 @@ $(bestmx $2 $) > $3',
+ `dnl
+ # limit bestmx to $=B
+ R$* < @ $* $=B > $*		$: $1 < @ $2 $3 . @@ $(bestmx $2 $3 $) > $4')
+ R$* $=O $* < @ $* @@ $=w . > $*	$@ $>Basic_check_rcpt $1 $2 $3
+ R$* < @ $* @@ $=w . > $*	$: $1 < @ $3 > $4
+ R$* < @ $* @@ $* > $*		$: $1 < @ $2 > $4')
+ 
  ifdef(`_BLACKLIST_RCPT_',`dnl
  ifdef(`ACCESS_TABLE', `dnl
  # blacklist local users or any host from receiving mail
***************
*** 1201,1212 ****
  R$+ < @ $* >		$: < : $(mxserved $2 $) : > $1 < @ $2 >
  R< : $* <TEMP> : > $*	$#error $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
  R<$* : $=w . : $*> $*	$@ OK
! R<$*> $*			$: $2',
  `dnl')
  
  # check for local user (i.e. unqualified address)
  R$*			$: <?> $1
! R<?> $+ < @ $+ >	$: <REMOTE> $1 < @ $2 >
  # local user is ok
  R<?> $+			$@ OK
  R<$+> $*		$: $2
--- 1252,1263 ----
  R$+ < @ $* >		$: < : $(mxserved $2 $) : > $1 < @ $2 >
  R< : $* <TEMP> : > $*	$#error $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
  R<$* : $=w . : $*> $*	$@ OK
! R< : $* : > $*		$: $2',
  `dnl')
  
  # check for local user (i.e. unqualified address)
  R$*			$: <?> $1
! R<?> $* < @ $+ >	$: <REMOTE> $1 < @ $2 >
  # local user is ok
  R<?> $+			$@ OK
  R<$+> $*		$: $2
***************
*** 1248,1254 ****
  
  ifdef(`_RELAY_LOCAL_FROM_', `dnl
  # anything with a local FROM is ok
! R$*			$: $1 $| $>Parse0 $>3 $&f
  R$* $| $+ < @ $=w . >	$@ OK			FROM local
  R$* $| $*		$: $1
  ', `dnl')
--- 1299,1305 ----
  
  ifdef(`_RELAY_LOCAL_FROM_', `dnl
  # anything with a local FROM is ok
! R$*			$: $1 $| $>CanonAddr $&f
  R$* $| $+ < @ $=w . >	$@ OK			FROM local
  R$* $| $*		$: $1
  ', `dnl')
diff -cr sendmail-8.9.1/cf/m4/version.m4 sendmail-8.9.2/cf/m4/version.m4
*** sendmail-8.9.1/cf/m4/version.m4	Thu Jul  2 11:05:26 1998
--- sendmail-8.9.2/cf/m4/version.m4	Tue Dec 29 09:58:11 1998
***************
*** 10,17 ****
  # the sendmail distribution.
  #
  #
! VERSIONID(`@(#)version.m4	8.9.1.1 (Berkeley) 7/2/98')
  #
  divert(0)
  # Configuration version number
! DZ8.9.1`'ifdef(`confCF_VERSION', `/confCF_VERSION')
--- 10,17 ----
  # the sendmail distribution.
  #
  #
! VERSIONID(`@(#)version.m4	8.9.2.1 (Berkeley) 12/29/1998')
  #
  divert(0)
  # Configuration version number
! DZ8.9.2`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff -cr sendmail-8.9.1/cf/mailer/cyrus.m4 sendmail-8.9.2/cf/mailer/cyrus.m4
*** sendmail-8.9.1/cf/mailer/cyrus.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/cyrus.m4	Tue Dec 29 09:42:06 1998
***************
*** 47,53 ****
  ###   Cyrus Mailer specification               ###
  ##################################################
  
! VERSIONID(`@(#)cyrus.m4	8.9 (Carnegie Mellon) 5/19/98')
  
  Mcyrus,		P=CYRUS_MAILER_PATH, F=CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), S=10, R=20/40, T=X-Unix,
  		ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER,
--- 47,53 ----
  ###   Cyrus Mailer specification               ###
  ##################################################
  
! VERSIONID(`@(#)cyrus.m4	8.9 (Carnegie Mellon) 5/19/1998')
  
  Mcyrus,		P=CYRUS_MAILER_PATH, F=CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), S=10, R=20/40, T=X-Unix,
  		ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER,
diff -cr sendmail-8.9.1/cf/mailer/fax.m4 sendmail-8.9.2/cf/mailer/fax.m4
*** sendmail-8.9.1/cf/mailer/fax.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/fax.m4	Tue Dec 29 09:42:06 1998
***************
*** 26,32 ****
  ###   FAX Mailer specification   ###
  ####################################
  
! VERSIONID(`@(#)fax.m4	8.11 (Berkeley) 5/19/98')
  
  Mfax,		P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,
  		A=FAX_MAILER_ARGS
--- 26,32 ----
  ###   FAX Mailer specification   ###
  ####################################
  
! VERSIONID(`@(#)fax.m4	8.11 (Berkeley) 5/19/1998')
  
  Mfax,		P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,
  		A=FAX_MAILER_ARGS
diff -cr sendmail-8.9.1/cf/mailer/local.m4 sendmail-8.9.2/cf/mailer/local.m4
*** sendmail-8.9.1/cf/mailer/local.m4	Tue Jun 30 11:28:18 1998
--- sendmail-8.9.2/cf/mailer/local.m4	Tue Dec 29 09:42:06 1998
***************
*** 23,29 ****
  ###   Local and Program Mailer specification   ###
  ##################################################
  
! VERSIONID(`@(#)local.m4	8.30 (Berkeley) 6/30/98')
  
  Mlocal,		P=LOCAL_MAILER_PATH, F=CONCAT(`lsDFMAw5:/|@q', LOCAL_MAILER_FLAGS), S=10/30, R=20/40,
  		_OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/X-Unix,
--- 23,29 ----
  ###   Local and Program Mailer specification   ###
  ##################################################
  
! VERSIONID(`@(#)local.m4	8.30 (Berkeley) 6/30/1998')
  
  Mlocal,		P=LOCAL_MAILER_PATH, F=CONCAT(`lsDFMAw5:/|@q', LOCAL_MAILER_FLAGS), S=10/30, R=20/40,
  		_OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/X-Unix,
diff -cr sendmail-8.9.1/cf/mailer/mail11.m4 sendmail-8.9.2/cf/mailer/mail11.m4
*** sendmail-8.9.1/cf/mailer/mail11.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/mail11.m4	Tue Dec 29 09:42:06 1998
***************
*** 40,46 ****
  ###   UTK-MAIL11 Mailer specification   ###
  ###########################################
  
! VERSIONID(`@(#)mail11.m4	8.8 (Berkeley) 5/19/98')
  
  Mmail11, P=MAIL11_MAILER_PATH, F=MAIL11_MAILER_FLAGS, S=15, R=25,
  	A=MAIL11_MAILER_ARGS
--- 40,46 ----
  ###   UTK-MAIL11 Mailer specification   ###
  ###########################################
  
! VERSIONID(`@(#)mail11.m4	8.8 (Berkeley) 5/19/1998')
  
  Mmail11, P=MAIL11_MAILER_PATH, F=MAIL11_MAILER_FLAGS, S=15, R=25,
  	A=MAIL11_MAILER_ARGS
diff -cr sendmail-8.9.1/cf/mailer/phquery.m4 sendmail-8.9.2/cf/mailer/phquery.m4
*** sendmail-8.9.1/cf/mailer/phquery.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/phquery.m4	Tue Dec 29 09:42:06 1998
***************
*** 23,29 ****
  ###   PH Mailer specification   ###
  ####################################
  
! VERSIONID(`@(#)phquery.m4	8.6 (Berkeley) 5/19/98')
  
  Mph,		P=PH_MAILER_PATH, F=CONCAT(`nrDFM', PH_MAILER_FLAGS), S=10, R=20/40,
  		A=PH_MAILER_ARGS
--- 23,29 ----
  ###   PH Mailer specification   ###
  ####################################
  
! VERSIONID(`@(#)phquery.m4	8.6 (Berkeley) 5/19/1998')
  
  Mph,		P=PH_MAILER_PATH, F=CONCAT(`nrDFM', PH_MAILER_FLAGS), S=10, R=20/40,
  		A=PH_MAILER_ARGS
diff -cr sendmail-8.9.1/cf/mailer/pop.m4 sendmail-8.9.2/cf/mailer/pop.m4
*** sendmail-8.9.1/cf/mailer/pop.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/pop.m4	Tue Dec 29 09:42:06 1998
***************
*** 21,27 ****
  ###   POP Mailer specification   ###
  ####################################
  
! VERSIONID(`@(#)pop.m4	8.11 (Berkeley) 5/19/98')
  
  Mpop,		P=POP_MAILER_PATH, F=CONCAT(`lsDFMq', POP_MAILER_FLAGS), S=10, R=20/40, T=DNS/RFC822/X-Unix,
  		A=POP_MAILER_ARGS
--- 21,27 ----
  ###   POP Mailer specification   ###
  ####################################
  
! VERSIONID(`@(#)pop.m4	8.11 (Berkeley) 5/19/1998')
  
  Mpop,		P=POP_MAILER_PATH, F=CONCAT(`lsDFMq', POP_MAILER_FLAGS), S=10, R=20/40, T=DNS/RFC822/X-Unix,
  		A=POP_MAILER_ARGS
diff -cr sendmail-8.9.1/cf/mailer/procmail.m4 sendmail-8.9.2/cf/mailer/procmail.m4
*** sendmail-8.9.1/cf/mailer/procmail.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/procmail.m4	Tue Dec 29 09:42:06 1998
***************
*** 26,32 ****
  ###   PROCMAIL Mailer specification   ###
  ##################*****##################
  
! VERSIONID(`@(#)procmail.m4	8.11 (Berkeley) 5/19/98')
  
  Mprocmail,	P=PROCMAIL_MAILER_PATH, F=CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), S=11/31, R=21/31, T=DNS/RFC822/X-Unix,
  		ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')A=PROCMAIL_MAILER_ARGS
--- 26,32 ----
  ###   PROCMAIL Mailer specification   ###
  ##################*****##################
  
! VERSIONID(`@(#)procmail.m4	8.11 (Berkeley) 5/19/1998')
  
  Mprocmail,	P=PROCMAIL_MAILER_PATH, F=CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), S=11/31, R=21/31, T=DNS/RFC822/X-Unix,
  		ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')A=PROCMAIL_MAILER_ARGS
diff -cr sendmail-8.9.1/cf/mailer/smtp.m4 sendmail-8.9.2/cf/mailer/smtp.m4
*** sendmail-8.9.1/cf/mailer/smtp.m4	Tue May 19 16:34:46 1998
--- sendmail-8.9.2/cf/mailer/smtp.m4	Tue Dec 29 09:42:06 1998
***************
*** 22,28 ****
  ###   SMTP Mailer specification   ###
  #####################################
  
! VERSIONID(`@(#)smtp.m4	8.38 (Berkeley) 5/19/98')
  
  Msmtp,		P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990,
  		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
--- 22,28 ----
  ###   SMTP Mailer specification   ###
  #####################################
  
! VERSIONID(`@(#)smtp.m4	8.38 (Berkeley) 5/19/1998')
  
  Msmtp,		P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990,
  		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
diff -cr sendmail-8.9.1/cf/mailer/usenet.m4 sendmail-8.9.2/cf/mailer/usenet.m4
*** sendmail-8.9.1/cf/mailer/usenet.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/usenet.m4	Tue Dec 29 09:42:06 1998
***************
*** 19,25 ****
  ###  USENET Mailer specification ###
  ####################################
  
! VERSIONID(`@(#)usenet.m4	8.10 (Berkeley) 5/19/98')
  
  Musenet,	P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20,
  		_OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,
--- 19,25 ----
  ###  USENET Mailer specification ###
  ####################################
  
! VERSIONID(`@(#)usenet.m4	8.10 (Berkeley) 5/19/1998')
  
  Musenet,	P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20,
  		_OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,
diff -cr sendmail-8.9.1/cf/mailer/uucp.m4 sendmail-8.9.2/cf/mailer/uucp.m4
*** sendmail-8.9.1/cf/mailer/uucp.m4	Tue May 19 16:34:47 1998
--- sendmail-8.9.2/cf/mailer/uucp.m4	Tue Dec 29 09:42:06 1998
***************
*** 22,28 ****
  ###   UUCP Mailer specification   ###
  #####################################
  
! VERSIONID(`@(#)uucp.m4	8.30 (Berkeley) 5/19/98')
  
  #
  #  There are innumerable variations on the UUCP mailer.  It really
--- 22,28 ----
  ###   UUCP Mailer specification   ###
  #####################################
  
! VERSIONID(`@(#)uucp.m4	8.30 (Berkeley) 5/19/1998')
  
  #
  #  There are innumerable variations on the UUCP mailer.  It really
diff -cr sendmail-8.9.1/cf/ostype/aix2.m4 sendmail-8.9.2/cf/ostype/aix2.m4
*** sendmail-8.9.1/cf/ostype/aix2.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/aix2.m4	Tue Dec 29 09:42:10 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)aix2.m4	8.8 (Berkeley) 5/19/98')
  define(`LOCAL_MAILER_PATH', /bin/bellmail)dnl
  define(`LOCAL_MAILER_ARGS', mail $u)dnl
  define(`LOCAL_MAILER_FLAGS', `mn9')dnl
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)aix2.m4	8.8 (Berkeley) 5/19/1998')
  define(`LOCAL_MAILER_PATH', /bin/bellmail)dnl
  define(`LOCAL_MAILER_ARGS', mail $u)dnl
  define(`LOCAL_MAILER_FLAGS', `mn9')dnl
diff -cr sendmail-8.9.1/cf/ostype/aix3.m4 sendmail-8.9.2/cf/ostype/aix3.m4
*** sendmail-8.9.1/cf/ostype/aix3.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/aix3.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)aix3.m4	8.12 (Berkeley) 5/19/98')
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail $u)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)aix3.m4	8.12 (Berkeley) 5/19/1998')
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail $u)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
diff -cr sendmail-8.9.1/cf/ostype/aix4.m4 sendmail-8.9.2/cf/ostype/aix4.m4
*** sendmail-8.9.1/cf/ostype/aix4.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/aix4.m4	Tue Dec 29 09:42:10 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)aix4.m4	8.7 (Berkeley) 5/19/98')
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)aix4.m4	8.7 (Berkeley) 5/19/1998')
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')dnl
diff -cr sendmail-8.9.1/cf/ostype/altos.m4 sendmail-8.9.2/cf/ostype/altos.m4
*** sendmail-8.9.1/cf/ostype/altos.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/altos.m4	Tue Dec 29 09:42:10 1998
***************
*** 14,24 ****
  #
  
  divert(0)
! VERSIONID(`@(#)altos.m4	8.9 (Berkeley) 5/19/98')
  
! define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mPuhCE9)')dnl
--- 14,24 ----
  #
  
  divert(0)
! VERSIONID(`@(#)altos.m4	8.10 (Berkeley) 10/6/1998')
  
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mPuhCE9)')dnl
diff -cr sendmail-8.9.1/cf/ostype/amdahl-uts.m4 sendmail-8.9.2/cf/ostype/amdahl-uts.m4
*** sendmail-8.9.1/cf/ostype/amdahl-uts.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/amdahl-uts.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,23 ****
  #
  
  divert(0)
! VERSIONID(`@(#)amdahl-uts.m4	8.10 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`ALIAS_FILE', /etc/mail/aliases)
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSn9')')
! define(`confCW_FILE', /etc/mail/sendmail.cw)
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,23 ----
  #
  
  divert(0)
! VERSIONID(`@(#)amdahl-uts.m4	8.11 (Berkeley) 10/6/1998')
  divert(-1)
  
  define(`ALIAS_FILE', /etc/mail/aliases)
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSn9')')
! define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/aux.m4 sendmail-8.9.2/cf/ostype/aux.m4
*** sendmail-8.9.1/cf/ostype/aux.m4	Tue May 19 16:34:50 1998
--- sendmail-8.9.2/cf/ostype/aux.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,21 ****
  #
  
  divert(0)
! VERSIONID(`@(#)aux.m4	8.10 (Berkeley) 5/19/98')
! define(`ALIAS_FILE', /usr/lib/aliases)dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mn9)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d -r $f $u')')dnl
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)aux.m4	8.11 (Berkeley) 10/6/1998')
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mn9)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d -r $f $u')')dnl
diff -cr sendmail-8.9.1/cf/ostype/bsd4.3.m4 sendmail-8.9.2/cf/ostype/bsd4.3.m4
*** sendmail-8.9.1/cf/ostype/bsd4.3.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/bsd4.3.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,17 ****
  #
  
  divert(0)
! VERSIONID(`@(#)bsd4.3.m4	8.9 (Berkeley) 5/19/98')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
--- 12,17 ----
  #
  
  divert(0)
! VERSIONID(`@(#)bsd4.3.m4	8.9 (Berkeley) 5/19/1998')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff -cr sendmail-8.9.1/cf/ostype/bsd4.4.m4 sendmail-8.9.2/cf/ostype/bsd4.4.m4
*** sendmail-8.9.1/cf/ostype/bsd4.4.m4	Tue May 19 16:34:50 1998
--- sendmail-8.9.2/cf/ostype/bsd4.4.m4	Tue Dec 29 09:42:08 1998
***************
*** 13,20 ****
  #
  
  divert(0)
! VERSIONID(`@(#)bsd4.4.m4	8.9 (Berkeley) 5/19/98')
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/misc/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/log/sendmail.st)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
--- 13,20 ----
  #
  
  divert(0)
! VERSIONID(`@(#)bsd4.4.m4	8.10 (Berkeley) 10/6/1998')
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/misc/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/log/sendmail.st'))')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff -cr sendmail-8.9.1/cf/ostype/bsdi1.0.m4 sendmail-8.9.2/cf/ostype/bsdi1.0.m4
*** sendmail-8.9.1/cf/ostype/bsdi1.0.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/bsdi1.0.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,16 ****
  #
  
  divert(0)
! VERSIONID(`@(#)bsdi1.0.m4	8.7 (Berkeley) 5/19/98')dnl
  include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
--- 12,16 ----
  #
  
  divert(0)
! VERSIONID(`@(#)bsdi1.0.m4	8.7 (Berkeley) 5/19/1998')dnl
  include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff -cr sendmail-8.9.1/cf/ostype/bsdi2.0.m4 sendmail-8.9.2/cf/ostype/bsdi2.0.m4
*** sendmail-8.9.1/cf/ostype/bsdi2.0.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/bsdi2.0.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,16 ****
  #
  
  divert(0)
! VERSIONID(`@(#)bsdi2.0.m4	8.6 (Berkeley) 5/19/98')dnl
  include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
--- 12,16 ----
  #
  
  divert(0)
! VERSIONID(`@(#)bsdi2.0.m4	8.6 (Berkeley) 5/19/1998')dnl
  include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff -cr sendmail-8.9.1/cf/ostype/dgux.m4 sendmail-8.9.2/cf/ostype/dgux.m4
*** sendmail-8.9.1/cf/ostype/dgux.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/dgux.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)dgux.m4	8.10 (Berkeley) 5/19/98')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', m9)')dnl
  define(`confTIME_ZONE', `USE_TZ')dnl
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)dgux.m4	8.10 (Berkeley) 5/19/1998')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', m9)')dnl
  define(`confTIME_ZONE', `USE_TZ')dnl
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/domainos.m4 sendmail-8.9.2/cf/ostype/domainos.m4
*** sendmail-8.9.1/cf/ostype/domainos.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/domainos.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,21 ****
  #
  
  divert(0)
! VERSIONID(`@(#)domainos.m4	8.9 (Berkeley) 5/19/98')
  divert(-1)
  
! define(`ALIAS_FILE', /usr/lib/aliases)
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)domainos.m4	8.10 (Berkeley) 10/6/1998')
  divert(-1)
  
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/dynix3.2.m4 sendmail-8.9.2/cf/ostype/dynix3.2.m4
*** sendmail-8.9.1/cf/ostype/dynix3.2.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/dynix3.2.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)dynix3.2.m4	8.9 (Berkeley) 5/19/98')
! define(`ALIAS_FILE', /usr/lib/aliases)dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)dynix3.2.m4	8.10 (Berkeley) 10/6/1998')
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/gnuhurd.m4 sendmail-8.9.2/cf/ostype/gnuhurd.m4
*** sendmail-8.9.1/cf/ostype/gnuhurd.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/gnuhurd.m4	Tue Dec 29 09:42:10 1998
***************
*** 13,20 ****
  #
  
  divert(0)
! VERSIONID(`@(#)gnuhurd.m4	8.7 (Berkeley) 5/19/98')
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /share/misc/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/log/sendmail.st)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl
  define(`confEBINDIR', `/libexec')dnl
--- 13,20 ----
  #
  
  divert(0)
! VERSIONID(`@(#)gnuhurd.m4	8.8 (Berkeley) 10/6/1998')
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/share/misc/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/log/sendmail.st'))')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl
  define(`confEBINDIR', `/libexec')dnl
diff -cr sendmail-8.9.1/cf/ostype/hpux10.m4 sendmail-8.9.2/cf/ostype/hpux10.m4
*** sendmail-8.9.1/cf/ostype/hpux10.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/hpux10.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,23 ****
  #
  
  divert(0)
! VERSIONID(`@(#)hpux10.m4	8.13 (Berkeley) 5/19/98')
  
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
  define(`ALIAS_FILE', /etc/mail/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/lib/sendmail.hf)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
--- 12,23 ----
  #
  
  divert(0)
! VERSIONID(`@(#)hpux10.m4	8.14 (Berkeley) 10/6/1998')
  
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
  define(`ALIAS_FILE', /etc/mail/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/lib/sendmail.hf'))')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
diff -cr sendmail-8.9.1/cf/ostype/hpux9.m4 sendmail-8.9.2/cf/ostype/hpux9.m4
*** sendmail-8.9.1/cf/ostype/hpux9.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/hpux9.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,22 ****
  #
  
  divert(0)
! VERSIONID(`@(#)hpux9.m4	8.18 (Berkeley) 5/19/98')
  
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! define(`ALIAS_FILE', /usr/lib/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)hpux9.m4	8.19 (Berkeley) 10/6/1998')
  
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
diff -cr sendmail-8.9.1/cf/ostype/irix4.m4 sendmail-8.9.2/cf/ostype/irix4.m4
*** sendmail-8.9.1/cf/ostype/irix4.m4	Tue May 19 16:34:50 1998
--- sendmail-8.9.2/cf/ostype/irix4.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,20 ****
  #
  
  divert(0)
! VERSIONID(`@(#)irix4.m4	8.13 (Berkeley) 5/19/98')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehm9)')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! define(`ALIAS_FILE', /usr/lib/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,20 ----
  #
  
  divert(0)
! VERSIONID(`@(#)irix4.m4	8.14 (Berkeley) 10/6/1998')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehm9)')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/irix5.m4 sendmail-8.9.2/cf/ostype/irix5.m4
*** sendmail-8.9.1/cf/ostype/irix5.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/irix5.m4	Tue Dec 29 09:42:09 1998
***************
*** 28,40 ****
  #
  
  divert(0)
! VERSIONID(`@(#)irix5.m4	8.10 (Berkeley) 5/19/98')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
! define(`ALIAS_FILE', /etc/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
  define(`confDEF_USER_ID', `998:998')dnl
  define(`confTIME_ZONE', USE_TZ)dnl
  define(`confEBINDIR', `/usr/lib')dnl
--- 28,40 ----
  #
  
  divert(0)
! VERSIONID(`@(#)irix5.m4	8.11 (Berkeley) 10/6/1998')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')dnl
  define(`confDEF_USER_ID', `998:998')dnl
  define(`confTIME_ZONE', USE_TZ)dnl
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/irix6.m4 sendmail-8.9.2/cf/ostype/irix6.m4
*** sendmail-8.9.1/cf/ostype/irix6.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/irix6.m4	Tue Dec 29 09:42:10 1998
***************
*** 28,40 ****
  #
  
  divert(0)
! VERSIONID(`@(#)irix6.m4	8.7 (Berkeley) 5/19/98')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
! define(`ALIAS_FILE', /etc/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
  define(`confDEF_USER_ID', `998:998')dnl
  define(`confTIME_ZONE', USE_TZ)dnl
  define(`confEBINDIR', `/usr/lib')dnl
--- 28,40 ----
  #
  
  divert(0)
! VERSIONID(`@(#)irix6.m4	8.8 (Berkeley) 10/6/1998')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')dnl
  define(`confDEF_USER_ID', `998:998')dnl
  define(`confTIME_ZONE', USE_TZ)dnl
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/isc4.1.m4 sendmail-8.9.2/cf/ostype/isc4.1.m4
*** sendmail-8.9.1/cf/ostype/isc4.1.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/isc4.1.m4	Tue Dec 29 09:42:09 1998
***************
*** 13,26 ****
  #
  
  divert(0)
! VERSIONID(`@(#)isc4.1.m4	8.10 (Berkeley) 5/19/98')
! define(`ALIAS_FILE', /usr/lib/aliases)dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail -s $u')')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `humS9')')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/lmail)')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -gC $h!rmail ($u)')')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  define(`confTIME_ZONE', `USE_TZ')dnl
--- 13,26 ----
  #
  
  divert(0)
! VERSIONID(`@(#)isc4.1.m4	8.11 (Berkeley) 10/6/1998')
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail -s $u')')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `humS9')')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/lmail)')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -gC $h!rmail ($u)')')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  define(`confTIME_ZONE', `USE_TZ')dnl
diff -cr sendmail-8.9.1/cf/ostype/linux.m4 sendmail-8.9.2/cf/ostype/linux.m4
*** sendmail-8.9.1/cf/ostype/linux.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/linux.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,16 ****
  #
  
  divert(0)
! VERSIONID(`@(#)linux.m4	8.7 (Berkeley) 5/19/98')
  define(`LOCAL_MAILER_PATH', /bin/mail.local)dnl
--- 12,16 ----
  #
  
  divert(0)
! VERSIONID(`@(#)linux.m4	8.7 (Berkeley) 5/19/1998')
  define(`LOCAL_MAILER_PATH', /bin/mail.local)dnl
diff -cr sendmail-8.9.1/cf/ostype/maxion.m4 sendmail-8.9.2/cf/ostype/maxion.m4
*** sendmail-8.9.1/cf/ostype/maxion.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/maxion.m4	Tue Dec 29 09:42:10 1998
***************
*** 15,26 ****
  #
  
  divert(0)
! VERSIONID(`@(#)maxion.m4	8.10 (Berkeley) 5/19/98')
  
! define(`ALIAS_FILE',        `/etc/ucbmail/aliases')dnl
! define(`HELP_FILE',         `/etc/ucbmail/sendmail.hf')dnl
  define(`QUEUE_DIR',         `/var/spool/mqueue')dnl
! define(`STATUS_FILE',       `/var/adm/log/sendmail.st')dnl
  define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
  define(`LOCAL_MAILER_FLAGS',`rmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
--- 15,26 ----
  #
  
  divert(0)
! VERSIONID(`@(#)maxion.m4	8.11 (Berkeley) 10/6/1998')
  
! define(`ALIAS_FILE',        ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/ucbmail/aliases'))dnl
! define(`HELP_FILE',         ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/ucbmail/sendmail.hf'))dnl
  define(`QUEUE_DIR',         `/var/spool/mqueue')dnl
! define(`STATUS_FILE',       ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/adm/log/sendmail.st'))dnl
  define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
  define(`LOCAL_MAILER_FLAGS',`rmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
diff -cr sendmail-8.9.1/cf/ostype/mklinux.m4 sendmail-8.9.2/cf/ostype/mklinux.m4
*** sendmail-8.9.1/cf/ostype/mklinux.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/mklinux.m4	Tue Dec 29 09:42:10 1998
***************
*** 14,22 ****
  #
  
  divert(0)
! VERSIONID(`@(#)mklinux.m4	8.7 (Berkeley) 5/19/98')
  ifdef(`STATUS_FILE',,
! 	`define(`STATUS_FILE', /var/log/sendmail.st)')
  ifdef(`PROCMAIL_MAILER_PATH',,
  	define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
  FEATURE(local_procmail)
--- 14,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)mklinux.m4	8.8 (Berkeley) 10/6/1998')
  ifdef(`STATUS_FILE',,
! 	`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/log/sendmail.st'))')
  ifdef(`PROCMAIL_MAILER_PATH',,
  	define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
  FEATURE(local_procmail)
diff -cr sendmail-8.9.1/cf/ostype/nextstep.m4 sendmail-8.9.2/cf/ostype/nextstep.m4
*** sendmail-8.9.1/cf/ostype/nextstep.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/nextstep.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,22 ****
  #
  
  divert(0)
! VERSIONID(`@(#)nextstep.m4	8.14 (Berkeley) 5/19/98')
  define(`ALIAS_FILE', /etc/sendmail/aliases)dnl
! define(`confCW_FILE', /etc/sendmail/sendmail.cw)dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/sendmail/sendmail.st)')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmnP9')')dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)nextstep.m4	8.15 (Berkeley) 10/6/1998')
  define(`ALIAS_FILE', /etc/sendmail/aliases)dnl
! define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/sendmail/sendmail.cw'))dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/sendmail/sendmail.st'))')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmnP9')')dnl
diff -cr sendmail-8.9.1/cf/ostype/osf1.m4 sendmail-8.9.2/cf/ostype/osf1.m4
*** sendmail-8.9.1/cf/ostype/osf1.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/osf1.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,19 ****
  #
  
  divert(0)
! VERSIONID(`@(#)osf1.m4	8.10 (Berkeley) 5/19/98')
! define(`ALIAS_FILE', /usr/adm/sendmail/aliases)dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/adm/sendmail/sendmail.st)')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /usr/share/lib/sendmail.hf)')dnl
  define(`confDEF_USER_ID', `daemon')
--- 12,19 ----
  #
  
  divert(0)
! VERSIONID(`@(#)osf1.m4	8.11 (Berkeley) 10/6/1998')
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/adm/sendmail/aliases'))dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/adm/sendmail/sendmail.st'))')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/lib/sendmail.hf'))')dnl
  define(`confDEF_USER_ID', `daemon')
diff -cr sendmail-8.9.1/cf/ostype/powerux.m4 sendmail-8.9.2/cf/ostype/powerux.m4
*** sendmail-8.9.1/cf/ostype/powerux.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/powerux.m4	Tue Dec 29 09:42:10 1998
***************
*** 12,22 ****
  #
  
  divert(0)
! VERSIONID(`@(#)powerux.m4	8.7 (Berkeley) 5/19/98')
  
  define(`ALIAS_FILE', /etc/mail/aliases)dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', /etc/mail/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /etc/mail/sendmail.st)')dnl
  define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
  define(`LOCAL_MAILER_FLAGS', `mn9')dnl
  define(`LOCAL_MAILER_ARGS', `rmail $u')dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)powerux.m4	8.8 (Berkeley) 10/6/1998')
  
  define(`ALIAS_FILE', /etc/mail/aliases)dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')dnl
  define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
  define(`LOCAL_MAILER_FLAGS', `mn9')dnl
  define(`LOCAL_MAILER_ARGS', `rmail $u')dnl
diff -cr sendmail-8.9.1/cf/ostype/ptx2.m4 sendmail-8.9.2/cf/ostype/ptx2.m4
*** sendmail-8.9.1/cf/ostype/ptx2.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/ptx2.m4	Tue Dec 29 09:42:09 1998
***************
*** 14,24 ****
  # Support for DYNIX/ptx 2.x.
  
  divert(0)
! VERSIONID(`@(#)ptx2.m4	8.11 (Berkeley) 5/19/98')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! define(`ALIAS_FILE', /usr/lib/aliases)dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/lib/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  define(`LOCAL_MAILER_PATH', `/bin/mail')dnl
  define(`LOCAL_MAILER_FLAGS', `fmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `eu')dnl
--- 14,24 ----
  # Support for DYNIX/ptx 2.x.
  
  divert(0)
! VERSIONID(`@(#)ptx2.m4	8.12 (Berkeley) 10/6/1998')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  define(`LOCAL_MAILER_PATH', `/bin/mail')dnl
  define(`LOCAL_MAILER_FLAGS', `fmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `eu')dnl
diff -cr sendmail-8.9.1/cf/ostype/qnx.m4 sendmail-8.9.2/cf/ostype/qnx.m4
*** sendmail-8.9.1/cf/ostype/qnx.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/qnx.m4	Tue Dec 29 09:42:10 1998
***************
*** 12,20 ****
  #
  
  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
--- 12,20 ----
  #
  
  divert(0)
! VERSIONID(`@(#)qnx.m4	8.8 (Berkeley) 10/6/1998')
  define(`QUEUE_DIR', /usr/spool/mqueue)dnl
! define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/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
diff -cr sendmail-8.9.1/cf/ostype/riscos4.5.m4 sendmail-8.9.2/cf/ostype/riscos4.5.m4
*** sendmail-8.9.1/cf/ostype/riscos4.5.m4	Tue May 19 16:34:50 1998
--- sendmail-8.9.2/cf/ostype/riscos4.5.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,21 ****
  #
  
  divert(0)
! VERSIONID(`@(#)riscos4.5.m4	8.10 (Berkeley) 5/19/98')
  
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
! define(`ALIAS_FILE', `/usr/lib/aliases')dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', `/usr/lib/sendmail.hf')')dnl
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)riscos4.5.m4	8.11 (Berkeley) 10/6/1998')
  
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/sco-uw-2.1.m4 sendmail-8.9.2/cf/ostype/sco-uw-2.1.m4
*** sendmail-8.9.1/cf/ostype/sco-uw-2.1.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/sco-uw-2.1.m4	Tue Dec 29 09:42:10 1998
***************
*** 12,22 ****
  #	Contributed by Christopher Durham <chrisdu@SCO.COM> of SCO.
  #
  divert(0)
! VERSIONID(`@(#)sco-uw-2.1.m4	8.6 (Berkeley) 5/19/98')
  
! define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
  define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
  define(`LOCAL_MAILER_FLAGS', `fhCEn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
--- 12,22 ----
  #	Contributed by Christopher Durham <chrisdu@SCO.COM> of SCO.
  #
  divert(0)
! VERSIONID(`@(#)sco-uw-2.1.m4	8.7 (Berkeley) 10/6/1998')
  
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
  define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
  define(`LOCAL_MAILER_FLAGS', `fhCEn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
diff -cr sendmail-8.9.1/cf/ostype/sco3.2.m4 sendmail-8.9.2/cf/ostype/sco3.2.m4
*** sendmail-8.9.1/cf/ostype/sco3.2.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/sco3.2.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,21 ****
  #
  
  divert(0)
! VERSIONID(`@(#)sco3.2.m4	8.10 (Berkeley) 5/19/98')
! define(`ALIAS_FILE', /usr/lib/mail/aliases)dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /usr/lib/sendmail.st)')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', PuhCE9)')dnl
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)sco3.2.m4	8.11 (Berkeley) 10/6/1998')
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
  ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', PuhCE9)')dnl
diff -cr sendmail-8.9.1/cf/ostype/sinix.m4 sendmail-8.9.2/cf/ostype/sinix.m4
*** sendmail-8.9.1/cf/ostype/sinix.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/sinix.m4	Tue Dec 29 09:42:10 1998
***************
*** 12,21 ****
  #
  
  divert(0)
! VERSIONID(`@(#)sinix.m4	8.8 (Berkeley) 5/19/98')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
! define(`ALIAS_FILE', /etc/aliases)dnl
  define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /var/sendmail.st)')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/sendmail.hf)')dnl
  define(`confEBINDIR', `/usr/ucblib')dnl
--- 12,21 ----
  #
  
  divert(0)
! VERSIONID(`@(#)sinix.m4	8.9 (Berkeley) 10/6/1998')
  ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
  define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')dnl
  define(`confEBINDIR', `/usr/ucblib')dnl
diff -cr sendmail-8.9.1/cf/ostype/solaris2.m4 sendmail-8.9.2/cf/ostype/solaris2.m4
*** sendmail-8.9.1/cf/ostype/solaris2.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/solaris2.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,25 ****
  #
  
  divert(0)
! VERSIONID(`@(#)solaris2.m4	8.15 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`ALIAS_FILE', /etc/mail/aliases)
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `SnE9')')
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')')
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
! define(`confCW_FILE', /etc/mail/sendmail.cw)
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,25 ----
  #
  
  divert(0)
! VERSIONID(`@(#)solaris2.m4	8.16 (Berkeley) 10/6/1998')
  divert(-1)
  
  define(`ALIAS_FILE', /etc/mail/aliases)
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `SnE9')')
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')')
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
! define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/solaris2.ml.m4 sendmail-8.9.2/cf/ostype/solaris2.ml.m4
*** sendmail-8.9.1/cf/ostype/solaris2.ml.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/solaris2.ml.m4	Tue Dec 29 09:42:10 1998
***************
*** 16,30 ****
  #
  
  divert(0)
! VERSIONID(`@(#)solaris2.ml.m4	8.8 (Berkeley) 5/19/98')
  divert(-1)
  
  define(`ALIAS_FILE', /etc/mail/aliases)
! ifdef(`HELP_FILE',, `define(`HELP_FILE', /etc/mail/sendmail.hf)')
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', /etc/mail/sendmail.st)')
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSmn9')')
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')')
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
! define(`confCW_FILE', /etc/mail/sendmail.cw)
  define(`confEBINDIR', `/usr/lib')dnl
--- 16,30 ----
  #
  
  divert(0)
! VERSIONID(`@(#)solaris2.ml.m4	8.9 (Berkeley) 10/6/1998')
  divert(-1)
  
  define(`ALIAS_FILE', /etc/mail/aliases)
! ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
! ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')
  ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
  ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSmn9')')
  ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')')
  ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
! define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/sunos3.5.m4 sendmail-8.9.2/cf/ostype/sunos3.5.m4
*** sendmail-8.9.1/cf/ostype/sunos3.5.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/sunos3.5.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,17 ****
  #
  
  divert(0)
! VERSIONID(`@(#)sunos3.5.m4	8.7 (Berkeley) 5/19/98')
  
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,17 ----
  #
  
  divert(0)
! VERSIONID(`@(#)sunos3.5.m4	8.7 (Berkeley) 5/19/1998')
  
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/sunos4.1.m4 sendmail-8.9.2/cf/ostype/sunos4.1.m4
*** sendmail-8.9.1/cf/ostype/sunos4.1.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/sunos4.1.m4	Tue Dec 29 09:42:08 1998
***************
*** 12,17 ****
  #
  
  divert(0)
! VERSIONID(`@(#)sunos4.1.m4	8.7 (Berkeley) 5/19/98')
  
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,17 ----
  #
  
  divert(0)
! VERSIONID(`@(#)sunos4.1.m4	8.7 (Berkeley) 5/19/1998')
  
  define(`confEBINDIR', `/usr/lib')dnl
diff -cr sendmail-8.9.1/cf/ostype/svr4.m4 sendmail-8.9.2/cf/ostype/svr4.m4
*** sendmail-8.9.1/cf/ostype/svr4.m4	Tue May 19 16:34:51 1998
--- sendmail-8.9.2/cf/ostype/svr4.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,22 ****
  #
  
  divert(0)
! VERSIONID(`@(#)svr4.m4	8.10 (Berkeley) 5/19/98')
  
! define(`ALIAS_FILE', /usr/ucblib/aliases)dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
  define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
  define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
--- 12,22 ----
  #
  
  divert(0)
! VERSIONID(`@(#)svr4.m4	8.11 (Berkeley) 10/6/1998')
  
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/ucblib/aliases'))dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
  define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
  define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
diff -cr sendmail-8.9.1/cf/ostype/ultrix4.m4 sendmail-8.9.2/cf/ostype/ultrix4.m4
*** sendmail-8.9.1/cf/ostype/ultrix4.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/ultrix4.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,17 ****
  #
  
  divert(0)
! VERSIONID(`@(#)ultrix4.m4	8.8 (Berkeley) 5/19/98')
  
  define(`confEBINDIR', `/usr/lib')dnl
--- 12,17 ----
  #
  
  divert(0)
! VERSIONID(`@(#)ultrix4.m4	8.8 (Berkeley) 5/19/1998')
  
  define(`confEBINDIR', `/usr/lib')dnl
Only in sendmail-8.9.2/cf/ostype: unixware7.m4
diff -cr sendmail-8.9.1/cf/ostype/unknown.m4 sendmail-8.9.2/cf/ostype/unknown.m4
*** sendmail-8.9.1/cf/ostype/unknown.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/unknown.m4	Tue Dec 29 09:42:09 1998
***************
*** 12,18 ****
  #
  
  divert(0)
! VERSIONID(`@(#)unknown.m4	8.6 (Berkeley) 5/19/98')
  errprint(`*** ERROR: You have not specified a valid operating system type.')
  errprint(`	Use the OSTYPE macro to select a valid system type.  This')
  errprint(`	is necessary in order to get the proper pathnames and flags')
--- 12,18 ----
  #
  
  divert(0)
! VERSIONID(`@(#)unknown.m4	8.6 (Berkeley) 5/19/1998')
  errprint(`*** ERROR: You have not specified a valid operating system type.')
  errprint(`	Use the OSTYPE macro to select a valid system type.  This')
  errprint(`	is necessary in order to get the proper pathnames and flags')
diff -cr sendmail-8.9.1/cf/ostype/uxpds.m4 sendmail-8.9.2/cf/ostype/uxpds.m4
*** sendmail-8.9.1/cf/ostype/uxpds.m4	Tue May 19 16:34:52 1998
--- sendmail-8.9.2/cf/ostype/uxpds.m4	Tue Dec 29 09:42:10 1998
***************
*** 15,26 ****
  #
  
  divert(0)
! VERSIONID(`@(#)uxpds.m4	8.9 (Berkeley) 5/19/98')
  
  define(`confDEF_GROUP_ID', `6')
! define(`ALIAS_FILE', /usr/ucblib/aliases)dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', /usr/ucblib/sendmail.hf)')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', /usr/ucblib/sendmail.st)')dnl
  define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
  define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
--- 15,26 ----
  #
  
  divert(0)
! VERSIONID(`@(#)uxpds.m4	8.10 (Berkeley) 10/6/1998')
  
  define(`confDEF_GROUP_ID', `6')
! define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/ucblib/aliases'))dnl
! ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
! ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
  define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
  define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
  define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
diff -cr sendmail-8.9.1/cf/sh/makeinfo.sh sendmail-8.9.2/cf/sh/makeinfo.sh
*** sendmail-8.9.1/cf/sh/makeinfo.sh	Tue May 19 16:34:55 1998
--- sendmail-8.9.2/cf/sh/makeinfo.sh	Tue Dec 29 09:42:07 1998
***************
*** 10,16 ****
  # the sendmail distribution.
  #
  #
! #	@(#)makeinfo.sh	8.11 (Berkeley) 5/19/98
  #
  
  usewhoami=0
--- 10,16 ----
  # the sendmail distribution.
  #
  #
! #	@(#)makeinfo.sh	8.11 (Berkeley) 5/19/1998
  #
  
  usewhoami=0
Only in sendmail-8.9.2/contrib: smcontrol.pl
diff -cr sendmail-8.9.1/doc/changes/Makefile sendmail-8.9.2/doc/changes/Makefile
*** sendmail-8.9.1/doc/changes/Makefile	Tue May 19 16:35:13 1998
--- sendmail-8.9.2/doc/changes/Makefile	Tue Dec 29 09:42:03 1998
***************
*** 1,4 ****
! #	@(#)Makefile	8.1 (Berkeley) 4/13/94
  
  DIR=	smm/09.sendmail
  SRCS=	changes.me
--- 1,4 ----
! #	@(#)Makefile	8.1 (Berkeley) 4/13/1994
  
  DIR=	smm/09.sendmail
  SRCS=	changes.me
diff -cr sendmail-8.9.1/doc/changes/changes.me sendmail-8.9.2/doc/changes/changes.me
*** sendmail-8.9.1/doc/changes/changes.me	Tue May 19 16:35:13 1998
--- sendmail-8.9.2/doc/changes/changes.me	Tue Dec 29 09:42:03 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)changes.me	8.7 (Berkeley) 5/19/98
  .\"
  .\"	ditroff -me -Pxx changes.me
  .eh '%''Changes in Sendmail Version 8'
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)changes.me	8.7 (Berkeley) 5/19/1998
  .\"
  .\"	ditroff -me -Pxx changes.me
  .eh '%''Changes in Sendmail Version 8'
diff -cr sendmail-8.9.1/doc/intro/Makefile sendmail-8.9.2/doc/intro/Makefile
*** sendmail-8.9.1/doc/intro/Makefile	Tue May 19 16:35:15 1998
--- sendmail-8.9.2/doc/intro/Makefile	Tue Dec 29 09:42:01 1998
***************
*** 1,4 ****
! #	@(#)Makefile	8.2 (Berkeley) 2/28/94
  
  DIR=	smm/09.sendmail
  SRCS=	intro.me
--- 1,4 ----
! #	@(#)Makefile	8.2 (Berkeley) 2/28/1994
  
  DIR=	smm/09.sendmail
  SRCS=	intro.me
diff -cr sendmail-8.9.1/doc/intro/intro.me sendmail-8.9.2/doc/intro/intro.me
*** sendmail-8.9.1/doc/intro/intro.me	Tue May 19 16:35:15 1998
--- sendmail-8.9.2/doc/intro/intro.me	Tue Dec 29 09:42:01 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)intro.me	8.7 (Berkeley) 5/19/98
  .\"
  .\"	pic -Pxx intro.me | ditroff -me -Pxx
  .eh 'SMM:9-%''SENDMAIL \*- An Internetwork Mail Router'
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)intro.me	8.7 (Berkeley) 5/19/1998
  .\"
  .\"	pic -Pxx intro.me | ditroff -me -Pxx
  .eh 'SMM:9-%''SENDMAIL \*- An Internetwork Mail Router'
diff -cr sendmail-8.9.1/doc/op/Makefile sendmail-8.9.2/doc/op/Makefile
*** sendmail-8.9.1/doc/op/Makefile	Tue May 19 16:35:17 1998
--- sendmail-8.9.2/doc/op/Makefile	Tue Dec 29 09:42:02 1998
***************
*** 1,4 ****
! #	@(#)Makefile	8.2 (Berkeley) 2/28/94
  
  DIR=	smm/08.sendmailop
  SRCS=	op.me
--- 1,4 ----
! #	@(#)Makefile	8.2 (Berkeley) 2/28/1994
  
  DIR=	smm/08.sendmailop
  SRCS=	op.me
diff -cr sendmail-8.9.1/doc/op/op.me sendmail-8.9.2/doc/op/op.me
*** sendmail-8.9.1/doc/op/op.me	Mon Jun 29 17:09:19 1998
--- sendmail-8.9.2/doc/op/op.me	Tue Dec 29 09:42:02 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)op.me	8.129 (Berkeley) 6/29/98
  .\"
  .\" eqn op.me | pic | troff -me
  .eh 'SMM:08-%''Sendmail Installation and Operation Guide'
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)op.me	8.134 (Berkeley) 9/16/1998
  .\"
  .\" eqn op.me | pic | troff -me
  .eh 'SMM:08-%''Sendmail Installation and Operation Guide'
***************
*** 46,52 ****
  Sendmail, Inc.
  eric@Sendmail.COM
  .sp
! Version 8.129
  .sp
  For Sendmail Version 8.9
  .)l
--- 46,52 ----
  Sendmail, Inc.
  eric@Sendmail.COM
  .sp
! Version 8.134
  .sp
  For Sendmail Version 8.9
  .)l
***************
*** 259,265 ****
  For now, see the file BuildTools/README for details.)
  .sh 3 "Tweaking the Makefile"
  .pp
! .b "XXX This should all be in the Site Configuration File section."
  .i Sendmail
  supports two different formats
  for the local (on disk) version of databases,
--- 259,265 ----
  For now, see the file BuildTools/README for details.)
  .sh 3 "Tweaking the Makefile"
  .pp
! .\" .b "XXX This should all be in the Site Configuration File section."
  .i Sendmail
  supports two different formats
  for the local (on disk) version of databases,
***************
*** 1157,1163 ****
  .)f
  .pp
  If the underlying operating system does not support a service switch
! (e.g., SunOS, HP-UX, BSD)
  then
  .i sendmail
  will provide a stub implementation.
--- 1157,1163 ----
  .)f
  .pp
  If the underlying operating system does not support a service switch
! (e.g., SunOS 4.X, HP-UX, BSD)
  then
  .i sendmail
  will provide a stub implementation.
***************
*** 2083,2088 ****
--- 2083,2090 ----
  .(f
  \**On some systems the default is zero to turn the protocol off entirely.
  .)f
+ .ip fileopen
+ The timeout for opening .forward and :include: files [60s, none].
  .ip hoststatus
  How long status information about a host
  (e.g., host down)
***************
*** 2731,2737 ****
  service for user name lookups by
  .i getpwname ).
  .pp
! However, some systems (such as SunOS)
  will do DNS lookups
  regardless of the setting of the service switch entry.
  In particular, the system routine
--- 2733,2739 ----
  service for user name lookups by
  .i getpwname ).
  .pp
! However, some systems (such as SunOS 4.X)
  will do DNS lookups
  regardless of the setting of the service switch entry.
  In particular, the system routine
***************
*** 2823,2829 ****
  .pp
  To completely turn off all name server access
  on systems without service switch support
! (such as SunOS)
  you will have to recompile with
  \-DNAMED_BIND=0
  and remove \-lresolv from the list of libraries to be searched
--- 2825,2831 ----
  .pp
  To completely turn off all name server access
  on systems without service switch support
! (such as SunOS 4.X)
  you will have to recompile with
  \-DNAMED_BIND=0
  and remove \-lresolv from the list of libraries to be searched
***************
*** 3674,3680 ****
  or whatever is appropriate for the receiving mailer.
  .ip $h
  The recipient host.
! This is set in ruleset 0 from the $# field of a parsed address.
  .ip $i
  The queue id,
  e.g.,
--- 3676,3682 ----
  or whatever is appropriate for the receiving mailer.
  .ip $h
  The recipient host.
! This is set in ruleset 0 from the $@ field of a parsed address.
  .ip $i
  The queue id,
  e.g.,
***************
*** 3788,3793 ****
--- 3790,3798 ----
  Defined in the SMTP server only.
  .ip ${client_name}
  The host name of the SMTP client.
+ This may be the client's bracketed IP address
+ in the form [ nnn.nnn.nnn.nnn ] if the client's
+ IP address is not resolvable.
  Defined in the SMTP server only.
  .ip ${client_port}
  The port number of the SMTP client.
***************
*** 4599,4604 ****
--- 4604,4610 ----
  if so, the first rewriting set is applied to envelope
  addresses
  and the second is applied to headers.
+ Setting any value zero disables corresponding mailer-specific rewriting.
  .pp
  The Directory
  is actually a colon-separated path of directories to try.
***************
*** 6123,6129 ****
  as of this writing
  version 8 config files
  (specifically, 8.9)
! used version level 7 configurations.
  .pp
  .q Old
  configuration files are defined as version level one.
--- 6129,6135 ----
  as of this writing
  version 8 config files
  (specifically, 8.9)
! used version level 8 configurations.
  .pp
  .q Old
  configuration files are defined as version level one.
***************
*** 6218,6223 ****
--- 6224,6233 ----
  commands)
  was assumed.
  .pp
+ Version level eight configuration files allow
+ .b $#
+ on the left hand side of ruleset lines.
+ .pp
  The
  .b V
  line may have an optional
***************
*** 6516,6522 ****
  .b $|
  or the string specified with the the
  .b \-d
! flag.  The flags availble for the map are
  .(b
  -n	not
  -f	case sensitive
--- 6526,6532 ----
  .b $|
  or the string specified with the the
  .b \-d
! flag.  The flags available for the map are
  .(b
  -n	not
  -f	case sensitive
***************
*** 6529,6535 ****
  	replace/discard value
  .)b
  The
! .b \-s flag can include an optional parameter which can be used
  to select the substrings in the result of the lookup.  For example,
  .(b
  -s1,3,4
--- 6539,6546 ----
  	replace/discard value
  .)b
  The
! .b \-s
! flag can include an optional parameter which can be used
  to select the substrings in the result of the lookup.  For example,
  .(b
  -s1,3,4
***************
*** 8178,8184 ****
  used during queue file rebuild.
  .ip /var/spool/mqueue/xf*
  A transcript of the current session.
! .if e \
  \{\
  .	bp
  .	rs
--- 8189,8195 ----
  used during queue file rebuild.
  .ip /var/spool/mqueue/xf*
  A transcript of the current session.
! .if o \
  \{\
  .	bp
  .	rs
***************
*** 8202,8208 ****
  .\".sz 10
  .\"Eric Allman
  .\".sp
! .\"Version 8.129
  .\".ce 0
  .bp 3
  .ce
--- 8213,8219 ----
  .\".sz 10
  .\"Eric Allman
  .\".sp
! .\"Version 8.134
  .\".ce 0
  .bp 3
  .ce
***************
*** 8224,8226 ****
--- 8235,8246 ----
  .rm ef
  .rm of
  .xp
+ .if o \
+ \{\
+ .	bp
+ .	rs
+ .	sp |4i
+ .	ce 2
+ This page intentionally left blank;
+ replace it with a blank sheet for double-sided output.
+ .\}
diff -cr sendmail-8.9.1/doc/usenix/Makefile sendmail-8.9.2/doc/usenix/Makefile
*** sendmail-8.9.1/doc/usenix/Makefile	Tue May 19 16:35:26 1998
--- sendmail-8.9.2/doc/usenix/Makefile	Tue Dec 29 09:42:02 1998
***************
*** 1,4 ****
! #	@(#)Makefile	8.2 (Berkeley) 2/28/94
  
  SRCS=	usenix.me
  MACROS=	-me
--- 1,4 ----
! #	@(#)Makefile	8.2 (Berkeley) 2/28/1994
  
  SRCS=	usenix.me
  MACROS=	-me
diff -cr sendmail-8.9.1/doc/usenix/usenix.me sendmail-8.9.2/doc/usenix/usenix.me
*** sendmail-8.9.1/doc/usenix/usenix.me	Tue May 19 16:35:26 1998
--- sendmail-8.9.2/doc/usenix/usenix.me	Tue Dec 29 09:42:02 1998
***************
*** 1,6 ****
  .nr si 3n
  .he 'Mail Systems and Addressing in 4.2bsd''%'
! .fo 'Version 8.2'USENIX \- Jan 83'Last Mod 11/27/93'
  .if n .ls 2
  .+c
  .(l C
--- 1,6 ----
  .nr si 3n
  .he 'Mail Systems and Addressing in 4.2bsd''%'
! .fo 'Version 8.2'USENIX \- Jan 83'Last Mod 11/27/1993'
  .if n .ls 2
  .+c
  .(l C
diff -cr sendmail-8.9.1/mail.local/Makefile.m4 sendmail-8.9.2/mail.local/Makefile.m4
*** sendmail-8.9.1/mail.local/Makefile.m4	Thu Jun  4 14:27:14 1998
--- sendmail-8.9.2/mail.local/Makefile.m4	Tue Dec 29 09:43:05 1998
***************
*** 1,7 ****
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.21	(Berkeley)	6/4/98
  #
  
  # C compiler
--- 1,7 ----
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.22	(Berkeley)	7/12/1998
  #
  
  # C compiler
***************
*** 34,40 ****
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of mail.local binary (usually /usr/sbin or /usr/etc)
! BINDIR=	${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
--- 34,40 ----
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of mail.local binary (usually /usr/sbin or /usr/etc)
! EBINDIR=${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
***************
*** 91,97 ****
  force-install: install-mail.local install-docs
  
  install-mail.local: mail.local
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mail.local ${BINDIR}
  
  install-docs: mail.local.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
--- 91,97 ----
  force-install: install-mail.local install-docs
  
  install-mail.local: mail.local
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mail.local ${EBINDIR}
  
  install-docs: mail.local.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
diff -cr sendmail-8.9.1/mail.local/README sendmail-8.9.2/mail.local/README
*** sendmail-8.9.1/mail.local/README	Tue May 19 16:35:36 1998
--- sendmail-8.9.2/mail.local/README	Tue Dec 29 09:43:05 1998
***************
*** 1,4 ****
! #       @(#)README	8.1 (Berkeley) 2/17/98
  
  This directory contains the source files for mail.local.
  
--- 1,4 ----
! #       @(#)README	8.1 (Berkeley) 2/17/1998
  
  This directory contains the source files for mail.local.
  
diff -cr sendmail-8.9.1/mail.local/mail.local.8 sendmail-8.9.2/mail.local/mail.local.8
*** sendmail-8.9.1/mail.local/mail.local.8	Tue May 19 16:35:35 1998
--- sendmail-8.9.2/mail.local/mail.local.8	Tue Dec 29 09:43:05 1998
***************
*** 7,13 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)mail.local.8	8.7 (Berkeley) 5/19/98
  .\"
  .Dd May 19, 1998
  .Dt MAIL.LOCAL 8
--- 7,13 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)mail.local.8	8.7 (Berkeley) 5/19/1998
  .\"
  .Dd May 19, 1998
  .Dt MAIL.LOCAL 8
diff -cr sendmail-8.9.1/mail.local/mail.local.c sendmail-8.9.2/mail.local/mail.local.c
*** sendmail-8.9.1/mail.local/mail.local.c	Tue May 19 16:41:42 1998
--- sendmail-8.9.2/mail.local/mail.local.c	Tue Dec 29 09:42:53 1998
***************
*** 1,4 ****
! /*-
   * Copyright (c) 1998 Sendmail, Inc.  All rights reserved.
   * Copyright (c) 1990, 1993, 1994
   *	The Regents of the University of California.  All rights reserved.
--- 1,4 ----
! /*
   * Copyright (c) 1998 Sendmail, Inc.  All rights reserved.
   * Copyright (c) 1990, 1993, 1994
   *	The Regents of the University of California.  All rights reserved.
***************
*** 16,22 ****
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)mail.local.c	8.78 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  /*
--- 16,22 ----
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)mail.local.c	8.83 (Berkeley) 12/17/1998";
  #endif /* not lint */
  
  /*
***************
*** 102,108 ****
  # define USE_VSYSLOG	0
  #endif
  
! #if defined(NeXT)
  # include <libc.h>
  # define _PATH_MAILDIR	"/usr/spool/mail"
  # define __dead		/* empty */
--- 102,108 ----
  # define USE_VSYSLOG	0
  #endif
  
! #if defined(NeXT) && !defined(__APPLE__)
  # include <libc.h>
  # define _PATH_MAILDIR	"/usr/spool/mail"
  # define __dead		/* empty */
***************
*** 216,233 ****
  # define S_ISREG(mode)	(((mode) & _S_IFMT) == S_IFREG)
  #endif
  
  int	eval = EX_OK;			/* sysexits.h error value. */
  int	lmtpmode = 0;
  u_char	tTdvect[100];
  
  void		deliver __P((int, char *));
  void		e_to_sys __P((int));
- __dead void	err __P((const char *, ...));
  void		notifybiff __P((char *));
  int		store __P((char *, int));
  void		usage __P((void));
  void		vwarn __P((const char *, _BSD_VA_LIST_));
- void		warn __P((const char *, ...));
  void		lockmbox __P((char *));
  void		unlockmbox __P((void));
  void		mailerr __P((const char *, const char *, ...));
--- 216,235 ----
  # define S_ISREG(mode)	(((mode) & _S_IFMT) == S_IFREG)
  #endif
  
+ #ifndef MAILER_DAEMON
+ # define MAILER_DAEMON	"MAILER-DAEMON"
+ #endif
+ 
  int	eval = EX_OK;			/* sysexits.h error value. */
  int	lmtpmode = 0;
  u_char	tTdvect[100];
  
  void		deliver __P((int, char *));
  void		e_to_sys __P((int));
  void		notifybiff __P((char *));
  int		store __P((char *, int));
  void		usage __P((void));
  void		vwarn __P((const char *, _BSD_VA_LIST_));
  void		lockmbox __P((char *));
  void		unlockmbox __P((void));
  void		mailerr __P((const char *, const char *, ...));
***************
*** 266,272 ****
  		case 'f':
  		case 'r':		/* Backward compatible. */
  			if (from != NULL) {
! 				warn("multiple -f options");
  				usage();
  			}
  			from = optarg;
--- 268,274 ----
  		case 'f':
  		case 'r':		/* Backward compatible. */
  			if (from != NULL) {
! 				mailerr(NULL, "multiple -f options");
  				usage();
  			}
  			from = optarg;
***************
*** 336,342 ****
  				return NULL;
  		} else {
  			while ((isascii(*p) && isalnum(*p)) ||
! 			       *p == '.' || *p == '-')
  				p++;
  		}
  		if (*p == ',' && p[1] == '@')
--- 338,344 ----
  				return NULL;
  		} else {
  			while ((isascii(*p) && isalnum(*p)) ||
! 			       strchr(".-_", *p))
  				p++;
  		}
  		if (*p == ',' && p[1] == '@')
***************
*** 347,352 ****
--- 349,356 ----
  			return NULL;
  	}
  
+ 	s = p;
+ 
  	/* local-part */
  	if (*p == '\"') {
  		p++;
***************
*** 386,392 ****
  				return NULL;
  		} else {
  			while ((isascii(*p) && isalnum(*p)) ||
! 			       *p == '.' || *p == '-')
  				p++;
  		}
  	}
--- 390,396 ----
  				return NULL;
  		} else {
  			while ((isascii(*p) && isalnum(*p)) ||
! 			       strchr(".-_", *p))
  				p++;
  		}
  	}
***************
*** 396,401 ****
--- 400,410 ----
  	if (*p && *p != ' ')
  		return NULL;
  	len = p - s - 1;
+ 	if (*s == '\0' || len <= 0)
+ 	{
+ 		s = MAILER_DAEMON;
+ 		len = strlen(s);
+ 	}
  
  	p = malloc(len + 1);
  	if (p == NULL) {
***************
*** 581,587 ****
  	char *from;
  	int lmtprcpts;
  {
! 	FILE *fp;
  	time_t tval;
  	int fd, eline;
  	char line[2048];
--- 590,596 ----
  	char *from;
  	int lmtprcpts;
  {
! 	FILE *fp = NULL;
  	time_t tval;
  	int fd, eline;
  	char line[2048];
***************
*** 593,600 ****
  			printf("451 4.3.0 unable to open temporary file\r\n");
  			return -1;
  		} else {
! 			e_to_sys(errno);
! 			err("unable to open temporary file");
  		}
  	}
  	(void)unlink(tmpbuf);
--- 602,609 ----
  			printf("451 4.3.0 unable to open temporary file\r\n");
  			return -1;
  		} else {
! 			mailerr("451 4.3.0", "unable to open temporary file");
! 			exit(eval);
  		}
  	}
  	(void)unlink(tmpbuf);
***************
*** 609,621 ****
  
  	line[0] = '\0';
  	for (eline = 1; fgets(line, sizeof(line), stdin);) {
! 		if (line[strlen(line)-2] == '\r') {
! 			strcpy(line+strlen(line)-2, "\n");
  		}
  		if (lmtprcpts && line[0] == '.') {
  			if (line[1] == '\n')
  				goto lmtpdot;
! 			strcpy(line, line+1);
  		}
  		if (line[0] == '\n')
  			eline = 1;
--- 618,638 ----
  
  	line[0] = '\0';
  	for (eline = 1; fgets(line, sizeof(line), stdin);) {
! 		size_t line_len = strlen(line);
! 
! 		if (line_len >= 2 &&
! 		    line[line_len - 2] == '\r' &&
! 		    line[line_len - 1] == '\n') {
! 			strcpy(line + line_len - 2, "\n");
  		}
  		if (lmtprcpts && line[0] == '.') {
+ 			char *src = line + 1, *dest = line;
+ 
  			if (line[1] == '\n')
  				goto lmtpdot;
! 			while (*src != '\0')
! 				*dest++ = *src++;
! 			*dest = '\0';
  		}
  		if (line[0] == '\n')
  			eline = 1;
***************
*** 634,641 ****
  				fclose(fp);
  				return -1;
  			} else {
! 				e_to_sys(errno);
! 				err("temporary file write error");
  			}
  		}
  	}
--- 651,660 ----
  				fclose(fp);
  				return -1;
  			} else {
! 				mailerr("451 4.3.0",
! 					"temporary file write error");
! 				fclose(fp);
! 				exit(eval);
  			}
  		}
  	}
***************
*** 662,669 ****
  			fclose(fp);
  			return -1;
  		} else {
! 			e_to_sys(errno);
! 			err("temporary file write error");
  		}
  	}
  	return (fd);
--- 681,689 ----
  			fclose(fp);
  			return -1;
  		} else {
! 			mailerr("451 4.3.0", "temporary file write error");
! 			fclose(fp);
! 			exit(eval);
  		}
  	}
  	return (fd);
***************
*** 697,703 ****
  			}
  		}
  		else {
! 			warn("unknown name: %s", name);
  		}
  		return;
  	}
--- 717,729 ----
  			}
  		}
  		else {
! 			char *errcode = NULL;
! 
! 			if (eval == EX_TEMPFAIL)
! 				errcode = "451 4.3.0";
! 			else
! 				errcode = "550 5.1.1";
! 			mailerr(errcode, "unknown name: %s", name);
  		}
  		return;
  	}
***************
*** 752,758 ****
  		if (lstat(path, &sb) < 0)
  		{
  			eval = EX_CANTCREAT;
! 			warn("%s: lstat: file changed after open", path);
  			goto err1;
  		}
  		else
--- 778,785 ----
  		if (lstat(path, &sb) < 0)
  		{
  			eval = EX_CANTCREAT;
! 			mailerr("550 5.2.0",
! 				"%s: lstat: file changed after open", path);
  			goto err1;
  		}
  		else
***************
*** 791,797 ****
  #endif
  	    sb.st_uid != fsb.st_uid) {
  		eval = EX_TEMPFAIL;
! 		warn("%s: fstat: file changed after open", path);
  		goto err1;
  	}
  
--- 818,825 ----
  #endif
  	    sb.st_uid != fsb.st_uid) {
  		eval = EX_TEMPFAIL;
! 		mailerr("550 5.2.0", "%s: fstat: file changed after open",
! 			path);
  		goto err1;
  	}
  
***************
*** 842,850 ****
--- 870,881 ----
  		mailerr("450 4.2.0", "%s: %s", path, strerror(errno));
  err3:
  		if (setreuid(0, 0) < 0) {
+ #if 0
+ 			/* already printed an error above for this recipient */
  			e_to_sys(errno);
  			mailerr("450 4.2.0", "setreuid(0, 0): %s",
  				strerror(errno));
+ #endif
  		}
  #ifdef DEBUG
  		printf("reset euid = %d\n", geteuid());
***************
*** 947,953 ****
  		if ((sp = getservbyname("biff", "udp")) == NULL)
  			return;
  		if ((hp = gethostbyname("localhost")) == NULL) {
- 			warn("localhost: %s", strerror(errno));
  			return;
  		}
  		addr.sin_family = hp->h_addrtype;
--- 978,983 ----
***************
*** 955,974 ****
  		addr.sin_port = sp->s_port;
  	}
  	if (f < 0 && (f = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
- 		warn("socket: %s", strerror(errno));
  		return;
  	}
  	len = strlen(msg) + 1;
! 	if (sendto(f, msg, len, 0, (struct sockaddr *)&addr, sizeof(addr))
! 	    != len)
! 		warn("sendto biff: %s", strerror(errno));
  }
  
  void
  usage()
  {
  	eval = EX_USAGE;
! 	err("usage: mail.local [-l] [-f from] user ...");
  }
  
  void
--- 985,1002 ----
  		addr.sin_port = sp->s_port;
  	}
  	if (f < 0 && (f = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
  		return;
  	}
  	len = strlen(msg) + 1;
! 	(void) sendto(f, msg, len, 0, (struct sockaddr *)&addr, sizeof(addr));
  }
  
  void
  usage()
  {
  	eval = EX_USAGE;
! 	mailerr(NULL, "usage: mail.local [-l] [-f from] user ...");
! 	exit(eval);
  }
  
  void
***************
*** 990,996 ****
  #endif
  	if (lmtpmode)
  	{
! 		printf("%s ", hdr);
  		vprintf(fmt, ap);
  		printf("\r\n");
  	}
--- 1018,1025 ----
  #endif
  	if (lmtpmode)
  	{
! 		if (hdr != NULL)
! 			printf("%s ", hdr);
  		vprintf(fmt, ap);
  		printf("\r\n");
  	}
***************
*** 999,1047 ****
  		e_to_sys(errno);
  		vwarn(fmt, ap);
  	}
- }
- 
- #ifdef __STDC__
- void
- err(const char *fmt, ...)
- #else
- void
- err(fmt, va_alist)
- 	const char *fmt;
- 	va_dcl
- #endif
- {
- 	va_list ap;
- 
- #ifdef __STDC__
- 	va_start(ap, fmt);
- #else
- 	va_start(ap);
- #endif
- 	vwarn(fmt, ap);
- 	va_end(ap);
- 
- 	exit(eval);
- }
- 
- void
- #ifdef __STDC__
- warn(const char *fmt, ...)
- #else
- warn(fmt, va_alist)
- 	const char *fmt;
- 	va_dcl
- #endif
- {
- 	va_list ap;
- 
- #ifdef __STDC__
- 	va_start(ap, fmt);
- #else
- 	va_start(ap);
- #endif
- 	vwarn(fmt, ap);
- 	va_end(ap);
  }
  
  void
--- 1028,1033 ----
diff -cr sendmail-8.9.1/mail.local/pathnames.h sendmail-8.9.2/mail.local/pathnames.h
*** sendmail-8.9.1/mail.local/pathnames.h	Tue May 19 16:35:35 1998
--- sendmail-8.9.2/mail.local/pathnames.h	Tue Dec 29 09:42:53 1998
***************
*** 8,14 ****
   * the sendmail distribution.
   *
   *
!  *	@(#)pathnames.h	8.5 (Berkeley) 5/19/98
   */
  #include <paths.h>
  
--- 8,14 ----
   * the sendmail distribution.
   *
   *
!  *	@(#)pathnames.h	8.5 (Berkeley) 5/19/1998
   */
  #include <paths.h>
  
diff -cr sendmail-8.9.1/mailstats/Makefile.m4 sendmail-8.9.2/mailstats/Makefile.m4
*** sendmail-8.9.1/mailstats/Makefile.m4	Mon Jun  8 14:06:48 1998
--- sendmail-8.9.2/mailstats/Makefile.m4	Tue Dec 29 09:42:01 1998
***************
*** 1,7 ****
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.14	(Berkeley)	6/4/98
  #
  
  # C compiler
--- 1,7 ----
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.15	(Berkeley)	7/12/1998
  #
  
  # C compiler
***************
*** 34,40 ****
  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')
--- 34,40 ----
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of mailstats binary (usually /usr/sbin or /usr/etc)
! SBINDIR=${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
***************
*** 82,88 ****
  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',
--- 82,88 ----
  install: install-mailstats install-docs
  
  install-mailstats: mailstats
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} mailstats ${SBINDIR}
  
  install-docs: mailstats.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
diff -cr sendmail-8.9.1/mailstats/mailstats.8 sendmail-8.9.2/mailstats/mailstats.8
*** sendmail-8.9.1/mailstats/mailstats.8	Tue May 19 16:35:39 1998
--- sendmail-8.9.2/mailstats/mailstats.8	Tue Dec 29 09:42:01 1998
***************
*** 5,11 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)mailstats.8	8.5 (Berkeley) 5/19/98
  .\"
  .Dd April 25, 1996
  .Dt MAILSTATS 1
--- 5,11 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)mailstats.8	8.8 (Berkeley) 11/13/1998
  .\"
  .Dd April 25, 1996
  .Dt MAILSTATS 1
***************
*** 16,21 ****
--- 16,22 ----
  .Sh SYNOPSIS
  .Nm mailstats
  .Op Fl o
+ .if \nP .Op Fl p
  .Op Fl C Ar cffile
  .Op Fl f Ar stfile
  .Sh DESCRIPTION
***************
*** 41,46 ****
--- 42,51 ----
  Number of messages to the mailer.
  .It Sy bytes_to
  Kbytes to the mailer.
+ .It Sy msgsrej
+ Number of messages rejected.
+ .It Sy msgsdis
+ Number of messages discarded.
  .It Sy Mailer
  The name of the mailer.
  .El
***************
*** 64,69 ****
--- 69,79 ----
  .Nm sendmail
  .Dq cf
  file.
+ .if \nP \
+ \{
+ .It Fl p
+ Output information in program-readable mode and clear statistics.
+ .\}
  .It Fl o
  Don't display the name of the mailer in the output.
  .El
***************
*** 73,84 ****
  utility exits 0 on success, and >0 if an error occurs.
  .Sh FILES
  .Bl -tag -width /var/log/sendmail.stXX -compact
! .It Pa /etc/sendmail.cf
  The default
  .Nm sendmail
  .Dq cf
  file.
! .It Pa /var/log/sendmail.st
  The default
  .Nm sendmail
  statistics file.
--- 83,96 ----
  utility exits 0 on success, and >0 if an error occurs.
  .Sh FILES
  .Bl -tag -width /var/log/sendmail.stXX -compact
! .ie \nP .It Pa /etc/mail/sendmail.cf
! .el .It Pa /etc/sendmail.cf
  The default
  .Nm sendmail
  .Dq cf
  file.
! .ie \nP .It Pa /etc/mail/statistics
! .el .It Pa /var/log/sendmail.st
  The default
  .Nm sendmail
  statistics file.
diff -cr sendmail-8.9.1/mailstats/mailstats.c sendmail-8.9.2/mailstats/mailstats.c
*** sendmail-8.9.1/mailstats/mailstats.c	Thu Jul  2 11:27:59 1998
--- sendmail-8.9.2/mailstats/mailstats.c	Tue Dec 29 09:42:01 1998
***************
*** 18,24 ****
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)mailstats.c	8.26 (Berkeley) 7/2/98";
  #endif /* not lint */
  
  #ifndef NOT_SENDMAIL
--- 18,24 ----
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)mailstats.c	8.28 (Berkeley) 9/14/1998";
  #endif /* not lint */
  
  #ifndef NOT_SENDMAIL
***************
*** 45,61 ****
  	char *cfile;
  	FILE *cfp;
  	bool mnames;
  	long frmsgs = 0, frbytes = 0, tomsgs = 0, tobytes = 0, rejmsgs = 0;
  	long dismsgs = 0;
  	char mtable[MAXMAILERS][MNAMELEN+1];
  	char sfilebuf[MAXLINE];
  	char buf[MAXLINE];
  	extern char *ctime();
  
  	cfile = _PATH_SENDMAILCF;
  	sfile = NULL;
  	mnames = TRUE;
! 	while ((ch = getopt(argc, argv, "C:f:o")) != EOF)
  	{
  		switch (ch)
  		{
--- 45,64 ----
  	char *cfile;
  	FILE *cfp;
  	bool mnames;
+ 	bool progmode;
  	long frmsgs = 0, frbytes = 0, tomsgs = 0, tobytes = 0, rejmsgs = 0;
  	long dismsgs = 0;
  	char mtable[MAXMAILERS][MNAMELEN+1];
  	char sfilebuf[MAXLINE];
  	char buf[MAXLINE];
+ 	time_t now;
  	extern char *ctime();
  
  	cfile = _PATH_SENDMAILCF;
  	sfile = NULL;
  	mnames = TRUE;
! 	progmode = FALSE;
! 	while ((ch = getopt(argc, argv, "C:f:op")) != EOF)
  	{
  		switch (ch)
  		{
***************
*** 71,81 ****
  			mnames = FALSE;
  			break;
  
  		  case '?':
  		  default:
    usage:
! 			fputs("usage: mailstats [-C cffile] [-f stfile] -o\n",
  				stderr);
  			exit(EX_USAGE);
  		}
  	}
--- 74,95 ----
  			mnames = FALSE;
  			break;
  
+ #if _FFR_MAILSTATS_PROGMODE
+ 		  case 'p':
+ 			progmode = TRUE;
+ 			break;
+ #endif
+ 
  		  case '?':
  		  default:
    usage:
! #if _FFR_MAILSTATS_PROGMODE
! 			fputs("usage: mailstats [-C cffile] [-f stfile] -o -p\n",
! 				stderr);
! #else
! 			fputs("usage: mailstats [-C cffile] [-f stfile] -o \n",
  				stderr);
+ #endif
  			exit(EX_USAGE);
  		}
  	}
***************
*** 226,240 ****
  		}
  	}
  
! 	printf("Statistics from %s", ctime(&stat.stat_itime));
! 	printf(" M   msgsfr  bytes_from   msgsto    bytes_to  msgsrej msgsdis%s\n",
! 		mnames ? "  Mailer" : "");
  	for (i = 0; i < MAXMAILERS; i++)
  	{
  		if (stat.stat_nf[i] || stat.stat_nt[i] ||
  		    stat.stat_nr[i] || stat.stat_nd[i])
  		{
! 			printf("%2d %8ld %10ldK %8ld %10ldK   %6ld  %6ld", i,
  			    stat.stat_nf[i], stat.stat_bf[i],
  			    stat.stat_nt[i], stat.stat_bt[i],
  			    stat.stat_nr[i], stat.stat_nd[i]);
--- 240,268 ----
  		}
  	}
  
! 	if (progmode)
! 	{
! 		time(&now);
! 		printf("%ld %ld\n", (long) stat.stat_itime, (long) now);
! 	}
! 	else
! 	{
! 		printf("Statistics from %s", ctime(&stat.stat_itime));
! 		printf(" M   msgsfr  bytes_from   msgsto    bytes_to  msgsrej msgsdis%s\n",
! 			mnames ? "  Mailer" : "");
! 	}
  	for (i = 0; i < MAXMAILERS; i++)
  	{
  		if (stat.stat_nf[i] || stat.stat_nt[i] ||
  		    stat.stat_nr[i] || stat.stat_nd[i])
  		{
! 			char *format;
! 
! 			if (progmode)
! 				format = "%2d %8ld %10ld %8ld %10ld   %6ld  %6ld";
! 			else
! 				format = "%2d %8ld %10ldK %8ld %10ldK   %6ld  %6ld";
! 			printf(format, i,
  			    stat.stat_nf[i], stat.stat_bf[i],
  			    stat.stat_nt[i], stat.stat_bt[i],
  			    stat.stat_nr[i], stat.stat_nd[i]);
***************
*** 249,256 ****
  			dismsgs += stat.stat_nd[i];
  		}
  	}
! 	printf("=============================================================\n");
! 	printf(" T %8ld %10ldK %8ld %10ldK   %6ld  %6ld\n",
! 		frmsgs, frbytes, tomsgs, tobytes, rejmsgs, dismsgs);
  	exit(EX_OK);
  }
--- 277,296 ----
  			dismsgs += stat.stat_nd[i];
  		}
  	}
! 	if (progmode)
! 	{
! 		printf(" T %8ld %10ld %8ld %10ld   %6ld  %6ld\n",
! 		       frmsgs, frbytes, tomsgs, tobytes, rejmsgs, dismsgs);
! 		close(fd);
! 		fd = open(sfile, O_RDWR | O_TRUNC);
! 		if (fd > 0)
! 			close(fd);
! 	}
! 	else
! 	{
! 		printf("=============================================================\n");
! 		printf(" T %8ld %10ldK %8ld %10ldK   %6ld  %6ld\n",
! 			frmsgs, frbytes, tomsgs, tobytes, rejmsgs, dismsgs);
! 	}
  	exit(EX_OK);
  }
diff -cr sendmail-8.9.1/makemap/Makefile.m4 sendmail-8.9.2/makemap/Makefile.m4
*** sendmail-8.9.1/makemap/Makefile.m4	Thu Jun  4 14:27:18 1998
--- sendmail-8.9.2/makemap/Makefile.m4	Tue Dec 29 09:42:03 1998
***************
*** 1,7 ****
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.20	(Berkeley)	6/4/98
  #
  
  # C compiler
--- 1,7 ----
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.21	(Berkeley)	7/12/1998
  #
  
  # C compiler
***************
*** 41,47 ****
  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')
--- 41,47 ----
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of makemap binary (usually /usr/sbin or /usr/etc)
! SBINDIR=${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
***************
*** 95,101 ****
  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',
--- 95,101 ----
  install: install-makemap install-docs
  
  install-makemap: makemap
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} makemap ${SBINDIR}
  
  install-docs: makemap.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
diff -cr sendmail-8.9.1/makemap/makemap.8 sendmail-8.9.2/makemap/makemap.8
*** sendmail-8.9.1/makemap/makemap.8	Tue May 19 16:35:42 1998
--- sendmail-8.9.2/makemap/makemap.8	Tue Dec 29 09:42:03 1998
***************
*** 7,13 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)makemap.8	8.10 (Berkeley) 5/19/98
  .\"
  .Dd November 16, 1992
  .Dt MAKEMAP 8
--- 7,13 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)makemap.8	8.12 (Berkeley) 11/13/1998
  .\"
  .Dd November 16, 1992
  .Dt MAKEMAP 8
***************
*** 18,25 ****
--- 18,27 ----
  .Sh SYNOPSIS
  .Nm
  .Op Fl N
+ .if \nP .Op Fl c Ar cachesize
  .Op Fl d
  .Op Fl f
+ .if \nP .Op Fl l
  .Op Fl o
  .Op Fl r
  .Op Fl s
***************
*** 76,81 ****
--- 78,88 ----
  in the map.
  This must match the \-N flag in the sendmail.cf
  ``K'' line.
+ .if \nP \
+ \{\
+ .It Fl c
+ Use the specified hash and B-Tree cache size.
+ .\}
  .It Fl d
  Allow duplicate keys in the map.
  This is only allowed on B-Tree format maps.
***************
*** 90,95 ****
--- 97,107 ----
  \fBK\fP
  line in sendmail.cf.
  The value is never case folded.
+ .if \nP \
+ \{\
+ .It Fl l
+ List supported map types.
+ .\}
  .It Fl o
  Append to an old file.
  This allows you to augment an existing file.
diff -cr sendmail-8.9.1/makemap/makemap.c sendmail-8.9.2/makemap/makemap.c
*** sendmail-8.9.1/makemap/makemap.c	Wed Jun 24 21:48:00 1998
--- sendmail-8.9.2/makemap/makemap.c	Tue Dec 29 09:42:03 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)makemap.c	8.62 (Berkeley) 6/24/98";
  #endif /* not lint */
  
  #include <sys/types.h>
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)makemap.c	8.71 (Berkeley) 11/29/1998";
  #endif /* not lint */
  
  #include <sys/types.h>
***************
*** 57,66 ****
  uid_t	RunAsGid;
  char	*RunAsUserName;
  int	Verbose = 2;
! bool	DontInitGroups = TRUE;
  long	DontBlameSendmail = DBS_SAFE;
  u_char	tTdvect[100];
! uid_t	TrustedFileUid = 0;
  
  #define BUFSIZE		1024
  
--- 57,66 ----
  uid_t	RunAsGid;
  char	*RunAsUserName;
  int	Verbose = 2;
! bool	DontInitGroups = FALSE;
  long	DontBlameSendmail = DBS_SAFE;
  u_char	tTdvect[100];
! uid_t	TrustedUid = 0;
  
  #define BUFSIZE		1024
  
***************
*** 79,94 ****
  	bool foldcase = TRUE;
  	int exitstat;
  	int opt;
! 	char *typename;
! 	char *mapname;
! 	char *ext;
  	int lineno;
  	int st;
  	int mode;
! 	int putflags;
  	long dbcachesize = 1024 * 1024;
  	enum type type;
  	int fd;
  	int sff = SFF_ROOTOK|SFF_REGONLY;
  	struct passwd *pw;
  	union
--- 79,98 ----
  	bool foldcase = TRUE;
  	int exitstat;
  	int opt;
! 	char *typename = NULL;
! 	char *mapname = NULL;
! 	char *ext = NULL;
  	int lineno;
  	int st;
  	int mode;
! 	int putflags = 0;
! #ifdef NEWDB
  	long dbcachesize = 1024 * 1024;
+ #endif
  	enum type type;
+ #if !O_EXLOCK
  	int fd;
+ #endif
  	int sff = SFF_ROOTOK|SFF_REGONLY;
  	struct passwd *pw;
  	union
***************
*** 116,122 ****
  #ifdef NDBM
  	char pbuf[MAXNAME];
  #endif
! #if _FFR_TRUSTED_FILE_OWNER
  	FILE *cfp;
  	char buf[MAXLINE];
  #endif
--- 120,126 ----
  #ifdef NDBM
  	char pbuf[MAXNAME];
  #endif
! #if _FFR_TRUSTED_USER
  	FILE *cfp;
  	char buf[MAXLINE];
  #endif
***************
*** 145,151 ****
  	RunAsUserName = RealUserName = rnamebuf;
  
  #if _FFR_NEW_MAKEMAP_FLAGS
! #define OPTIONS		"C:Nc:dforsv"
  #else
  #define OPTIONS		"C:Ndforsv"
  #endif
--- 149,155 ----
  	RunAsUserName = RealUserName = rnamebuf;
  
  #if _FFR_NEW_MAKEMAP_FLAGS
! #define OPTIONS		"C:Nc:dflorsv"
  #else
  #define OPTIONS		"C:Ndforsv"
  #endif
***************
*** 163,169 ****
--- 167,175 ----
  
  #if _FFR_NEW_MAKEMAP_FLAGS
  		  case 'c':
+ # ifdef NEWDB
  			dbcachesize = atol(optarg);
+ # endif
  			break;
  #endif
  
***************
*** 175,180 ****
--- 181,199 ----
  			foldcase = FALSE;
  			break;
  
+ #if _FFR_NEW_MAKEMAP_FLAGS
+ 		  case 'l':
+ # ifdef NDBM
+ 			printf("dbm\n");
+ # endif
+ # ifdef NEWDB
+ 			printf("hash\n");
+ 			printf("btree\n");
+ # endif
+ 			exit(EX_OK);
+ 			break;
+ #endif
+ 
  		  case 'o':
  			notrunc = TRUE;
  			break;
***************
*** 232,238 ****
  			type = T_UNKNOWN;
  	}
  
! #if _FFR_TRUSTED_FILE_OWNER
  	if ((cfp = fopen(cfile, "r")) == NULL)
  	{
  		fprintf(stderr, "mailstats: ");
--- 251,257 ----
  			type = T_UNKNOWN;
  	}
  
! #if _FFR_TRUSTED_USER
  	if ((cfp = fopen(cfile, "r")) == NULL)
  	{
  		fprintf(stderr, "mailstats: ");
***************
*** 250,257 ****
  		switch (*b++)
  		{
  		  case 'O':		/* option */
! 			if (strncasecmp(b, " TrustedFileOwner", 17) == 0 &&
! 			    !(isascii(b[17]) && isalnum(b[17])))
  			{
  				b = strchr(b, '=');
  				if (b == NULL)
--- 269,276 ----
  		switch (*b++)
  		{
  		  case 'O':		/* option */
! 			if (strncasecmp(b, " TrustedUser", 12) == 0 &&
! 			    !(isascii(b[12]) && isalnum(b[12])))
  			{
  				b = strchr(b, '=');
  				if (b == NULL)
***************
*** 259,284 ****
  				while (isascii(*++b) && isspace(*b))
  					continue;
  				if (isascii(*b) && isdigit(*b))
! 					TrustedFileUid = atoi(b);
  				else
  				{
  					register struct passwd *pw;
  					
! 					TrustedFileUid = 0;
  					pw = getpwnam(b);
  					if (pw == NULL)
  						fprintf(stderr,
! 							"TrustedFileOwner: unknown user %s", b);
  					else
! 						TrustedFileUid = pw->pw_uid;
  				}
  				
  # ifdef UID_MAX
! 				if (TrustedFileUid > UID_MAX)
  				{
! 					syserr("TrustedFileOwner: uid value (%ld) > UID_MAX (%ld)",
! 					       TrustedFileUid, UID_MAX);
! 					TrustedFileUid = 0;
  				}
  # endif
  				break;
--- 278,303 ----
  				while (isascii(*++b) && isspace(*b))
  					continue;
  				if (isascii(*b) && isdigit(*b))
! 					TrustedUid = atoi(b);
  				else
  				{
  					register struct passwd *pw;
  					
! 					TrustedUid = 0;
  					pw = getpwnam(b);
  					if (pw == NULL)
  						fprintf(stderr,
! 							"TrustedUser: unknown user %s\n", b);
  					else
! 						TrustedUid = pw->pw_uid;
  				}
  				
  # ifdef UID_MAX
! 				if (TrustedUid > UID_MAX)
  				{
! 					syserr("TrustedUser: uid value (%ld) > UID_MAX (%ld)",
! 					       TrustedUid, UID_MAX);
! 					TrustedUid = 0;
  				}
  # endif
  				break;
***************
*** 296,302 ****
  	  case T_ERR:
  #if _FFR_NEW_MAKEMAP_FLAGS
  		fprintf(stderr,
! 			"Usage: %s [-N] [-c cachesize] [-d] [-f] [-o] [-r] [-s] [-v] type mapname\n",
  			progname);
  #else
  		fprintf(stderr, "Usage: %s [-N] [-d] [-f] [-o] [-r] [-s] [-v] type mapname\n", progname);
--- 315,321 ----
  	  case T_ERR:
  #if _FFR_NEW_MAKEMAP_FLAGS
  		fprintf(stderr,
! 			"Usage: %s [-N] [-c cachesize] [-d] [-f] [-l] [-o] [-r] [-s] [-v] type mapname\n",
  			progname);
  #else
  		fprintf(stderr, "Usage: %s [-N] [-d] [-f] [-o] [-r] [-s] [-v] type mapname\n", progname);
***************
*** 505,520 ****
  			dbm_close(dbp.dbm);
  			exit(EX_CANTCREAT);
  		}
! 		if (geteuid() == 0 && TrustedFileUid != 0)
  		{
! 			if (fchown(dbm_dirfno(dbp.dbm), TrustedFileUid, -1) < 0 ||
! 			    fchown(dbm_pagfno(dbp.dbm), TrustedFileUid, -1) < 0)
  			{
  				fprintf(stderr,
  					"WARNING: ownership change on %s failed: %s",
  					mapname, errstring(errno));
  			}
  		}
  
  		break;
  #endif
--- 524,541 ----
  			dbm_close(dbp.dbm);
  			exit(EX_CANTCREAT);
  		}
! #if _FFR_TRUSTED_USER
! 		if (geteuid() == 0 && TrustedUid != 0)
  		{
! 			if (fchown(dbm_dirfno(dbp.dbm), TrustedUid, -1) < 0 ||
! 			    fchown(dbm_pagfno(dbp.dbm), TrustedUid, -1) < 0)
  			{
  				fprintf(stderr,
  					"WARNING: ownership change on %s failed: %s",
  					mapname, errstring(errno));
  			}
  		}
+ #endif
  
  		break;
  #endif
***************
*** 569,583 ****
  				exit(EX_CANTCREAT);
  			}
  			(void) (*dbp.db->sync)(dbp.db, 0);
! 			if (geteuid() == 0 && TrustedFileUid != 0)
  			{
! 				if (fchown(fd, TrustedFileUid, -1) < 0)
  				{
  					fprintf(stderr,
  						"WARNING: ownership change on %s failed: %s",
  						mapname, errstring(errno));
  				}
  			}
  		}
  		break;
  
--- 590,606 ----
  				exit(EX_CANTCREAT);
  			}
  			(void) (*dbp.db->sync)(dbp.db, 0);
! #if _FFR_TRUSTED_USER
! 			if (geteuid() == 0 && TrustedUid != 0)
  			{
! 				if (fchown(fd, TrustedUid, -1) < 0)
  				{
  					fprintf(stderr,
  						"WARNING: ownership change on %s failed: %s",
  						mapname, errstring(errno));
  				}
  			}
+ #endif
  		}
  		break;
  
***************
*** 628,642 ****
  				exit(EX_CANTCREAT);
  			}
  			(void) (*dbp.db->sync)(dbp.db, 0);
! 			if (geteuid() == 0 && TrustedFileUid != 0)
  			{
! 				if (fchown(fd, TrustedFileUid, -1) < 0)
  				{
  					fprintf(stderr,
  						"WARNING: ownership change on %s failed: %s",
  						mapname, errstring(errno));
  				}
  			}
  		}
  		break;
  #endif
--- 651,667 ----
  				exit(EX_CANTCREAT);
  			}
  			(void) (*dbp.db->sync)(dbp.db, 0);
! #if _FFR_TRUSTED_USER
! 			if (geteuid() == 0 && TrustedUid != 0)
  			{
! 				if (fchown(fd, TrustedUid, -1) < 0)
  				{
  					fprintf(stderr,
  						"WARNING: ownership change on %s failed: %s",
  						mapname, errstring(errno));
  				}
  			}
+ #endif
  		}
  		break;
  #endif
***************
*** 936,945 ****
  errstring(err)
  	int err;
  {
  	static char errstr[64];
! #if !HASSTRERROR && !defined(ERRLIST_PREDEFINED)
  	extern char *sys_errlist[];
  	extern int sys_nerr;
  #endif
  
  	/* handle pseudo-errors internal to sendmail */
--- 961,972 ----
  errstring(err)
  	int err;
  {
+ #if !HASSTRERROR
  	static char errstr[64];
! # if !defined(ERRLIST_PREDEFINED)
  	extern char *sys_errlist[];
  	extern int sys_nerr;
+ # endif
  #endif
  
  	/* handle pseudo-errors internal to sendmail */
diff -cr sendmail-8.9.1/praliases/Makefile.m4 sendmail-8.9.2/praliases/Makefile.m4
*** sendmail-8.9.1/praliases/Makefile.m4	Thu Jun  4 14:27:19 1998
--- sendmail-8.9.2/praliases/Makefile.m4	Tue Dec 29 09:42:04 1998
***************
*** 1,7 ****
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.15	(Berkeley)	6/4/98
  #
  
  # C compiler
--- 1,7 ----
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.16	(Berkeley)	7/12/1998
  #
  
  # C compiler
***************
*** 41,47 ****
  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')
--- 41,47 ----
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of praliases binary (usually /usr/sbin or /usr/etc)
! SBINDIR=${DESTDIR}ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
***************
*** 89,95 ****
  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',
--- 89,95 ----
  install: install-praliases install-docs
  
  install-praliases: praliases
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} praliases ${SBINDIR}
  
  install-docs: praliases.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
diff -cr sendmail-8.9.1/praliases/praliases.8 sendmail-8.9.2/praliases/praliases.8
*** sendmail-8.9.1/praliases/praliases.8	Tue May 19 16:35:47 1998
--- sendmail-8.9.2/praliases/praliases.8	Tue Dec 29 09:42:04 1998
***************
*** 5,11 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)praliases.8	8.5 (Berkeley) 5/19/98
  .\"
  .Dd April 25, 1996
  .Dt PRALIASES 1
--- 5,11 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)praliases.8	8.5 (Berkeley) 5/19/1998
  .\"
  .Dd April 25, 1996
  .Dt PRALIASES 1
diff -cr sendmail-8.9.1/praliases/praliases.c sendmail-8.9.2/praliases/praliases.c
*** sendmail-8.9.1/praliases/praliases.c	Thu Jun 25 23:25:04 1998
--- sendmail-8.9.2/praliases/praliases.c	Tue Dec 29 09:42:03 1998
***************
*** 17,23 ****
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)praliases.c	8.17 (Berkeley) 6/25/98";
  #endif /* not lint */
  
  #if !defined(NDBM) && !defined(NEWDB)
--- 17,23 ----
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)praliases.c	8.21 (Berkeley) 12/27/1998";
  #endif /* not lint */
  
  #if !defined(NDBM) && !defined(NEWDB)
***************
*** 32,37 ****
--- 32,38 ----
  # define NOT_SENDMAIL
  #endif
  #include <sendmail.h>
+ #include <pathnames.h>
  #ifdef NEWDB
  # include <db.h>
  # ifndef DB_VERSION_MAJOR
***************
*** 50,55 ****
--- 51,61 ----
  extern char	*strerror __P((int));
  #endif
  
+ static void praliases __P((char *, int, char **));
+ #ifdef NDBM
+ static void praliases_dbm __P((char *, int, char **));
+ #endif
+ 
  int
  main(argc, argv)
  	int argc;
***************
*** 57,88 ****
  {
  	extern char *optarg;
  	extern int optind;
! #ifdef NDBM
! 	DBM *dbp;
! 	datum content, key;
  #endif
! 	char *filename;
  	int ch;
! #ifdef NEWDB
! 	DB *db;
! 	DBT newdbkey, newdbcontent;
! 	char buf[MAXNAME];
! #endif
  
! 	filename = "/etc/aliases";
  	while ((ch = getopt(argc, argv, "f:")) != EOF)
! 		switch((char)ch) {
  		case 'f':
  			filename = optarg;
  			break;
  		case '?':
  		default:
! 			(void)fprintf(stderr, "usage: praliases [-f file]\n");
  			exit(EX_USAGE);
  		}
  	argc -= optind;
  	argv += optind;
  
  #ifdef NEWDB
  	if (strlen(filename) + 4 >= sizeof buf)
  	{
--- 63,210 ----
  {
  	extern char *optarg;
  	extern int optind;
! 	char *cfile;
! #if _FFR_GRAB_ALIASFILE_OPTION
! 	char *filename = NULL;
! #else
! 	char *filename = "/etc/aliases";
  #endif
! 	FILE *cfp;
  	int ch;
! 	char afilebuf[MAXLINE];
! 	char buf[MAXLINE];
  
! 	cfile = _PATH_SENDMAILCF;
! #if _FFR_GRAB_ALIASFILE_OPTION
! 	while ((ch = getopt(argc, argv, "C:f:")) != EOF)
! #else
  	while ((ch = getopt(argc, argv, "f:")) != EOF)
! #endif
! 	{
! 		switch ((char)ch) {
! 		case 'C':
! 			cfile = optarg;
! 			break;
  		case 'f':
  			filename = optarg;
  			break;
  		case '?':
  		default:
! 			(void)fprintf(stderr,
! #if _FFR_GRAB_ALIASFILE_OPTION
! 				"usage: praliases [-C cffile] [-f aliasfile]\n");
! #else
! 				"usage: praliases [-f aliasfile]\n");
! #endif
  			exit(EX_USAGE);
  		}
+ 	}
  	argc -= optind;
  	argv += optind;
  
+ 	if (filename != NULL)
+ 	{
+ 		praliases(filename, argc, argv);
+ 		exit(EX_OK);
+ 	}
+ 
+ 	if ((cfp = fopen(cfile, "r")) == NULL)
+ 	{
+ 		fprintf(stderr, "praliases: ");
+ 		perror(cfile);
+ 		exit(EX_NOINPUT);
+ 	}
+ 
+ 	while (fgets(buf, sizeof(buf), cfp) != NULL)
+ 	{
+ 		register char *b, *p;
+ 
+ 		b = buf;
+ 		switch (*b++)
+ 		{
+ 		  case 'O':		/* option -- see if alias file */
+ 			if (strncasecmp(b, " AliasFile", 10) == 0 &&
+ 			    !(isascii(b[10]) && isalnum(b[10])))
+ 			{
+ 				/* new form -- find value */
+ 				b = strchr(b, '=');
+ 				if (b == NULL)
+ 					continue;
+ 				while (isascii(*++b) && isspace(*b))
+ 					continue;
+ 			}
+ 			else if (*b++ != 'A')
+ 			{
+ 				/* something else boring */
+ 				continue;
+ 			}
+ 
+ 			/* this is the A or AliasFile option -- save it */
+ 			if (strlen(b) >= sizeof afilebuf)
+ 			{
+ 				fprintf(stderr,
+ 					"AliasFile filename too long: %.30s...\n",
+ 					b);
+ 				(void) fclose(cfp);
+ 				exit(EX_CONFIG);
+ 			}
+ 			strcpy(afilebuf, b);
+ 			b = afilebuf;
+ 
+ 			for (p = b; p != NULL; )
+ 			{
+ 				while (isascii(*p) && isspace(*p))
+ 					p++;
+ 				if (*p == '\0')
+ 					break;
+ 				b = p;
+ 
+ 				p = strpbrk(p, " ,/");
+ 				/* find end of spec */
+ 				if (p != NULL)
+ 					p = strpbrk(p, ",\n");
+ 				if (p != NULL)
+ 					*p++ = '\0';
+ 
+ 				praliases(b, argc, argv);
+ 			}
+ 
+ 		  default:
+ 			continue;
+ 		}
+ 	}
+ 	(void) fclose(cfp);
+ 	exit(EX_OK);
+ }
+ 
+ static void
+ praliases(filename, argc, argv)
+ 	char *filename;
+ 	int  argc;
+ 	char **argv;
+ {
+ #ifdef NEWDB
+ 	DB *db;
+ 	DBT newdbkey, newdbcontent;
+ 	char buf[MAXNAME];
+ #endif
+ 	char *class;
+ 
+ 	class = strchr(filename, ':');
+ 	if (class != NULL)
+ 	{
+ 		if (strncasecmp(filename, "dbm:", 4) == 0)
+ 		{
+ #ifdef NDBM
+ 			praliases_dbm(class + 1, argc, argv);
+ 			return;
+ #else
+ 			fprintf(stderr, "class dbm not available\n");
+ 			exit(EX_DATAERR);
+ #endif
+ 		}
+ 		filename = class + 1;
+ 	}
  #ifdef NEWDB
  	if (strlen(filename) + 4 >= sizeof buf)
  	{
***************
*** 99,105 ****
  # endif
  	if (db != NULL)
  	{
! 		if (!argc) {
  # if DB_VERSION_MAJOR > 1
  			DBC *dbc;
  # endif
--- 221,228 ----
  # endif
  	if (db != NULL)
  	{
! 		if (!argc)
! 		{
  # if DB_VERSION_MAJOR > 1
  			DBC *dbc;
  # endif
***************
*** 109,115 ****
--- 232,242 ----
  # if DB_VERSION_MAJOR < 2
  			while(!db->seq(db, &newdbkey, &newdbcontent, R_NEXT))
  # else
+ #  if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+ 			if ((errno = db->cursor(db, NULL, &dbc, 0)) == 0)
+ #  else
  			if ((errno = db->cursor(db, NULL, &dbc)) == 0)
+ #  endif
  			{
  				while ((errno = dbc->c_get(dbc, &newdbkey,
  							   &newdbcontent,
***************
*** 128,138 ****
  				fprintf(stderr,
  					"praliases: %s: Could not set cursor: %s\n",
  					buf, strerror(errno));
  				exit(EX_DATAERR);
  			}
  # endif
  		}
! 		else for (; *argv; ++argv) {
  			bzero(&newdbkey, sizeof newdbkey);
  			bzero(&newdbcontent, sizeof newdbcontent);
  			newdbkey.data = *argv;
--- 255,267 ----
  				fprintf(stderr,
  					"praliases: %s: Could not set cursor: %s\n",
  					buf, strerror(errno));
+ 				errno = db->close(db, 0);
  				exit(EX_DATAERR);
  			}
  # endif
  		}
! 		else for (; *argv; ++argv)
! 		{
  			bzero(&newdbkey, sizeof newdbkey);
  			bzero(&newdbcontent, sizeof newdbcontent);
  			newdbkey.data = *argv;
***************
*** 156,194 ****
  		errno = db->close(db, 0);
  # endif
  	}
! 	else {
  #endif
  #ifdef NDBM
! 		if ((dbp = dbm_open(filename, O_RDONLY, 0)) == NULL) {
! 			(void)fprintf(stderr,
! 			    "praliases: %s: %s\n", filename, strerror(errno));
! 			exit(EX_OSFILE);
  		}
! 		if (!argc)
! 			for (key = dbm_firstkey(dbp);
! 			    key.dptr != NULL; key = dbm_nextkey(dbp)) {
! 				content = dbm_fetch(dbp, key);
! 				(void)printf("%.*s:%.*s\n",
! 					(int) key.dsize, key.dptr,
! 					(int) content.dsize, content.dptr);
! 			}
! 		else for (; *argv; ++argv) {
  			key.dptr = *argv;
! 			key.dsize = strlen(*argv) + 1;
  			content = dbm_fetch(dbp, key);
! 			if (!content.dptr)
! 				(void)printf("%s: No such key\n", key.dptr);
! 			else
  				(void)printf("%s:%.*s\n", key.dptr,
  					(int) content.dsize, content.dptr);
  		}
- 		dbm_close(dbp);
- #endif
- #ifdef NEWDB
  	}
! #endif
! 	exit(EX_OK);
  }
  
  #if !HASSTRERROR
  
--- 285,355 ----
  		errno = db->close(db, 0);
  # endif
  	}
! 	else
! 	{
! #endif
! #ifdef NDBM
! 		praliases_dbm(filename, argc, argv);
! #endif
! #ifdef NEWDB
! 	}
  #endif
+ }
+ 
  #ifdef NDBM
! static void
! praliases_dbm(filename, argc, argv)
! 	char *filename;
! 	int  argc;
! 	char **argv;
! {
! 	DBM *dbp;
! 	datum content, key;
! 
! 	if ((dbp = dbm_open(filename, O_RDONLY, 0)) == NULL)
! 	{
! 		(void)fprintf(stderr,
! 		    "praliases: %s: %s\n", filename, strerror(errno));
! 		exit(EX_OSFILE);
! 	}
! 	if (!argc)
! 	{
! 		for (key = dbm_firstkey(dbp);
! 		    key.dptr != NULL; key = dbm_nextkey(dbp))
! 		{
! 			content = dbm_fetch(dbp, key);
! 			(void)printf("%.*s:%.*s\n",
! 				(int) key.dsize, key.dptr,
! 				(int) content.dsize, content.dptr);
  		}
! 	}
! 	else
! 	{
! 		for (; *argv; ++argv)
! 		{
! 			/*
! 			**  Use the sendmail adaptive algorithm of trying
! 			**  the key first without, then if needed with,
! 			**  the terminating NULL byte.
! 			*/
  			key.dptr = *argv;
! 			key.dsize = strlen(*argv);
  			content = dbm_fetch(dbp, key);
! 			if (content.dptr == NULL)
! 			{
! 				key.dsize++;
! 				content = dbm_fetch(dbp, key);
! 			}
! 			if (content.dptr != NULL)
  				(void)printf("%s:%.*s\n", key.dptr,
  					(int) content.dsize, content.dptr);
+ 			else
+ 				(void)printf("%s: No such key\n", key.dptr);
  		}
  	}
! 	dbm_close(dbp);
  }
+ #endif
  
  #if !HASSTRERROR
  
diff -cr sendmail-8.9.1/rmail/Makefile.m4 sendmail-8.9.2/rmail/Makefile.m4
*** sendmail-8.9.1/rmail/Makefile.m4	Thu Jun 18 10:47:53 1998
--- sendmail-8.9.2/rmail/Makefile.m4	Tue Dec 29 09:43:05 1998
***************
*** 1,7 ****
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.16	(Berkeley)	6/18/98
  #
  
  # C compiler
--- 1,7 ----
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.17	(Berkeley)	7/12/1998
  #
  
  # C compiler
***************
*** 34,40 ****
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of rmail binary (usually /usr/sbin or /usr/etc)
! BINDIR=	${DESTDIR}ifdef(`confUBINDIR', `confUBINDIR', `/usr/bin')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
--- 34,40 ----
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of rmail binary (usually /usr/sbin or /usr/etc)
! UBINDIR=${DESTDIR}ifdef(`confUBINDIR', `confUBINDIR', `/usr/bin')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
***************
*** 90,96 ****
  force-install: install-rmail install-docs
  
  install-rmail: rmail
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} rmail ${BINDIR}
  
  install-docs: rmail.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
--- 90,96 ----
  force-install: install-rmail install-docs
  
  install-rmail: rmail
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} rmail ${UBINDIR}
  
  install-docs: rmail.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
diff -cr sendmail-8.9.1/rmail/rmail.8 sendmail-8.9.2/rmail/rmail.8
*** sendmail-8.9.1/rmail/rmail.8	Tue May 19 16:35:51 1998
--- sendmail-8.9.2/rmail/rmail.8	Tue Dec 29 09:43:05 1998
***************
*** 7,13 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)rmail.8	6.14 (Berkeley) 5/19/98
  .\"
  .Dd May 19, 1998
  .Dt RMAIL 8
--- 7,13 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"	@(#)rmail.8	6.14 (Berkeley) 5/19/1998
  .\"
  .Dd May 19, 1998
  .Dt RMAIL 8
diff -cr sendmail-8.9.1/rmail/rmail.c sendmail-8.9.2/rmail/rmail.c
*** sendmail-8.9.1/rmail/rmail.c	Tue May 19 16:35:51 1998
--- sendmail-8.9.2/rmail/rmail.c	Tue Dec 29 09:43:05 1998
***************
*** 16,22 ****
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)rmail.c	8.17 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  /*
--- 16,22 ----
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)rmail.c	8.18 (Berkeley) 10/23/1998";
  #endif /* not lint */
  
  /*
***************
*** 136,145 ****
  	extern int errno, optind;
  	FILE *fp;
  	struct stat sb;
! 	size_t fplen, fptlen, len;
  	off_t offset;
  	int ch, debug, i, pdes[2], pid, status;
! 	char *addrp, *domain, *p, *t;
  	char *from_path, *from_sys, *from_user;
  	char *args[100], buf[2048], lbuf[2048];
  
--- 136,145 ----
  	extern int errno, optind;
  	FILE *fp;
  	struct stat sb;
! 	size_t fplen = 0, fptlen = 0, len;
  	off_t offset;
  	int ch, debug, i, pdes[2], pid, status;
! 	char *addrp = NULL, *domain, *p, *t;
  	char *from_path, *from_sys, *from_user;
  	char *args[100], buf[2048], lbuf[2048];
  
diff -cr sendmail-8.9.1/smrsh/Makefile.m4 sendmail-8.9.2/smrsh/Makefile.m4
*** sendmail-8.9.1/smrsh/Makefile.m4	Thu Jun  4 14:27:22 1998
--- sendmail-8.9.2/smrsh/Makefile.m4	Tue Dec 29 09:42:52 1998
***************
*** 1,7 ****
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.13	(Berkeley)	6/4/98
  #
  
  # C compiler
--- 1,7 ----
  #
  #  This Makefile is designed to work on the old "make" program.
  #
! #	@(#)Makefile.m4	8.14	(Berkeley)	7/12/1998
  #
  
  # C compiler
***************
*** 32,38 ****
  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')
--- 32,38 ----
  LIBS=	ifdef(`confLIBS', `confLIBS')
  
  # location of smrsh binary (usually /usr/libexec or /usr/etc)
! EBINDIR=${DESTDIR}ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
  
  # additional .o files needed
  OBJADD=	ifdef(`confOBJADD', `confOBJADD')
***************
*** 81,87 ****
  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',
--- 81,87 ----
  install: install-smrsh install-docs
  
  install-smrsh: smrsh
! 	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} smrsh ${EBINDIR}
  
  install-docs: smrsh.${MAN8SRC}
  ifdef(`confNO_MAN_INSTALL', `dnl',
diff -cr sendmail-8.9.1/smrsh/README sendmail-8.9.2/smrsh/README
*** sendmail-8.9.1/smrsh/README	Tue May 19 16:35:57 1998
--- sendmail-8.9.2/smrsh/README	Tue Dec 29 09:42:52 1998
***************
*** 3,9 ****
  
  README  smrsh - sendmail restricted shell.
  
! 	@(#)README	8.2	11/11/95
  
  
  This README file is provided as a courtesy of the CERT Coordination Center,
--- 3,9 ----
  
  README  smrsh - sendmail restricted shell.
  
! 	@(#)README	8.2	11/11/1995
  
  
  This README file is provided as a courtesy of the CERT Coordination Center,
diff -cr sendmail-8.9.1/smrsh/smrsh.8 sendmail-8.9.2/smrsh/smrsh.8
*** sendmail-8.9.1/smrsh/smrsh.8	Tue May 19 16:35:57 1998
--- sendmail-8.9.2/smrsh/smrsh.8	Tue Dec 29 09:42:52 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)smrsh.8	8.7 (Berkeley) 5/19/98
  .\"
  .TH SMRSH 8 11/02/93
  .SH NAME
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)smrsh.8	8.7 (Berkeley) 5/19/1998
  .\"
  .TH SMRSH 8 11/02/93
  .SH NAME
diff -cr sendmail-8.9.1/smrsh/smrsh.c sendmail-8.9.2/smrsh/smrsh.c
*** sendmail-8.9.1/smrsh/smrsh.c	Tue May 19 16:35:57 1998
--- sendmail-8.9.2/smrsh/smrsh.c	Tue Dec 29 09:42:52 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)smrsh.c	8.11 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  /*
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)smrsh.c	8.11 (Berkeley) 5/19/1998";
  #endif /* not lint */
  
  /*
diff -cr sendmail-8.9.1/src/Makefile.m4 sendmail-8.9.2/src/Makefile.m4
*** sendmail-8.9.1/src/Makefile.m4	Tue Jun 16 09:46:56 1998
--- sendmail-8.9.2/src/Makefile.m4	Tue Dec 29 09:42:27 1998
***************
*** 2,8 ****
  #  This Makefile is designed to work on any reasonably current version of
  #  "make" program.
  #
! #	@(#)Makefile.m4	8.23 (Berkeley) 6/16/98
  #
  
  # C compiler
--- 2,8 ----
  #  This Makefile is designed to work on any reasonably current version of
  #  "make" program.
  #
! #	@(#)Makefile.m4	8.25 (Berkeley) 10/5/1998
  #
  
  # C compiler
***************
*** 68,76 ****
  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}
  
--- 68,76 ----
  CFLAGS=	$O ${COPTS}
  
  BEFORE= confBEFORE
! OBJS=	alias.o arpadate.o clock.o collect.o conf.o control.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}
  
***************
*** 130,136 ****
  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
  
--- 130,137 ----
  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}/sendmail.hf
  	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 644 sendmail.st \
  	    ${STDIR}/sendmail.st
  
diff -cr sendmail-8.9.1/src/README sendmail-8.9.2/src/README
*** sendmail-8.9.1/src/README	Tue Jun 30 23:08:37 1998
--- sendmail-8.9.2/src/README	Tue Dec 29 09:42:13 1998
***************
*** 8,14 ****
  # the sendmail distribution.
  #
  #
! #	@(#)README	8.206 (Berkeley) 6/30/98
  #
  
  This directory contains the source files for sendmail(TM).
--- 8,14 ----
  # the sendmail distribution.
  #
  #
! #	@(#)README	8.209 (Berkeley) 10/6/1998
  #
  
  This directory contains the source files for sendmail(TM).
***************
*** 844,849 ****
--- 844,855 ----
  
  	This warning can be ignored.
  
+ 	Digital UNIX's linker checks /usr/ccs/lib/ before /usr/lib/.
+ 	If you have installed a new version of BIND in /usr/include
+ 	and /usr/lib, you will experience difficulties as Digital ships
+ 	libresolv.a in /usr/ccs/lib/ as well.  Be sure to replace both
+ 	copies of libresolv.a.
+ 
  IRIX
  	The header files on SGI IRIX are completely prototyped, and as
  	a result you can sometimes get some warning messages during
***************
*** 1072,1077 ****
--- 1078,1090 ----
  	to LIBS.  Data structures may change and you'd be asking for a
  	core dump.
  
+ AIX 4.2
+ 	The AIX m4 implements a different mechanism for ifdef which is
+ 	inconsistent with other versions of m4.  Therefore, it will not
+ 	work properly with the sendmail Build architecture or m4
+ 	configuration method.  To work around this problem, please use
+ 	GNU m4 from ftp://ftp.gnu.org/pub/gnu/.
+ 
  AIX 3.x
  	This version of sendmail does not support MB, MG, and MR resource
  	records, which are supported by AIX sendmail.
***************
*** 1439,1442 ****
  
  Eric Allman
  
! (Version 8.206, last update 6/30/98 22:08:36)
--- 1452,1455 ----
  
  Eric Allman
  
! (Version 8.209, last update 10/6/1998 17:10:21)
diff -cr sendmail-8.9.1/src/TRACEFLAGS sendmail-8.9.2/src/TRACEFLAGS
*** sendmail-8.9.1/src/TRACEFLAGS	Tue May 19 16:36:10 1998
--- sendmail-8.9.2/src/TRACEFLAGS	Tue Dec 29 09:42:26 1998
***************
*** 1,4 ****
! #	@(#)TRACEFLAGS	8.21 (Berkeley) 4/27/98
  0, 1	main.c		main	skip background fork
  0, 4	main.c		main	canonical name, UUCP node name, a.k.a.s
  0, 15	main.c		main	print configuration
--- 1,4 ----
! #	@(#)TRACEFLAGS	8.21 (Berkeley) 4/27/1998
  0, 1	main.c		main	skip background fork
  0, 4	main.c		main	canonical name, UUCP node name, a.k.a.s
  0, 15	main.c		main	print configuration
diff -cr sendmail-8.9.1/src/alias.c sendmail-8.9.2/src/alias.c
*** sendmail-8.9.1/src/alias.c	Mon Jun  8 14:24:55 1998
--- sendmail-8.9.2/src/alias.c	Tue Dec 29 09:42:25 1998
***************
*** 13,19 ****
  # include "sendmail.h"
  
  #ifndef lint
! static char sccsid[] = "@(#)alias.c	8.92 (Berkeley) 6/5/98";
  #endif /* not lint */
  
  
--- 13,19 ----
  # include "sendmail.h"
  
  #ifndef lint
! static char sccsid[] = "@(#)alias.c	8.96 (Berkeley) 12/18/1998";
  #endif /* not lint */
  
  
***************
*** 382,388 ****
  		/* database is out of date */
  		if (AutoRebuild && stb.st_ino != 0 &&
  		    (stb.st_uid == geteuid() ||
! 		     (geteuid() == 0 && stb.st_uid == TrustedFileUid)))
  		{
  			bool oldSuprErrs;
  
--- 382,388 ----
  		/* database is out of date */
  		if (AutoRebuild && stb.st_ino != 0 &&
  		    (stb.st_uid == geteuid() ||
! 		     (geteuid() == 0 && stb.st_uid == TrustedUid)))
  		{
  			bool oldSuprErrs;
  
***************
*** 510,515 ****
--- 510,516 ----
  				username());
  		}
  		map->map_mflags |= MF_OPEN|MF_WRITABLE;
+ 		map->map_pid = getpid();
  		readaliases(map, af, !automatic, TRUE);
  		success = TRUE;
  	}
diff -cr sendmail-8.9.1/src/aliases.5 sendmail-8.9.2/src/aliases.5
*** sendmail-8.9.1/src/aliases.5	Tue May 19 16:36:05 1998
--- sendmail-8.9.2/src/aliases.5	Tue Dec 29 09:42:19 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)aliases.5	8.8 (Berkeley) 5/19/98
  .\"
  .Dd May 19, 1998
  .Dt ALIASES 5
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)aliases.5	8.8 (Berkeley) 5/19/1998
  .\"
  .Dd May 19, 1998
  .Dt ALIASES 5
diff -cr sendmail-8.9.1/src/arpadate.c sendmail-8.9.2/src/arpadate.c
*** sendmail-8.9.1/src/arpadate.c	Tue May 19 16:36:04 1998
--- sendmail-8.9.2/src/arpadate.c	Tue Dec 29 09:42:17 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)arpadate.c	8.12 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)arpadate.c	8.12 (Berkeley) 5/19/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/clock.c sendmail-8.9.2/src/clock.c
*** sendmail-8.9.1/src/clock.c	Thu Jun  4 14:51:31 1998
--- sendmail-8.9.2/src/clock.c	Tue Dec 29 09:42:21 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)clock.c	8.34 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)clock.c	8.34 (Berkeley) 6/4/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/collect.c sendmail-8.9.2/src/collect.c
*** sendmail-8.9.1/src/collect.c	Thu Jun  4 14:32:01 1998
--- sendmail-8.9.2/src/collect.c	Tue Dec 29 09:42:18 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)collect.c	8.89 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  # include <errno.h>
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)collect.c	8.91 (Berkeley) 8/19/1998";
  #endif /* not lint */
  
  # include <errno.h>
***************
*** 81,87 ****
  	char dfname[MAXQFNAME];
  	char bufbuf[MAXLINE];
  	extern bool isheader __P((char *));
- 	extern void eatheader __P((ENVELOPE *, bool));
  	extern void tferror __P((FILE *volatile, ENVELOPE *));
  
  	headeronly = hdrp != NULL;
--- 81,86 ----
***************
*** 101,107 ****
  		{
  			syserr("Cannot create %s", dfname);
  			e->e_flags |= EF_NO_BODY_RETN;
! 			finis();
  		}
  		if (fstat(fileno(tf), &stbuf) < 0)
  			e->e_dfino = -1;
--- 100,106 ----
  		{
  			syserr("Cannot create %s", dfname);
  			e->e_flags |= EF_NO_BODY_RETN;
! 			finis(TRUE, ExitStat);
  		}
  		if (fstat(fileno(tf), &stbuf) < 0)
  			e->e_dfino = -1;
***************
*** 159,166 ****
  
  	for (;;)
  	{
- 		extern int chompheader __P((char *, bool, HDR **, ENVELOPE *));
- 
  		if (tTd(30, 35))
  			printf("top, istate=%d, mstate=%d\n", istate, mstate);
  		for (;;)
--- 158,163 ----
***************
*** 414,420 ****
  	{
  		tferror(tf, e);
  		flush_errors(TRUE);
! 		finis();
  	}
  
  	/* An EOF when running SMTP is an error */
--- 411,417 ----
  	{
  		tferror(tf, e);
  		flush_errors(TRUE);
! 		finis(TRUE, ExitStat);
  	}
  
  	/* An EOF when running SMTP is an error */
***************
*** 456,462 ****
  		/* and don't try to deliver the partial message either */
  		if (InChild)
  			ExitStat = EX_QUIT;
! 		finis();
  	}
  
  	/*
--- 453,459 ----
  		/* and don't try to deliver the partial message either */
  		if (InChild)
  			ExitStat = EX_QUIT;
! 		finis(TRUE, ExitStat);
  	}
  
  	/*
***************
*** 504,510 ****
  		/* no valid recipient headers */
  		register ADDRESS *q;
  		char *hdr = NULL;
- 		extern void addheader __P((char *, char *, HDR **));
  
  		/* create an Apparently-To: field */
  		/*    that or reject the message.... */
--- 501,506 ----
***************
*** 577,583 ****
  	{
  		/* we haven't acked receipt yet, so just chuck this */
  		syserr("Cannot reopen %s", dfname);
! 		finis();
  	}
  }
  
--- 573,579 ----
  	{
  		/* we haven't acked receipt yet, so just chuck this */
  		syserr("Cannot reopen %s", dfname);
! 		finis(TRUE, ExitStat);
  	}
  }
  
diff -cr sendmail-8.9.1/src/conf.c sendmail-8.9.2/src/conf.c
*** sendmail-8.9.1/src/conf.c	Thu Jun 25 23:09:42 1998
--- sendmail-8.9.2/src/conf.c	Tue Dec 29 09:42:24 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)conf.c	8.431 (Berkeley) 6/25/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)conf.c	8.450 (Berkeley) 12/17/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 217,223 ****
  	int i;
  	struct passwd *pw;
  	char buf[MAXNAME];
- 	extern void inittimeouts __P((char *));
  	extern void setdefuser __P((void));
  	extern void setupmaps __P((void));
  	extern void setupmailers __P((void));
--- 217,222 ----
***************
*** 247,253 ****
  		DefGid = 1;			/* option g */
  		setdefuser();
  	}
! 	TrustedFileUid = 0;
  	if (tTd(37, 4))
  		printf("setdefaults: DefUser=%s, DefUid=%d, DefGid=%d\n",
  		       DefUser != NULL ? DefUser : "<1:1>",
--- 246,252 ----
  		DefGid = 1;			/* option g */
  		setdefuser();
  	}
! 	TrustedUid = 0;
  	if (tTd(37, 4))
  		printf("setdefaults: DefUser=%s, DefUid=%d, DefGid=%d\n",
  		       DefUser != NULL ? DefUser : "<1:1>",
***************
*** 292,297 ****
--- 291,297 ----
  #ifdef HESIOD_INIT
  	HesiodContext = NULL;
  #endif
+ 	ControlSocketName = NULL;
  	setupmaps();
  	setupmailers();
  	setupheaders();
***************
*** 324,330 ****
  setupmailers()
  {
  	char buf[100];
- 	extern void makemailer __P((char *));
  
  	strcpy(buf, "prog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh -c \201u");
  	makemailer(buf);
--- 324,329 ----
***************
*** 838,843 ****
--- 837,850 ----
  					*p++ = '\0';
  				if (buf[0] == '\0')
  					continue;
+ 				if (p == NULL)
+ 				{
+ 					sm_syslog(LOG_ERR, NOQID,
+ 						  "Bad line on %.100s: %.100s",
+ 						  ServiceSwitchFile,
+ 						  buf);
+ 					continue;
+ 				}
  				while (isspace(*p))
  					p++;
  				if (*p == '\0')
***************
*** 1280,1289 ****
  #endif
  #ifdef __QNX__
  	/*
! 	** Due to QNX's network distributed nature, you can target a tcpip
! 	** stack on a different node in the qnx network; this patch lets
! 	** this feature work.  The __sock_locate() must be done before the
! 	** environment is clear.
  	*/
  	__sock_locate();
  #endif
--- 1287,1296 ----
  #endif
  #ifdef __QNX__
  	/*
! 	**  Due to QNX's network distributed nature, you can target a tcpip
! 	**  stack on a different node in the qnx network; this patch lets
! 	**  this feature work.  The __sock_locate() must be done before the
! 	**  environment is clear.
  	*/
  	__sock_locate();
  #endif
***************
*** 2047,2053 ****
  	else if (conncnt++ > ConnRateThrottle && ConnRateThrottle > 0)
  	{
  		/* sleep to flatten out connection load */
! 		setproctitle("deferring connections on port %d: %d per second",
  			port, ConnRateThrottle);
  		if (LogLevel >= 14)
  			sm_syslog(LOG_INFO, NOQID,
--- 2054,2060 ----
  	else if (conncnt++ > ConnRateThrottle && ConnRateThrottle > 0)
  	{
  		/* sleep to flatten out connection load */
! 		sm_setproctitle(TRUE, "deferring connections on port %d: %d per second",
  			port, ConnRateThrottle);
  		if (LogLevel >= 14)
  			sm_syslog(LOG_INFO, NOQID,
***************
*** 2059,2065 ****
  	CurrentLA = getla();
  	if (CurrentLA >= refusela)
  	{
! 		setproctitle("rejecting connections on port %d: load average: %d",
  			port, CurrentLA);
  		if (LogLevel >= 14)
  			sm_syslog(LOG_INFO, NOQID,
--- 2066,2072 ----
  	CurrentLA = getla();
  	if (CurrentLA >= refusela)
  	{
! 		sm_setproctitle(TRUE, "rejecting connections on port %d: load average: %d",
  			port, CurrentLA);
  		if (LogLevel >= 14)
  			sm_syslog(LOG_INFO, NOQID,
***************
*** 2070,2076 ****
  
  	if (!enoughdiskspace(MinBlocksFree + 1))
  	{
! 		setproctitle("rejecting connections on port %d: min free: %d",
  			port, MinBlocksFree);
  		if (LogLevel >= 14)
  			sm_syslog(LOG_INFO, NOQID,
--- 2077,2083 ----
  
  	if (!enoughdiskspace(MinBlocksFree + 1))
  	{
! 		sm_setproctitle(TRUE, "rejecting connections on port %d: min free: %d",
  			port, MinBlocksFree);
  		if (LogLevel >= 14)
  			sm_syslog(LOG_INFO, NOQID,
***************
*** 2081,2092 ****
  
  	if (MaxChildren > 0 && CurChildren >= MaxChildren)
  	{
- 		extern void proc_list_probe __P((void));
- 
  		proc_list_probe();
  		if (CurChildren >= MaxChildren)
  		{
! 			setproctitle("rejecting connections on port %d: %d children, max %d",
  				port, CurChildren, MaxChildren);
  			if (LogLevel >= 14)
  				sm_syslog(LOG_INFO, NOQID,
--- 2088,2097 ----
  
  	if (MaxChildren > 0 && CurChildren >= MaxChildren)
  	{
  		proc_list_probe();
  		if (CurChildren >= MaxChildren)
  		{
! 			sm_setproctitle(TRUE, "rejecting connections on port %d: %d children, max %d",
  				port, CurChildren, MaxChildren);
  			if (LogLevel >= 14)
  				sm_syslog(LOG_INFO, NOQID,
***************
*** 2170,2181 ****
  #  define SPT_PADCHAR	' '
  # endif
  
  # ifndef SPT_BUFSIZE
  #  define SPT_BUFSIZE	MAXLINE
  # endif
  
- #endif /* SPT_TYPE != SPT_NONE && SPT_TYPE != SPT_BUILTIN */
- 
  /*
  **  Pointers for setproctitle.
  **	This allows "ps" listings to give more useful information.
--- 2175,2186 ----
  #  define SPT_PADCHAR	' '
  # endif
  
+ #endif /* SPT_TYPE != SPT_NONE && SPT_TYPE != SPT_BUILTIN */
+ 
  # ifndef SPT_BUFSIZE
  #  define SPT_BUFSIZE	MAXLINE
  # endif
  
  /*
  **  Pointers for setproctitle.
  **	This allows "ps" listings to give more useful information.
***************
*** 2320,2325 ****
--- 2325,2368 ----
  
  #endif /* SPT_TYPE != SPT_BUILTIN */
  /*
+ **  SM_SETPROCTITLE -- set process task and set process title for ps
+ **
+ **	Possibly set process status and call setproctitle() to
+ **	change the ps display.
+ **
+ **	Parameters:
+ **		status -- whether or not to store as process status
+ **		fmt -- a printf style format string.
+ **		a, b, c -- possible parameters to fmt.
+ **
+ **	Returns:
+ **		none.
+ */
+ 
+ /*VARARGS2*/
+ void
+ # ifdef __STDC__
+ sm_setproctitle(bool status, const char *fmt, ...)
+ # else
+ sm_setproctitle(status, fmt, va_alist)
+ 	bool status;
+ 	const char *fmt;
+ 	va_dcl
+ #endif
+ {
+ 	char buf[SPT_BUFSIZE];
+ 
+ 	VA_LOCAL_DECL
+ 	/* print the argument string */
+ 	VA_START(fmt);
+ 	(void) vsnprintf(buf, SPT_BUFSIZE, fmt, ap);
+ 	VA_END;
+ 
+ 	if (status)
+ 		proc_list_set(getpid(), buf);
+ 	setproctitle("%s", buf);
+ }
+ /*
  **  WAITFOR -- wait for a particular process id.
  **
  **	Parameters:
***************
*** 2789,2796 ****
  
  
  /*
! ** this version hacked to add `atend' flag to allow state machine
! ** to reset if invoked by the program to scan args for a 2nd time
  */
  
  #if defined(LIBC_SCCS) && !defined(lint)
--- 2832,2839 ----
  
  
  /*
! **  this version hacked to add `atend' flag to allow state machine
! **  to reset if invoked by the program to scan args for a 2nd time
  */
  
  #if defined(LIBC_SCCS) && !defined(lint)
***************
*** 2962,2968 ****
  	"/bin/bsh",		/* Bourne shell */
  	"/usr/bin/bsh",
  #endif
! #ifdef __svr4__
  	"/bin/ksh",		/* Korn shell */
  	"/usr/bin/ksh",
  #endif
--- 3005,3011 ----
  	"/bin/bsh",		/* Bourne shell */
  	"/usr/bin/bsh",
  #endif
! #if defined(__svr4__) || defined(__svr5__)
  	"/bin/ksh",		/* Korn shell */
  	"/usr/bin/ksh",
  #endif
***************
*** 3665,3673 ****
--- 3708,3770 ----
  	}
  #endif
  
+ #if defined(VENDOR_NAME) && defined(VENDOR_CODE)
+ 	if (strcasecmp(vendor, VENDOR_NAME) == 0)
+ 	{
+ 		VendorCode = VENDOR_CODE;
+ 		return TRUE;
+ 	}
+ #endif
+ 
  	return FALSE;
  }
  /*
+ **  GETVENDOR -- return vendor name based on vendor code
+ **
+ **	Parameters:
+ **		vendorcode -- numeric representation of vendor.
+ **
+ **	Returns:
+ **		string containing vendor name.
+ */
+ 
+ char *
+ getvendor(vendorcode)
+ 	int vendorcode;
+ {
+ #if defined(VENDOR_NAME) && defined(VENDOR_CODE)
+ 	/*
+ 	**  Can't have the same switch case twice so need to 
+ 	**  handle VENDOR_CODE outside of switch.  It might
+ 	**  match one of the existing VENDOR_* codes.
+ 	*/
+ 
+ 	if (vendorcode == VENDOR_CODE)
+ 		return VENDOR_NAME;
+ #endif
+ 
+ 	switch (vendorcode)
+ 	{
+ 		case VENDOR_BERKELEY:
+ 			return "Berkeley";
+ 		
+ 		case VENDOR_SUN:
+ 			return "Sun";
+ 
+ 		case VENDOR_HP:
+ 			return "HP";
+ 
+ 		case VENDOR_IBM:
+ 			return "IBM";
+ 
+ 		case VENDOR_SENDMAIL:
+ 			return "Sendmail";
+ 
+ 		default:
+ 			return "Unknown";
+ 	}
+ }
+ /*
  **  VENDOR_PRE_DEFAULTS, VENDOR_POST_DEFAULTS -- set vendor-specific defaults
  **
  **	Vendor_pre_defaults is called before reading the configuration
***************
*** 3730,3736 ****
  	if (getluid() != -1)
  	{
  		usrerr("Daemon cannot have LUID");
! 		exit(EX_USAGE);
  	}
  #endif /* SECUREWARE */
  }
--- 3827,3833 ----
  	if (getluid() != -1)
  	{
  		usrerr("Daemon cannot have LUID");
! 		finis(FALSE, EX_USAGE);
  	}
  #endif /* SECUREWARE */
  }
***************
*** 4173,4183 ****
  				rc, uid);
  			break;
  		}
! 		exit(EX_NOPERM);
  	}
  }
  #endif /* SECUREWARE */
  /*
  **  LOAD_IF_NAMES -- load interface-specific names into $=w
  **
  **	Parameters:
--- 4270,4357 ----
  				rc, uid);
  			break;
  		}
! 		finis(FALSE, EX_NOPERM);
  	}
  }
  #endif /* SECUREWARE */
  /*
+ **  ADD_LOCAL_HOST_NAMES -- Add a hostname to class 'w' based on IP address
+ **
+ **	Add hostnames to class 'w' based on the IP address read from
+ **	the network interface.
+ **
+ **	Parameters:
+ **		sa -- a pointer to a SOCKADDR containing the address
+ **
+ **	Returns:
+ **		0 if successful, -1 if host lookup fails.
+ */
+ 
+ int
+ add_hostnames(sa)
+ 	SOCKADDR *sa;
+ {
+ 	struct hostent *hp;
+ 
+ 	/* lookup name with IP address */
+ 	switch (sa->sa.sa_family)
+ 	{
+ 		case AF_INET:
+ 			hp = sm_gethostbyaddr((char *) &sa->sin.sin_addr,
+ 				sizeof(sa->sin.sin_addr), sa->sa.sa_family);
+ 			break;
+ 
+ 		default:
+ #if _FFR_LOG_UNSUPPORTED_FAMILIES
+ 			/* XXX: Give warning about unsupported family */
+ 			if (LogLevel > 3)
+ 				sm_syslog(LOG_WARNING, NOQID,
+ 					  "Unsupported address family %d: %.100s",
+ 					  sa->sa.sa_family, anynet_ntoa(sa));
+ #endif
+ 			return -1;
+ 	}
+ 
+ 	if (hp == NULL)
+ 	{
+ 		int save_errno = errno;
+ 
+ 		if (LogLevel > 3)
+ 			sm_syslog(LOG_WARNING, NOQID,
+ 				"gethostbyaddr(%.100s) failed: %d\n",
+ 				anynet_ntoa(sa),
+ #if NAMED_BIND
+ 				h_errno
+ #else
+ 				-1
+ #endif
+ 				);
+ 		errno = save_errno;
+ 		return -1;
+ 	}
+ 
+ 	/* save its cname */
+ 	if (!wordinclass((char *) hp->h_name, 'w'))
+ 	{
+ 		setclass('w', (char *) hp->h_name);
+ 		if (tTd(0, 4))
+ 			printf("\ta.k.a.: %s\n", hp->h_name);
+ 	}
+ 
+ 	/* save all it aliases name */
+ 	while (*hp->h_aliases)
+ 	{
+ 		if (!wordinclass(*hp->h_aliases, 'w'))
+ 		{
+ 			setclass('w', *hp->h_aliases);
+ 			if (tTd(0, 4))
+ 				printf("\ta.k.a.: %s\n", *hp->h_aliases);
+ 		}
+ 		hp->h_aliases++;
+ 	}
+ 	return 0;
+ }
+ /*
  **  LOAD_IF_NAMES -- load interface-specific names into $=w
  **
  **	Parameters:
***************
*** 4254,4262 ****
  	for (i = 0; i < ifc.ifc_len; )
  	{
  		struct ifreq *ifr = (struct ifreq *) &ifc.ifc_buf[i];
! 		struct sockaddr *sa = &ifr->ifr_addr;
  		struct in_addr ia;
- 		struct hostent *hp;
  #ifdef SIOCGIFFLAGS
  		struct ifreq ifrf;
  #endif
--- 4428,4435 ----
  	for (i = 0; i < ifc.ifc_len; )
  	{
  		struct ifreq *ifr = (struct ifreq *) &ifc.ifc_buf[i];
! 		SOCKADDR *sa = (SOCKADDR *) &ifr->ifr_addr;
  		struct in_addr ia;
  #ifdef SIOCGIFFLAGS
  		struct ifreq ifrf;
  #endif
***************
*** 4264,4277 ****
  		extern char *inet_ntoa();
  
  #ifdef BSD4_4_SOCKADDR
! 		if (sa->sa_len > sizeof ifr->ifr_addr)
! 			i += sizeof ifr->ifr_name + sa->sa_len;
  		else
  #endif
  			i += sizeof *ifr;
  
  		if (tTd(0, 20))
! 			printf("%s\n", anynet_ntoa((SOCKADDR *) sa));
  
  		if (ifr->ifr_addr.sa_family != AF_INET)
  			continue;
--- 4437,4450 ----
  		extern char *inet_ntoa();
  
  #ifdef BSD4_4_SOCKADDR
! 		if (sa->sa.sa_len > sizeof ifr->ifr_addr)
! 			i += sizeof ifr->ifr_name + sa->sa.sa_len;
  		else
  #endif
  			i += sizeof *ifr;
  
  		if (tTd(0, 20))
! 			printf("%s\n", anynet_ntoa(sa));
  
  		if (ifr->ifr_addr.sa_family != AF_INET)
  			continue;
***************
*** 4290,4296 ****
  			continue;
  
  		/* extract IP address from the list*/
! 		ia = (((struct sockaddr_in *) sa)->sin_addr);
  		if (ia.s_addr == INADDR_ANY || ia.s_addr == INADDR_NONE)
  		{
  			message("WARNING: interface %s is UP with %s address",
--- 4463,4469 ----
  			continue;
  
  		/* extract IP address from the list*/
! 		ia = sa->sin.sin_addr;
  		if (ia.s_addr == INADDR_ANY || ia.s_addr == INADDR_NONE)
  		{
  			message("WARNING: interface %s is UP with %s address",
***************
*** 4313,4353 ****
  		if (bitset(IFF_LOOPBACK, IFRFREF.ifr_flags))
  			continue;
  
! 		/* lookup name with IP address */
! 		hp = sm_gethostbyaddr((char *) &ia, sizeof(ia), AF_INET);
! 		if (hp == NULL)
! 		{
! 			if (LogLevel > 3)
! 				sm_syslog(LOG_WARNING, NOQID,
! 					"gethostbyaddr(%.100s) failed: %d\n",
! 					inet_ntoa(ia),
! #if NAMED_BIND
! 					h_errno);
! #else
! 					-1);
! #endif
! 			continue;
! 		}
! 
! 		/* save its cname */
! 		if (!wordinclass((char *) hp->h_name, 'w'))
! 		{
! 			setclass('w', (char *) hp->h_name);
! 			if (tTd(0, 4))
! 				printf("\ta.k.a.: %s\n", hp->h_name);
! 		}
! 
! 		/* save all it aliases name */
! 		while (*hp->h_aliases)
! 		{
! 			if (!wordinclass(*hp->h_aliases, 'w'))
! 			{
! 				setclass('w', *hp->h_aliases);
! 				if (tTd(0, 4))
! 				printf("\ta.k.a.: %s\n", *hp->h_aliases);
! 			}
! 			hp->h_aliases++;
! 		}
  	}
  	free(ifc.ifc_buf);
  	close(s);
--- 4486,4492 ----
  		if (bitset(IFF_LOOPBACK, IFRFREF.ifr_flags))
  			continue;
  
! 		(void) add_hostnames(sa);
  	}
  	free(ifc.ifc_buf);
  	close(s);
***************
*** 4412,4418 ****
  	extern int SyslogErrno;
  	extern char *DoprEnd;
  	VA_LOCAL_DECL
! 	extern void sm_dopr __P((char *, const char *, ...));
  	
  	SyslogErrno = errno;
  	if (id == NULL)
--- 4551,4557 ----
  	extern int SyslogErrno;
  	extern char *DoprEnd;
  	VA_LOCAL_DECL
! 	extern void sm_dopr __P((char *, const char *, va_list));
  	
  	SyslogErrno = errno;
  	if (id == NULL)
diff -cr sendmail-8.9.1/src/conf.h sendmail-8.9.2/src/conf.h
*** sendmail-8.9.1/src/conf.h	Thu Jun  4 14:32:01 1998
--- sendmail-8.9.2/src/conf.h	Tue Dec 29 09:42:16 1998
***************
*** 9,15 ****
   * the sendmail distribution.
   *
   *
!  *	@(#)conf.h	8.372 (Berkeley) 6/4/98
   */
  
  /*
--- 9,15 ----
   * the sendmail distribution.
   *
   *
!  *	@(#)conf.h	8.380 (Berkeley) 11/9/1998
   */
  
  /*
***************
*** 64,69 ****
--- 64,74 ----
  # define MACBUFSIZE	4096		/* max expanded macro buffer size */
  # define TOBUFSIZE	512		/* max buffer to hold address list */
  # define MAXSHORTSTR	203		/* max short string length */
+ # if _FFR_MAX_MIME_HEADER_LENGTH
+ #  define MAXMACNAMELEN	25		/* max macro name length */
+ # else
+ #  define MAXMACNAMELEN	20		/* max macro name length */
+ # endif
  
  /**********************************************************************
  **  Compilation options.
***************
*** 344,355 ****
  # define GIDSET_T	gid_t
  # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
  # define SFS_BAVAIL	f_bfree		/* alternate field name */
  # ifdef IRIX6
  #  define STAT64        1
  #  define QUAD_T	unsigned long long
  #  define LA_TYPE	LA_IRIX6	/* figure out at run time */
  #  define SAFENFSPATHCONF 0	/* pathconf(2) lies on NFS filesystems */
- #  define SYSLOG_BUFSIZE 512
  # else
  #  define LA_TYPE	LA_INT
  
--- 349,360 ----
  # define GIDSET_T	gid_t
  # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
  # define SFS_BAVAIL	f_bfree		/* alternate field name */
+ # define SYSLOG_BUFSIZE 512
  # ifdef IRIX6
  #  define STAT64        1
  #  define QUAD_T	unsigned long long
  #  define LA_TYPE	LA_IRIX6	/* figure out at run time */
  #  define SAFENFSPATHCONF 0	/* pathconf(2) lies on NFS filesystems */
  # else
  #  define LA_TYPE	LA_INT
  
***************
*** 674,679 ****
--- 679,719 ----
  
  #endif
  
+ /*
+ **  Apple Rhapsody
+ **	Contributed by Wilfredo Sanchez <wsanchez@apple.com>
+ */
+ 
+ #ifdef __APPLE__
+ # define HASFCHMOD	1	/* has fchmod(2) syscall */
+ # define HASFLOCK	1	/* has flock(2) syscall */
+ # define HASUNAME	1	/* has uname(2) syscall */
+ # define HASUNSETENV	1
+ # define HASSETSID	1	/* has the setsid(2) POSIX syscall */
+ # define HASINITGROUPS	1
+ # define HASSETVBUF	1
+ # define HASSETREUID	1
+ # define USESETEUID	1	/* has useable seteuid(2) call */
+ # define HASLSTAT	1
+ # define HASSETRLIMIT	1
+ # define HASWAITPID	1
+ # define HASSTRERROR	1	/* has strerror(3) */
+ # define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
+ # define USESTRERROR	1	/* has strerror(3) */
+ # define HASGETDTABLESIZE	1
+ # define HASGETUSERSHELL	1
+ # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
+ # define BSD4_4_SOCKADDR	/* has sa_len */
+ # define NETLINK	1	/* supports AF_LINK */
+ # define HAS_ST_GEN	1	/* has st_gen field in stat struct */
+ # define GIDSET_T	gid_t
+ # define LA_TYPE	LA_SUBR		/* use getloadavg(3) */
+ # define SFS_TYPE	SFS_MOUNT	/* use <sys/mount.h> statfs() impl */
+ # define SPT_TYPE	SPT_PSSTRINGS
+ # define SPT_PADCHAR	'\0'	/* pad process title with nulls */
+ # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
+ #endif
+ 
  
  /*
  **  4.4 BSD
***************
*** 814,825 ****
  # endif
  # if defined(__FreeBSD__)
  #  undef SPT_TYPE
! #  if __FreeBSD__ == 2
! #   include <osreldate.h>		/* and this works */
! #   if __FreeBSD_version >= 199512	/* 2.2-current right now */
  #    include <libutil.h>
  #    define SPT_TYPE	SPT_BUILTIN
  #   endif
  #  endif
  #  ifndef SPT_TYPE
  #   define SPT_TYPE	SPT_REUSEARGV
--- 854,868 ----
  # endif
  # if defined(__FreeBSD__)
  #  undef SPT_TYPE
! #  if __FreeBSD__ >= 2
! #   include <osreldate.h>
! #   if __FreeBSD_version >= 199512	/* 2.2-current when it appeared */
  #    include <libutil.h>
  #    define SPT_TYPE	SPT_BUILTIN
  #   endif
+ #   if __FreeBSD_version >= 222000	/* 2.2.2-release and later */
+ #    define HASSETUSERCONTEXT 	1	/* BSDI-style login classes */
+ #   endif
  #  endif
  #  ifndef SPT_TYPE
  #   define SPT_TYPE	SPT_REUSEARGV
***************
*** 1216,1224 ****
  **	Florian La Roche <rzsfl@rz.uni-sb.de>
  **	Karl London <karl@borg.demon.co.uk>
  **
! **  Last compiled against:	[06/10/96 @ 09:21:40 PM (Monday)]
! **	sendmail 8.8-a4		named bind-4.9.4-T4B	db-1.85
! **	gcc 2.7.2		libc-5.3.12		linux 2.0.0
  **
  **  NOTE: Override HASFLOCK as you will but, as of 1.99.6, mixed-style
  ** 	file locking is no longer allowed.  In particular, make sure
--- 1259,1267 ----
  **	Florian La Roche <rzsfl@rz.uni-sb.de>
  **	Karl London <karl@borg.demon.co.uk>
  **
! **  Last compiled against:	[07/21/98 @ 11:47:34 AM (Tuesday)]
! **	sendmail 8.9.1		bind-8.1.2		db-2.4.14
! **	gcc-2.8.1		glibc-2.0.94		linux-2.1.109
  **
  **  NOTE: Override HASFLOCK as you will but, as of 1.99.6, mixed-style
  ** 	file locking is no longer allowed.  In particular, make sure
***************
*** 1228,1233 ****
--- 1271,1277 ----
  
  #ifdef __linux__
  # define BSD		1	/* include BSD defines */
+ # define USESETEUID	0	/* Have it due to POSIX, but doesn't work */
  # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
  # define HASUNAME	1	/* use System V uname(2) system call */
  # define HASUNSETENV	1	/* has unsetenv(3) call */
***************
*** 1255,1261 ****
  # ifndef _PATH_SENDMAILPID
  #  define _PATH_SENDMAILPID	"/var/run/sendmail.pid"
  # endif
! # define TZ_TYPE	TZ_TNAME
  # include <sys/sysmacros.h>
  # undef atol			/* wounded in <stdlib.h> */
  #endif
--- 1299,1305 ----
  # ifndef _PATH_SENDMAILPID
  #  define _PATH_SENDMAILPID	"/var/run/sendmail.pid"
  # endif
! # define TZ_TYPE	TZ_TZNAME
  # include <sys/sysmacros.h>
  # undef atol			/* wounded in <stdlib.h> */
  #endif
***************
*** 1484,1489 ****
--- 1528,1564 ----
  # endif
  #endif
  
+ /*
+ **  System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatiblity Libs ie. native)
+ **
+ **	Contributed by Paul Gampe <paulg@apnic.net>
+ */
+ 
+ #ifdef __svr5__
+ # include <sys/mkdev.h>
+ # define __svr4__
+ # define SYS5SIGNALS		1
+ # define HASSETSID		1
+ # define HASSETREUID		1
+ # define HASWAITPID		1
+ # define HASGETDTABLESIZE	1
+ # define GIDSET_T		gid_t
+ # define SOCKADDR_LEN_T		size_t
+ # define SOCKOPT_LEN_T		size_t
+ # ifndef _PATH_UNIX
+ #  define _PATH_UNIX		"/stand/unix"
+ # endif
+ # define SPT_PADCHAR		'\0'	/* pad process title with nulls */
+ # define SYSLOG_BUFSIZE		1024	/* unsure */
+ # ifndef _PATH_VENDOR_CF
+ #  define _PATH_VENDOR_CF	"/etc/sendmail.cf"
+ # endif
+ # ifndef _PATH_SENDMAILPID
+ #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
+ # endif
+ #endif
+ 
+ /* ###################################################################### */ 
  
  /*
  **  UnixWare 2.x
***************
*** 1516,1522 ****
  # define LA_TYPE		LA_ZERO
  # undef WIFEXITED
  # undef WEXITSTATUS
! # define _PATH_UNIX		"/unix"
  # ifndef _PATH_VENDOR_CF
  #  define _PATH_VENDOR_CF	"/usr/ucblib/sendmail.cf"
  # endif
--- 1591,1599 ----
  # define LA_TYPE		LA_ZERO
  # undef WIFEXITED
  # undef WEXITSTATUS
! # ifndef _PATH_UNIX
! #  define _PATH_UNIX		"/unix"
! # endif
  # ifndef _PATH_VENDOR_CF
  #  define _PATH_VENDOR_CF	"/usr/ucblib/sendmail.cf"
  # endif
Only in sendmail-8.9.2/src: control.c
diff -cr sendmail-8.9.1/src/convtime.c sendmail-8.9.2/src/convtime.c
*** sendmail-8.9.1/src/convtime.c	Tue May 19 16:36:03 1998
--- sendmail-8.9.2/src/convtime.c	Tue Dec 29 09:42:15 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)convtime.c	8.14 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)convtime.c	8.14 (Berkeley) 5/19/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/daemon.c sendmail-8.9.2/src/daemon.c
*** sendmail-8.9.1/src/daemon.c	Wed Jun 24 11:28:42 1998
--- sendmail-8.9.2/src/daemon.c	Tue Dec 29 09:42:20 1998
***************
*** 15,23 ****
  
  #ifndef lint
  #ifdef DAEMON
! static char sccsid[] = "@(#)daemon.c	8.220 (Berkeley) 6/24/98 (with daemon mode)";
  #else
! static char sccsid[] = "@(#)daemon.c	8.220 (Berkeley) 6/24/98 (without daemon mode)";
  #endif
  #endif /* not lint */
  
--- 15,23 ----
  
  #ifndef lint
  #ifdef DAEMON
! static char sccsid[] = "@(#)daemon.c	8.234 (Berkeley) 12/17/1998 (with daemon mode)";
  #else
! static char sccsid[] = "@(#)daemon.c	8.234 (Berkeley) 12/17/1998 (without daemon mode)";
  #endif
  #endif /* not lint */
  
***************
*** 103,117 ****
  	ENVELOPE *e;
  {
  	int t;
! 	bool refusingconnections = TRUE;
  	FILE *pidf;
  	int socksize;
  	u_short port;
  #if XDEBUG
  	bool j_has_dot;
  #endif
  	extern void reapchild __P((int));
  	extern int opendaemonsocket __P((bool));
  
  	/*
  	**  Set up the address for the mailer.
--- 103,124 ----
  	ENVELOPE *e;
  {
  	int t;
! 	time_t refuse_connections_until = 0;
! 	bool firsttime = TRUE;
  	FILE *pidf;
+ 	int sff;
  	int socksize;
  	u_short port;
  #if XDEBUG
  	bool j_has_dot;
  #endif
+ 	char status[MAXLINE];
  	extern void reapchild __P((int));
+ #ifdef NETUNIX
+ 	extern int ControlSocket;
+ #endif
  	extern int opendaemonsocket __P((bool));
+ 	extern int opencontrolsocket __P((void));
  
  	/*
  	**  Set up the address for the mailer.
***************
*** 169,179 ****
  	/* get a socket for the SMTP connection */
  	socksize = opendaemonsocket(TRUE);
  
  	(void) setsignal(SIGCHLD, reapchild);
  
  	/* write the pid to the log file for posterity */
! 	pidf = safefopen(PidFile, O_WRONLY|O_TRUNC, 0644,
! 			 SFF_NOLINK|SFF_ROOTOK|SFF_REGONLY|SFF_CREAT);
  	if (pidf == NULL)
  	{
  		sm_syslog(LOG_ERR, NOQID, "unable to write %s", PidFile);
--- 176,193 ----
  	/* get a socket for the SMTP connection */
  	socksize = opendaemonsocket(TRUE);
  
+ 	if (opencontrolsocket() < 0)
+ 		sm_syslog(LOG_WARNING, NOQID,
+ 			  "daemon could not open control socket: %s",
+ 			  errstring(errno));
+ 
  	(void) setsignal(SIGCHLD, reapchild);
  
  	/* write the pid to the log file for posterity */
! 	sff = SFF_NOLINK|SFF_ROOTOK|SFF_REGONLY|SFF_CREAT;
! 	if (TrustedUid != 0 && RealUid == TrustedUid)
! 		sff |= SFF_OPENASROOT;
! 	pidf = safefopen(PidFile, O_WRONLY|O_TRUNC, 0644, sff);
  	if (pidf == NULL)
  	{
  		sm_syslog(LOG_ERR, NOQID, "unable to write %s", PidFile);
***************
*** 201,206 ****
--- 215,223 ----
  	}
  #endif
  
+ 	/* Add parent process as first item */
+ 	proc_list_add(getpid(), "Sendmail daemon");
+ 
  	if (tTd(15, 1))
  		printf("getrequests: %d\n", DaemonSocket);
  
***************
*** 208,237 ****
  	{
  		register pid_t pid;
  		auto SOCKADDR_LEN_T lotherend;
  		int savederrno;
  		int pipefd[2];
  		extern bool refuseconnections __P((int));
  
  		/* see if we are rejecting connections */
  		(void) blocksignal(SIGALRM);
! 		if (refuseconnections(ntohs(port)))
  		{
! 			if (DaemonSocket >= 0)
  			{
! 				/* close socket so peer will fail quickly */
! 				(void) close(DaemonSocket);
! 				DaemonSocket = -1;
! 			}
! 			refusingconnections = TRUE;
! 			sleep(15);
! 			continue;
! 		}
  
! 		/* arrange to (re)open the socket if necessary */
! 		if (refusingconnections)
! 		{
! 			(void) opendaemonsocket(FALSE);
! 			refusingconnections = FALSE;
  		}
  
  #if XDEBUG
--- 225,258 ----
  	{
  		register pid_t pid;
  		auto SOCKADDR_LEN_T lotherend;
+ 		bool timedout = FALSE;
+ 		bool control = FALSE;
  		int savederrno;
  		int pipefd[2];
  		extern bool refuseconnections __P((int));
  
  		/* see if we are rejecting connections */
  		(void) blocksignal(SIGALRM);
! 		if (curtime() >= refuse_connections_until)
  		{
! 			if (refuseconnections(ntohs(port)))
  			{
! 				if (DaemonSocket >= 0)
! 				{
! 				       /* close socket so peer fails quickly */
! 				       (void) close(DaemonSocket);
! 				       DaemonSocket = -1;
! 				}
  
! 				/* refuse connections for next 15 seconds */
! 				refuse_connections_until = curtime() + 15;
! 			}
! 			else if (DaemonSocket < 0 || firsttime)
! 			{
! 			      /* arrange to (re)open the socket if needed */
! 			      (void) opendaemonsocket(FALSE);
! 			      firsttime = FALSE;
! 			}
  		}
  
  #if XDEBUG
***************
*** 258,266 ****
  		}
  #endif
  
- 		/* wait for a connection */
- 		setproctitle("accepting connections on port %d",
- 			     ntohs(port));
  #if 0
  		/*
  		**  Andrew Sun <asun@ieps-sun.ml.com> claims that this will
--- 279,284 ----
***************
*** 268,301 ****
  		**  so is it worth doing this?
  		*/
  
! 		if (SetNonBlocking(DaemonSocket, FALSE) < 0)
  			log an error here;
  #endif
  		(void) releasesignal(SIGALRM);
  		for (;;)
  		{
  			fd_set readfds;
  			struct timeval timeout;
  
  			FD_ZERO(&readfds);
! 			FD_SET(DaemonSocket, &readfds);
! 			timeout.tv_sec = 60;
  			timeout.tv_usec = 0;
  
! 			t = select(DaemonSocket + 1, FDSET_CAST &readfds,
! 				   NULL, NULL, &timeout);
  			if (DoQueueRun)
  				(void) runqueue(TRUE, FALSE);
! 			if (t <= 0 || !FD_ISSET(DaemonSocket, &readfds))
! 				continue;
  
  			errno = 0;
! 			lotherend = socksize;
! 			t = accept(DaemonSocket,
! 			    (struct sockaddr *)&RealHostAddr, &lotherend);
  			if (t >= 0 || errno != EINTR)
  				break;
  		}
  		savederrno = errno;
  		(void) blocksignal(SIGALRM);
  		if (t < 0)
--- 286,382 ----
  		**  so is it worth doing this?
  		*/
  
! 		if (DaemonSocket >= 0 &&
! 		    SetNonBlocking(DaemonSocket, FALSE) < 0)
  			log an error here;
  #endif
  		(void) releasesignal(SIGALRM);
  		for (;;)
  		{
+ 			int highest = -1;
  			fd_set readfds;
  			struct timeval timeout;
  
  			FD_ZERO(&readfds);
! 
! 			/* wait for a connection */
! 			if (DaemonSocket >= 0)
! 			{
! 				sm_setproctitle(TRUE,
! 						"accepting connections on port %d",
! 						ntohs(port));
! 				if (DaemonSocket > highest)
! 					highest = DaemonSocket;
! 				FD_SET(DaemonSocket, &readfds);
! 			}
! #ifdef NETUNIX
! 			if (ControlSocket >= 0)
! 			{
! 				if (ControlSocket > highest)
! 					highest = ControlSocket;
! 				FD_SET(ControlSocket, &readfds);
! 			}
! #endif
! 			if (DaemonSocket >= 0)
! 				timeout.tv_sec = 60;
! 			else
! 				timeout.tv_sec = 5;
  			timeout.tv_usec = 0;
  
! 			t = select(highest + 1, FDSET_CAST &readfds,
! 			   	   NULL, NULL, &timeout);
! 
  			if (DoQueueRun)
  				(void) runqueue(TRUE, FALSE);
! 			if (t <= 0)
! 			{
! 				timedout = TRUE;
! 				break;
! 			}
  
+ 			control = FALSE;
  			errno = 0;
! 			if (DaemonSocket >= 0 &&
! 			    FD_ISSET(DaemonSocket, &readfds))
! 			{
! 				lotherend = socksize;
! 				t = accept(DaemonSocket,
! 					   (struct sockaddr *)&RealHostAddr,
! 					   &lotherend);
! 			}
! #ifdef NETUNIX
! 			else if (ControlSocket >= 0 &&
! 				 FD_ISSET(ControlSocket, &readfds))
! 			{
! 				struct sockaddr_un sa_un;
! 
! 				lotherend = sizeof sa_un;
! 				t = accept(ControlSocket,
! 					   (struct sockaddr *)&sa_un,
! 					   &lotherend);
! 				control = TRUE;
! 			}
! #endif
  			if (t >= 0 || errno != EINTR)
  				break;
  		}
+ 		if (timedout)
+ 		{
+ 			timedout = FALSE;
+ 			continue;
+ 		}
+ 		if (control)
+ 		{
+ 			if (t >= 0)
+ 			{
+ 				extern void control_command __P((int, ENVELOPE *));
+ 
+ 				control_command(t, e);
+ 			}
+ 			else
+ 				syserr("getrequests: control accept");
+ 			continue;
+ 		}
  		savederrno = errno;
  		(void) blocksignal(SIGALRM);
  		if (t < 0)
***************
*** 306,313 ****
  			/* arrange to re-open the socket next time around */
  			(void) close(DaemonSocket);
  			DaemonSocket = -1;
- 			refusingconnections = TRUE;
- 			sleep(5);
  			continue;
  		}
  
--- 387,392 ----
***************
*** 360,371 ****
  			(void) setsignal(SIGCHLD, SIG_DFL);
  			(void) setsignal(SIGHUP, intsig);
  			(void) close(DaemonSocket);
  			proc_list_clear();
  
  			/* don't schedule queue runs if we are told to ETRN */
  			QueueIntvl = 0;
  
! 			setproctitle("startup with %s",
  				anynet_ntoa(&RealHostAddr));
  
  			if (pipefd[0] != -1)
--- 439,454 ----
  			(void) setsignal(SIGCHLD, SIG_DFL);
  			(void) setsignal(SIGHUP, intsig);
  			(void) close(DaemonSocket);
+ 			clrcontrol();
  			proc_list_clear();
  
+ 			/* Add parent process as first child item */
+ 			proc_list_add(getpid(), "daemon child");
+ 
  			/* don't schedule queue runs if we are told to ETRN */
  			QueueIntvl = 0;
  
! 			sm_setproctitle(TRUE, "startup with %s",
  				anynet_ntoa(&RealHostAddr));
  
  			if (pipefd[0] != -1)
***************
*** 395,430 ****
  			if (strlen(p) > (SIZE_T) MAXNAME)
  				p[MAXNAME] = '\0';
  			RealHostName = newstr(p);
! 			setproctitle("startup with %s", p);
  
  			if ((inchannel = fdopen(t, "r")) == NULL ||
  			    (t = dup(t)) < 0 ||
  			    (outchannel = fdopen(t, "w")) == NULL)
  			{
  				syserr("cannot open SMTP server channel, fd=%d", t);
! 				exit(EX_OK);
  			}
  
  			InChannel = inchannel;
  			OutChannel = outchannel;
  			DisConnected = FALSE;
  
- 			/* open maps for check_relay ruleset */
- 			initmaps(FALSE, e);
- 
  #ifdef XLA
  			if (!xla_host_ok(RealHostName))
  			{
  				message("421 Too many SMTP sessions for this host");
! 				exit(EX_OK);
  			}
  #endif
- 
  			break;
  		}
  
  		/* parent -- keep track of children */
! 		proc_list_add(pid);
  		(void) releasesignal(SIGCHLD);
  
  		/* close the read end of the synchronization pipe */
--- 478,511 ----
  			if (strlen(p) > (SIZE_T) MAXNAME)
  				p[MAXNAME] = '\0';
  			RealHostName = newstr(p);
! 			sm_setproctitle(TRUE, "startup with %s", p);
  
  			if ((inchannel = fdopen(t, "r")) == NULL ||
  			    (t = dup(t)) < 0 ||
  			    (outchannel = fdopen(t, "w")) == NULL)
  			{
  				syserr("cannot open SMTP server channel, fd=%d", t);
! 				finis(FALSE, EX_OK);
  			}
  
  			InChannel = inchannel;
  			OutChannel = outchannel;
  			DisConnected = FALSE;
  
  #ifdef XLA
  			if (!xla_host_ok(RealHostName))
  			{
  				message("421 Too many SMTP sessions for this host");
! 				finis(FALSE, EX_OK);
  			}
  #endif
  			break;
  		}
  
  		/* parent -- keep track of children */
! 		snprintf(status, MAXLINE, "SMTP server child for %s",
! 			 anynet_ntoa(&RealHostAddr));
! 		proc_list_add(pid, status);
  		(void) releasesignal(SIGCHLD);
  
  		/* close the read end of the synchronization pipe */
***************
*** 552,558 ****
  		return socksize;
  	} while (ntries++ < MAXOPENTRIES && transienterror(saveerrno));
  	syserr("!opendaemonsocket: server SMTP socket wedged: exiting");
! 	finis();
  	return -1;  /* avoid compiler warning on IRIX */
  }
  /*
--- 633,639 ----
  		return socksize;
  	} while (ntries++ < MAXOPENTRIES && transienterror(saveerrno));
  	syserr("!opendaemonsocket: server SMTP socket wedged: exiting");
! 	/*NOTREACHED*/
  	return -1;  /* avoid compiler warning on IRIX */
  }
  /*
***************
*** 1280,1286 ****
  		/* translate that to a host name */
  		RealHostName = newstr(hostnamebyanyaddr(&RealHostAddr));
  		if (strlen(RealHostName) > MAXNAME)
! 			RealHostName[MAXNAME - 1] = '\0';
  	}
  
  	/* cross check RealHostName with forward DNS lookup */
--- 1361,1367 ----
  		/* translate that to a host name */
  		RealHostName = newstr(hostnamebyanyaddr(&RealHostAddr));
  		if (strlen(RealHostName) > MAXNAME)
! 			RealHostName[MAXNAME] = '\0';
  	}
  
  	/* cross check RealHostName with forward DNS lookup */
***************
*** 1288,1295 ****
  	    RealHostName[0] == '[')
  	{
  		/*
! 		** address is not a socket or have an
! 		** IP address with no forward lookup
  		*/
  		*may_be_forged = FALSE;
  	}
--- 1369,1376 ----
  	    RealHostName[0] == '[')
  	{
  		/*
! 		**  address is not a socket or have an
! 		**  IP address with no forward lookup
  		*/
  		*may_be_forged = FALSE;
  	}
diff -cr sendmail-8.9.1/src/deliver.c sendmail-8.9.2/src/deliver.c
*** sendmail-8.9.1/src/deliver.c	Tue Jun 30 23:05:35 1998
--- sendmail-8.9.2/src/deliver.c	Tue Dec 29 09:42:23 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)deliver.c	8.353 (Berkeley) 6/30/98";
  #endif /* not lint */
  
  #include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)deliver.c	8.366 (Berkeley) 12/18/1998";
  #endif /* not lint */
  
  #include "sendmail.h"
***************
*** 360,366 ****
  			if (mode != SM_VERIFY && bitset(EF_HAS_DF, e->e_flags))
  				dup_queue_file(e, ee, 'd');
  			openxscript(ee);
! 			if (LogLevel > 4)
  				sm_syslog(LOG_INFO, ee->e_id,
  					"clone %s, owner=%s",
  					e->e_id, owner);
--- 360,366 ----
  			if (mode != SM_VERIFY && bitset(EF_HAS_DF, e->e_flags))
  				dup_queue_file(e, ee, 'd');
  			openxscript(ee);
! 			if (mode != SM_VERIFY && LogLevel > 4)
  				sm_syslog(LOG_INFO, ee->e_id,
  					"clone %s, owner=%s",
  					e->e_id, owner);
***************
*** 552,558 ****
  # else
  			e->e_id = NULL;
  # endif /* HASFLOCK */
! 			finis();
  		}
  
  		/* be sure to give error messages in child */
--- 552,558 ----
  # else
  			e->e_id = NULL;
  # endif /* HASFLOCK */
! 			finis(TRUE, ExitStat);
  		}
  
  		/* be sure to give error messages in child */
***************
*** 570,575 ****
--- 570,584 ----
  
  		mci_flush(FALSE, NULL);
  
+ 		/*
+ 		**  Since the delivery may happen in a child and the parent
+ 		**  does not wait, the parent may close the maps thereby
+ 		**  removing any shared memory used by the map.  Therefore,
+ 		**  open a copy of the maps for the delivery process.
+ 		*/
+ 
+ 		initmaps(FALSE, e);
+ 
  # if HASFLOCK
  		break;
  # else
***************
*** 586,592 ****
  			ee->e_sibling = sibling;
  		}
  		(void) dowork(e->e_id, FALSE, FALSE, e);
! 		finis();
  # endif /* !HASFLOCK */
  	}
  
--- 595,601 ----
  			ee->e_sibling = sibling;
  		}
  		(void) dowork(e->e_id, FALSE, FALSE, e);
! 		finis(TRUE, ExitStat);
  # endif /* !HASFLOCK */
  	}
  
***************
*** 604,610 ****
  
  	Verbose = oldverbose;
  	if (mode == SM_FORK)
! 		finis();
  }
  
  void
--- 613,619 ----
  
  	Verbose = oldverbose;
  	if (mode == SM_FORK)
! 		finis(TRUE, ExitStat);
  }
  
  void
***************
*** 1091,1098 ****
  				e->e_from.q_paddr, to->q_paddr, e);
  		if (rcode == EX_OK)
  		{
! 			/* do in-code checking */
! 			rcode = checkcompat(to, e);
  		}
  		if (rcode != EX_OK)
  		{
--- 1100,1108 ----
  				e->e_from.q_paddr, to->q_paddr, e);
  		if (rcode == EX_OK)
  		{
! 			/* do in-code checking if not discarding */
! 			if (!bitset(EF_DISCARD, e->e_flags))
! 				rcode = checkcompat(to, e);
  		}
  		if (rcode != EX_OK)
  		{
***************
*** 1100,1105 ****
--- 1110,1131 ----
  			giveresponse(rcode, m, NULL, ctladdr, xstart, e);
  			continue;
  		}
+ 		if (bitset(EF_DISCARD, e->e_flags))
+ 		{
+ 			if (tTd(10, 5))
+ 			{
+ 				printf("deliver: discarding recipient ");
+ 				printaddr(to, FALSE);
+ 			}
+ 
+ 			/*
+ 			**  Remove discard bit to prevent discard of
+ 			**  future recipients
+ 			*/
+ 			e->e_flags &= ~EF_DISCARD;
+ 
+ 			continue;
+ 		}
  
  		/*
  		**  Strip quote bits from names if the mailer is dumb
***************
*** 1409,1415 ****
  			}
  
  			/* try the connection */
! 			setproctitle("%s %s: %s", e->e_id, hostbuf, "user open");
  			if (port == 0)
  				message("Connecting to %s via %s...",
  					hostbuf, m->m_name);
--- 1435,1441 ----
  			}
  
  			/* try the connection */
! 			sm_setproctitle(TRUE, "%s %s: %s", e->e_id, hostbuf, "user open");
  			if (port == 0)
  				message("Connecting to %s via %s...",
  					hostbuf, m->m_name);
***************
*** 2096,2102 ****
  				rcode = smtpgetstat(m, mci, e);
  			if (rcode == EX_OK)
  			{
! 				if (strlen(to->q_paddr) + strlen(tobuf) + 2 >= sizeof tobuf)
  				{
  					syserr("LMTP tobuf overflow");
  				}
--- 2122,2128 ----
  				rcode = smtpgetstat(m, mci, e);
  			if (rcode == EX_OK)
  			{
! 				if (strlen(to->q_paddr) + strlen(tobuf) + 2 > sizeof tobuf)
  				{
  					syserr("LMTP tobuf overflow");
  				}
***************
*** 2827,2833 ****
  			char hname[MAXNAME];
  
  		    	/*
! 			** If we can construct a UUCP path, do so
  			*/
  
  			at = strrchr(buf, '@');
--- 2853,2859 ----
  			char hname[MAXNAME];
  
  		    	/*
! 			**  If we can construct a UUCP path, do so
  			*/
  
  			at = strrchr(buf, '@');
***************
*** 2882,2887 ****
--- 2908,2914 ----
  	char *separator;
  {
  	char buf[MAXLINE];
+ 	char *boundaries[MAXMIMENESTING + 1];
  
  	/*
  	**  Output the body of the message
***************
*** 2923,2930 ****
  #if MIME8TO7
  	if (bitset(MCIF_CVT8TO7, mci->mci_flags))
  	{
- 		char *boundaries[MAXMIMENESTING + 1];
- 
  		/*
  		**  Do 8 to 7 bit MIME conversion.
  		*/
--- 2950,2955 ----
***************
*** 2952,2957 ****
--- 2977,2989 ----
  		mime7to8(mci, e->e_header, e);
  	}
  # endif
+ 	else if (MaxMimeHeaderLength > 0 || MaxMimeFieldLength > 0)
+ 	{
+ 		/* Use mime8to7 to check multipart for MIME header overflows */
+ 		boundaries[0] = NULL;
+ 		mci->mci_flags |= MCIF_INHEADER;
+ 		mime8to7(mci, e->e_header, e, boundaries, M87F_OUTER|M87F_NO8TO7);
+ 	}
  	else
  #endif
  	{
***************
*** 2966,2972 ****
  		size_t eol_len;
  		char peekbuf[10];
  
- 		/* we can pass it through unmodified */
  		if (bitset(MCIF_INHEADER, mci->mci_flags))
  		{
  			putline("", mci);
--- 2998,3003 ----
***************
*** 3292,3297 ****
--- 3323,3329 ----
  		/* child -- actually write to file */
  		struct stat stb;
  		MCI mcibuf;
+ 		int err;
  		volatile int oflags = O_WRONLY|O_APPEND;
  
  		if (e->e_lockfp != NULL)
***************
*** 3315,3321 ****
  			ev = NULL;
  
  #ifdef HASLSTAT
! 		if (lstat(filename, &stb) < 0)
  #else
  		if (stat(filename, &stb) < 0)
  #endif
--- 3347,3357 ----
  			ev = NULL;
  
  #ifdef HASLSTAT
! 		if (bitset(DBS_FILEDELIVERYTOSYMLINK, DontBlameSendmail))
! 			err = stat(filename, &stb);
! 		else
! 			err = lstat(filename, &stb);
! 		if (err < 0)
  #else
  		if (stat(filename, &stb) < 0)
  #endif
diff -cr sendmail-8.9.1/src/domain.c sendmail-8.9.2/src/domain.c
*** sendmail-8.9.1/src/domain.c	Mon Jun 15 21:08:45 1998
--- sendmail-8.9.2/src/domain.c	Tue Dec 29 09:42:17 1998
***************
*** 14,22 ****
  
  #ifndef lint
  #if NAMED_BIND
! static char sccsid[] = "@(#)domain.c	8.77 (Berkeley) 6/4/98 (with name server)";
  #else
! static char sccsid[] = "@(#)domain.c	8.77 (Berkeley) 6/4/98 (without name server)";
  #endif
  #endif /* not lint */
  
--- 14,22 ----
  
  #ifndef lint
  #if NAMED_BIND
! static char sccsid[] = "@(#)domain.c	8.80 (Berkeley) 12/17/1998 (with name server)";
  #else
! static char sccsid[] = "@(#)domain.c	8.80 (Berkeley) 12/17/1998 (without name server)";
  #endif
  #endif /* not lint */
  
***************
*** 451,457 ****
  	int i, len = 0;
  	char *p;
  	char *mxhosts[MAXMXHOSTS + 1];
! 	char buf[MXHOSTBUFSIZE + 1];
  
  	_res.options &= ~(RES_DNSRCH|RES_DEFNAMES);
  	nmx = getmxrr(name, mxhosts, FALSE, &rcode);
--- 451,457 ----
  	int i, len = 0;
  	char *p;
  	char *mxhosts[MAXMXHOSTS + 1];
! 	char buf[PSBUFSIZE / 2];
  
  	_res.options &= ~(RES_DNSRCH|RES_DEFNAMES);
  	nmx = getmxrr(name, mxhosts, FALSE, &rcode);
***************
*** 464,471 ****
  		return map_rewrite(map, mxhosts[0], strlen(mxhosts[0]), av);
  
  	/*
! 	** We were given a -z flag (return all MXs) and there are multiple
! 	** ones.  We need to build them all into a list.
  	*/
  	p = buf;
  	for (i = 0; i < nmx; i++)
--- 464,471 ----
  		return map_rewrite(map, mxhosts[0], strlen(mxhosts[0]), av);
  
  	/*
! 	**  We were given a -z flag (return all MXs) and there are multiple
! 	**  ones.  We need to build them all into a list.
  	*/
  	p = buf;
  	for (i = 0; i < nmx; i++)
***************
*** 663,669 ****
  					qtype = T_A;
  					continue;
  				}
! 				else if (qtype == T_A && !gotmx && trymx)
  				{
  					qtype = T_MX;
  					continue;
--- 663,669 ----
  					qtype = T_A;
  					continue;
  				}
! 				else if (qtype == T_A && !gotmx && (trymx || **dp == '\0'))
  				{
  					qtype = T_MX;
  					continue;
***************
*** 824,830 ****
  
  		if (qtype == T_ANY)
  			qtype = T_A;
! 		else if (qtype == T_A && !gotmx && trymx)
  			qtype = T_MX;
  		else
  		{
--- 824,830 ----
  
  		if (qtype == T_ANY)
  			qtype = T_A;
! 		else if (qtype == T_A && !gotmx && (trymx || **dp == '\0'))
  			qtype = T_MX;
  		else
  		{
diff -cr sendmail-8.9.1/src/envelope.c sendmail-8.9.2/src/envelope.c
*** sendmail-8.9.1/src/envelope.c	Thu Jun  4 14:51:30 1998
--- sendmail-8.9.2/src/envelope.c	Tue Dec 29 09:42:16 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)envelope.c	8.117 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  #include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)envelope.c	8.121 (Berkeley) 12/18/1998";
  #endif /* not lint */
  
  #include "sendmail.h"
***************
*** 827,833 ****
  			sm_syslog(LOG_NOTICE, e->e_id,
  				"cannot prescan from (%s)",
  				shortenstring(from, MAXSHORTSTR));
! 		finis();
  	}
  	(void) rewrite(pvp, 3, 0, e);
  	(void) rewrite(pvp, 1, 0, e);
--- 827,833 ----
  			sm_syslog(LOG_NOTICE, e->e_id,
  				"cannot prescan from (%s)",
  				shortenstring(from, MAXSHORTSTR));
! 		finis(TRUE, ExitStat);
  	}
  	(void) rewrite(pvp, 3, 0, e);
  	(void) rewrite(pvp, 1, 0, e);
diff -cr sendmail-8.9.1/src/err.c sendmail-8.9.2/src/err.c
*** sendmail-8.9.1/src/err.c	Thu Jun  4 14:32:01 1998
--- sendmail-8.9.2/src/err.c	Tue Dec 29 09:42:18 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)err.c	8.74 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)err.c	8.74 (Berkeley) 6/4/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/headers.c sendmail-8.9.2/src/headers.c
*** sendmail-8.9.1/src/headers.c	Thu Jun  4 11:12:45 1998
--- sendmail-8.9.2/src/headers.c	Tue Dec 29 09:42:15 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)headers.c	8.127 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  # include <errno.h>
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)headers.c	8.134 (Berkeley) 11/29/1998";
  #endif /* not lint */
  
  # include <errno.h>
***************
*** 521,528 ****
  
  #if 0
  			/*
! 			** Change functionality so a fatal error on an
! 			** address doesn't affect the entire envelope.
  			*/
  			 
  			/* delete fatal errors generated by this address */
--- 521,528 ----
  
  #if 0
  			/*
! 			**  Change functionality so a fatal error on an
! 			**  address doesn't affect the entire envelope.
  			*/
  			 
  			/* delete fatal errors generated by this address */
***************
*** 1198,1203 ****
--- 1198,1256 ----
  			xputs(p);
  		}
  
+ #if _FFR_MAX_MIME_HEADER_LENGTH
+ 		/* heuristic shortening of MIME fields to avoid MUA overflows */
+ 		if (MaxMimeFieldLength > 0 &&
+ 		    wordinclass(h->h_field,
+ 				macid("{checkMIMEFieldHeaders}", NULL)))
+ 		{
+ 			extern bool fix_mime_header __P((char *));
+ 
+ 			if (fix_mime_header(h->h_value))
+ 			{
+ 				sm_syslog(LOG_ALERT, e->e_id,
+ 				  	"Truncated MIME %s header due to field size (possible attack)",
+ 				  	h->h_field);
+ 				if (tTd(34, 11))
+ 				  	printf("  truncated MIME %s header due to field size (possible attack)\n",
+ 					  	h->h_field);
+ 			}
+ 		}
+ 
+ 		if (MaxMimeHeaderLength > 0 &&
+ 		    wordinclass(h->h_field,
+ 				macid("{checkMIMETextHeaders}", NULL)))
+ 		{
+ 			if (strlen(h->h_value) > MaxMimeHeaderLength)
+ 			{
+ 				h->h_value[MaxMimeHeaderLength - 1] = '\0';
+ 				sm_syslog(LOG_ALERT, e->e_id,
+ 				  	"Truncated long MIME %s header (possible attack)",
+ 				  	h->h_field);
+ 				if (tTd(34, 11))
+ 				  	printf("  truncated long MIME %s header (possible attack)\n",
+ 					  	h->h_field);
+ 			}
+ 		}
+ 
+ 		if (MaxMimeHeaderLength > 0 &&
+ 		    wordinclass(h->h_field,
+ 				macid("{checkMIMEHeaders}", NULL)))
+ 		{
+ 			extern bool shorten_rfc822_string __P((char *, int));
+ 
+ 			if (shorten_rfc822_string(h->h_value, MaxMimeHeaderLength))
+ 			{
+ 				sm_syslog(LOG_ALERT, e->e_id,
+ 				  	"Truncated long MIME %s header (possible attack)",
+ 				  	h->h_field);
+ 				if (tTd(34, 11))
+ 				  	printf("  truncated long MIME %s header (possible attack)\n",
+ 					  	h->h_field);
+ 			}
+ 		}
+ #endif
+ 
  		/* suppress Content-Transfer-Encoding: if we are MIMEing */
  		if (bitset(H_CTE, h->h_flags) &&
  		    bitset(MCIF_CVT8TO7|MCIF_CVT7TO8|MCIF_INMIME, mci->mci_flags))
***************
*** 1567,1570 ****
--- 1620,1689 ----
  	*tail = NULL;
  	
  	return ret;
+ }
+ /*
+ **  FIX_MIME_HEADER -- possibly truncate/rebalance parameters in a MIME header
+ **
+ **	Run through all of the parameters of a MIME header and
+ **	possibly truncate and rebalance the parameter according
+ **	to MaxMimeFieldLength.
+ **
+ **	Parameters:
+ **		string -- the full header
+ **
+ **	Returns:
+ **		TRUE if the header was modified, FALSE otherwise
+ **
+ **	Side Effects:
+ **		string modified in place
+ */
+ 
+ bool
+ fix_mime_header(string)
+ 	char *string;
+ {
+ 	bool modified = FALSE;
+ 	char *begin = string;
+ 	char *end;
+ 	extern char *find_character __P((char *, char));
+ 	extern bool shorten_rfc822_string __P((char *, int));
+ 	
+ 	if (string == NULL || *string == '\0')
+ 		return FALSE;
+ 	
+ 	/* Split on each ';' */
+ 	while ((end = find_character(begin, ';')) != NULL)
+ 	{
+ 		char save = *end;
+ 		char *bp;
+ 		
+ 		*end = '\0';
+ 		
+ 		/* Shorten individual parameter */
+ 		if (shorten_rfc822_string(begin, MaxMimeFieldLength))
+ 			modified = TRUE;
+ 		
+ 		/* Collapse the possibly shortened string with rest */
+ 		bp = begin + strlen(begin);
+ 		if (bp != end)
+ 		{
+ 			char *ep = end;
+ 			
+ 			*end = save;
+ 			end = bp;
+ 			
+ 			/* copy character by character due to overlap */
+ 			while (*ep != '\0')
+ 				*bp++ = *ep++;
+ 			*bp = '\0';
+ 		}
+ 		else
+ 			*end = save;
+ 		if (*end == '\0')
+ 			break;
+ 		
+ 		/* Move past ';' */
+ 		begin = end + 1;
+ 	}
+ 	return modified;
  }
diff -cr sendmail-8.9.1/src/ldap_map.h sendmail-8.9.2/src/ldap_map.h
*** sendmail-8.9.1/src/ldap_map.h	Tue May 19 16:36:11 1998
--- sendmail-8.9.2/src/ldap_map.h	Tue Dec 29 09:42:27 1998
***************
*** 14,20 ****
  **	Please go to him for support -- since I (Eric) don't run LDAP, I
  **	can't help you at all.
  **
! **	@(#)ldap_map.h	8.9 (Berkeley) 5/19/98
  */
  
  #ifndef _LDAP_MAP_H
--- 14,20 ----
  **	Please go to him for support -- since I (Eric) don't run LDAP, I
  **	can't help you at all.
  **
! **	@(#)ldap_map.h	8.10 (Berkeley) 9/14/1998
  */
  
  #ifndef _LDAP_MAP_H
***************
*** 61,67 ****
  #define DEFAULT_LDAP_MAP_DEREF		LDAP_DEREF_NEVER
  #define DEFAULT_LDAP_MAP_SIZELIMIT	0
  #define DEFAULT_LDAP_MAP_ATTRSONLY	0
! #define LDAP_MAP_MAX_FILTER		256
  #ifdef LDAP_REFERRALS
  # define DEFAULT_LDAP_MAP_LDAP_OPTIONS	LDAP_OPT_REFERRALS
  #else /* LDAP_REFERRALS */
--- 61,67 ----
  #define DEFAULT_LDAP_MAP_DEREF		LDAP_DEREF_NEVER
  #define DEFAULT_LDAP_MAP_SIZELIMIT	0
  #define DEFAULT_LDAP_MAP_ATTRSONLY	0
! #define LDAP_MAP_MAX_FILTER		1024
  #ifdef LDAP_REFERRALS
  # define DEFAULT_LDAP_MAP_LDAP_OPTIONS	LDAP_OPT_REFERRALS
  #else /* LDAP_REFERRALS */
diff -cr sendmail-8.9.1/src/macro.c sendmail-8.9.2/src/macro.c
*** sendmail-8.9.1/src/macro.c	Tue May 19 16:36:03 1998
--- sendmail-8.9.2/src/macro.c	Tue Dec 29 09:42:15 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)macro.c	8.25 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)macro.c	8.26 (Berkeley) 11/8/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 333,339 ****
  {
  	int mid;
  	register char *bp;
! 	char mbuf[21];
  
  	if (tTd(35, 14))
  	{
--- 333,339 ----
  {
  	int mid;
  	register char *bp;
! 	char mbuf[MAXMACNAMELEN + 1];
  
  	if (tTd(35, 14))
  	{
***************
*** 361,367 ****
  		return *p;
  	}
  	bp = mbuf;
! 	while (*++p != '\0' && *p != '}' && bp < &mbuf[sizeof mbuf])
  	{
  		if (isascii(*p) && (isalnum(*p) || *p == '_'))
  			*bp++ = *p;
--- 361,367 ----
  		return *p;
  	}
  	bp = mbuf;
! 	while (*++p != '\0' && *p != '}' && bp < &mbuf[sizeof mbuf - 1])
  	{
  		if (isascii(*p) && (isalnum(*p) || *p == '_'))
  			*bp++ = *p;
diff -cr sendmail-8.9.1/src/mailq.1 sendmail-8.9.2/src/mailq.1
*** sendmail-8.9.1/src/mailq.1	Tue May 19 16:36:10 1998
--- sendmail-8.9.2/src/mailq.1	Tue Dec 29 09:42:27 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)mailq.1	8.10 (Berkeley) 5/19/98
  .\"
  .Dd May 19, 1998
  .Dt MAILQ 1
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)mailq.1	8.10 (Berkeley) 5/19/1998
  .\"
  .Dd May 19, 1998
  .Dt MAILQ 1
diff -cr sendmail-8.9.1/src/mailstats.h sendmail-8.9.2/src/mailstats.h
*** sendmail-8.9.1/src/mailstats.h	Tue May 19 16:36:05 1998
--- sendmail-8.9.2/src/mailstats.h	Tue Dec 29 09:42:18 1998
***************
*** 9,15 ****
   * the sendmail distribution.
   *
   *
!  *	@(#)mailstats.h	8.8 (Berkeley) 5/19/98
   */
  
  #define STAT_VERSION	2
--- 9,15 ----
   * the sendmail distribution.
   *
   *
!  *	@(#)mailstats.h	8.8 (Berkeley) 5/19/1998
   */
  
  #define STAT_VERSION	2
diff -cr sendmail-8.9.1/src/main.c sendmail-8.9.2/src/main.c
*** sendmail-8.9.1/src/main.c	Mon Jun  8 14:57:04 1998
--- sendmail-8.9.2/src/main.c	Tue Dec 29 09:42:16 1998
***************
*** 19,25 ****
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)main.c	8.302 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  #define	_DEFINE
--- 19,25 ----
  #endif /* not lint */
  
  #ifndef lint
! static char sccsid[] = "@(#)main.c	8.322 (Berkeley) 12/18/1998";
  #endif /* not lint */
  
  #define	_DEFINE
***************
*** 129,134 ****
--- 129,135 ----
  	extern char *getcfname __P((void));
  	extern SIGFUNC_DECL sigusr1 __P((int));
  	extern SIGFUNC_DECL sighup __P((int));
+ 	extern SIGFUNC_DECL quiesce __P((int));
  	extern void initmacros __P((ENVELOPE *));
  	extern void init_md __P((int, char **));
  	extern int getdtsize __P((void));
***************
*** 304,312 ****
  	if (tTd(0, 101))
  	{
  		printf("Version %s\n", Version);
! 		endpwent();
! 		setuid(RealUid);
! 		exit(EX_OK);
  	}
  
  	/*
--- 305,311 ----
  	if (tTd(0, 101))
  	{
  		printf("Version %s\n", Version);
! 		finis(FALSE, EX_OK);
  	}
  
  	/*
***************
*** 419,426 ****
  	environ = emptyenviron;
  
  	/*
! 	** restore any original TZ setting until TimeZoneSpec has been
! 	** determined - or early log messages may get bogus time stamps
  	*/
  	if ((p = getextenv("TZ")) != NULL)
  	{
--- 418,425 ----
  	environ = emptyenviron;
  
  	/*
! 	**  restore any original TZ setting until TimeZoneSpec has been
! 	**  determined - or early log messages may get bogus time stamps
  	*/
  	if ((p = getextenv("TZ")) != NULL)
  	{
***************
*** 549,555 ****
  	QueueLimitId = (QUEUE_CHAR *) NULL;
  
  	/*
! 	** Crack argv.
  	*/
  
  	av = argv;
--- 548,554 ----
  	QueueLimitId = (QUEUE_CHAR *) NULL;
  
  	/*
! 	**  Crack argv.
  	*/
  
  	av = argv;
***************
*** 835,842 ****
  # endif
  
  		  default:
! 			ExitStat = EX_USAGE;
! 			finis();
  			break;
  		}
  	}
--- 834,840 ----
  # endif
  
  		  default:
! 			finis(TRUE, EX_USAGE);
  			break;
  		}
  	}
***************
*** 971,978 ****
  	}
  
  	/* check for permissions */
! 	if ((OpMode == MD_DAEMON || OpMode == MD_FGDAEMON ||
! 	     OpMode == MD_PURGESTAT) && RealUid != 0)
  	{
  		if (LogLevel > 1)
  			sm_syslog(LOG_ALERT, NOQID,
--- 969,979 ----
  	}
  
  	/* check for permissions */
! 	if ((OpMode == MD_DAEMON ||
! 	     OpMode == MD_FGDAEMON ||
! 	     OpMode == MD_PURGESTAT) &&
! 	    RealUid != 0 &&
! 	    RealUid != TrustedUid)
  	{
  		if (LogLevel > 1)
  			sm_syslog(LOG_ALERT, NOQID,
***************
*** 981,987 ****
  				OpMode != MD_PURGESTAT ? "run daemon"
  						       : "purge host status");
  		usrerr("Permission denied");
! 		exit(EX_USAGE);
  	}
  
  	if (MeToo)
--- 982,988 ----
  				OpMode != MD_PURGESTAT ? "run daemon"
  						       : "purge host status");
  		usrerr("Permission denied");
! 		finis(FALSE, EX_USAGE);
  	}
  
  	if (MeToo)
***************
*** 1083,1088 ****
--- 1084,1100 ----
  		setoption('d', "", TRUE, FALSE, CurEnv);
  	}
  
+ #ifdef VENDOR_CODE
+ 	/* check for vendor mismatch */
+ 	if (VendorCode != VENDOR_CODE)
+ 	{
+ 		extern char *getvendor __P((int));
+ 
+ 		message("Warning: .cf file vendor code mismatch: sendmail expects vendor %s, .cf file vendor is %s",
+ 			getvendor(VENDOR_CODE), getvendor(VendorCode));
+ 	}
+ #endif
+ 	
  	/* check for out of date configuration level */
  	if (ConfigLevel < MAXCONFIGLEVEL)
  	{
***************
*** 1199,1204 ****
--- 1211,1232 ----
  	setclass('b', "application/octet-stream");
  #endif
  
+ #if _FFR_MAX_MIME_HEADER_LENGTH
+ 	/* MIME headers which have fields to check for overflow */
+ 	setclass(macid("{checkMIMEFieldHeaders}", NULL), "content-disposition");
+ 	setclass(macid("{checkMIMEFieldHeaders}", NULL), "content-type");
+ 
+ 	/* MIME headers to check for length overflow */
+ 	setclass(macid("{checkMIMETextHeaders}", NULL), "content-description");
+ 
+ 	/* MIME headers to check for overflow and rebalance */
+ 	setclass(macid("{checkMIMEHeaders}", NULL), "content-disposition");
+ 	setclass(macid("{checkMIMEHeaders}", NULL), "content-id");
+ 	setclass(macid("{checkMIMEHeaders}", NULL), "content-transfer-encoding");
+ 	setclass(macid("{checkMIMEHeaders}", NULL), "content-type");
+ 	setclass(macid("{checkMIMEHeaders}", NULL), "mime-version");
+ #endif
+ 
  	/* operate in queue directory */
  	if (QueueDir == NULL)
  	{
***************
*** 1241,1258 ****
  		{
  			/* nope, really a botch */
  			usrerr("You do not have permission to process the queue");
! 			exit (EX_NOPERM);
  		}
  	}
  # endif /* QUEUE */
  
  	/* if we've had errors so far, exit now */
  	if (ExitStat != EX_OK && OpMode != MD_TEST)
! 	{
! 		endpwent();
! 		setuid(RealUid);
! 		exit(ExitStat);
! 	}
  
  #if XDEBUG
  	checkfd012("before main() initmaps");
--- 1269,1282 ----
  		{
  			/* nope, really a botch */
  			usrerr("You do not have permission to process the queue");
! 			finis(FALSE, EX_NOPERM);
  		}
  	}
  # endif /* QUEUE */
  
  	/* if we've had errors so far, exit now */
  	if (ExitStat != EX_OK && OpMode != MD_TEST)
! 		finis(FALSE, ExitStat);
  
  #if XDEBUG
  	checkfd012("before main() initmaps");
***************
*** 1268,1298 ****
  		/* print the queue */
  #if QUEUE
  		dropenvelope(CurEnv, TRUE);
  		printqueue();
! 		endpwent();
! 		setuid(RealUid);
! 		exit(EX_OK);
  #else /* QUEUE */
  		usrerr("No queue to print");
! 		finis();
  #endif /* QUEUE */
  
  	  case MD_HOSTSTAT:
  		mci_traverse_persistent(mci_print_persistent, NULL);
! 		exit(EX_OK);
  	    	break;
  
  	  case MD_PURGESTAT:
  		mci_traverse_persistent(mci_purge_persistent, NULL);
! 		exit(EX_OK);
  	    	break;
  
  	  case MD_INITALIAS:
! 		/* initialize alias database */
  		initmaps(TRUE, CurEnv);
! 		endpwent();
! 		setuid(RealUid);
! 		exit(ExitStat);
  
  	  case MD_SMTP:
  	  case MD_DAEMON:
--- 1292,1322 ----
  		/* print the queue */
  #if QUEUE
  		dropenvelope(CurEnv, TRUE);
+ 		signal(SIGPIPE, quiesce);
  		printqueue();
! 		finis(FALSE, EX_OK);
  #else /* QUEUE */
  		usrerr("No queue to print");
! 		finis(FALSE, ExitStat);
  #endif /* QUEUE */
+ 		break;
  
  	  case MD_HOSTSTAT:
+ 		signal(SIGPIPE, quiesce);
  		mci_traverse_persistent(mci_print_persistent, NULL);
! 		finis(FALSE, EX_OK);
  	    	break;
  
  	  case MD_PURGESTAT:
  		mci_traverse_persistent(mci_purge_persistent, NULL);
! 		finis(FALSE, EX_OK);
  	    	break;
  
  	  case MD_INITALIAS:
! 		/* initialize maps */
  		initmaps(TRUE, CurEnv);
! 		finis(FALSE, ExitStat);
! 		break;
  
  	  case MD_SMTP:
  	  case MD_DAEMON:
***************
*** 1301,1311 ****
  		CurEnv->e_envid = NULL;
  		CurEnv->e_flags &= ~(EF_RET_PARAM|EF_NO_BODY_RETN);
  
! 		/* don't open alias database -- done in srvrsmtp */
  		break;
  
  	  default:
! 		/* open the alias database */
  		initmaps(FALSE, CurEnv);
  		break;
  	}
--- 1325,1335 ----
  		CurEnv->e_envid = NULL;
  		CurEnv->e_flags &= ~(EF_RET_PARAM|EF_NO_BODY_RETN);
  
! 		/* don't open maps for daemon -- done below in child */
  		break;
  
  	  default:
! 		/* open the maps */
  		initmaps(FALSE, CurEnv);
  		break;
  	}
***************
*** 1359,1365 ****
  				printf("> ");
  			(void) fflush(stdout);
  			if (fgets(buf, sizeof buf, stdin) == NULL)
! 				finis();
  			p = strchr(buf, '\n');
  			if (p != NULL)
  				*p = '\0';
--- 1383,1389 ----
  				printf("> ");
  			(void) fflush(stdout);
  			if (fgets(buf, sizeof buf, stdin) == NULL)
! 				finis(TRUE, ExitStat);
  			p = strchr(buf, '\n');
  			if (p != NULL)
  				*p = '\0';
***************
*** 1377,1383 ****
  	if (queuemode && OpMode != MD_DAEMON && QueueIntvl == 0)
  	{
  		(void) runqueue(FALSE, Verbose);
! 		finis();
  	}
  # endif /* QUEUE */
  
--- 1401,1407 ----
  	if (queuemode && OpMode != MD_DAEMON && QueueIntvl == 0)
  	{
  		(void) runqueue(FALSE, Verbose);
! 		finis(TRUE, ExitStat);
  	}
  # endif /* QUEUE */
  
***************
*** 1402,1408 ****
  			if (i < 0)
  				syserr("daemon: cannot fork");
  			if (i != 0)
! 				exit(EX_OK);
  
  			/* disconnect from our controlling tty */
  			disconnect(2, CurEnv);
--- 1426,1432 ----
  			if (i < 0)
  				syserr("daemon: cannot fork");
  			if (i != 0)
! 				finis(FALSE, EX_OK);
  
  			/* disconnect from our controlling tty */
  			disconnect(2, CurEnv);
***************
*** 1495,1500 ****
--- 1519,1527 ----
  			snprintf(pbuf, sizeof pbuf, "0");
  		define(macid("{client_port}", NULL), newstr(pbuf), &BlankEnvelope);
  
+ 		/* initialize maps now for check_relay ruleset */
+ 		initmaps(FALSE, CurEnv);
+ 
  		if (OpMode == MD_DAEMON)
  		{
  			/* validate the connection */
***************
*** 1539,1545 ****
  		/* collect body for UUCP return */
  		if (OpMode != MD_VERIFY)
  			collect(InChannel, FALSE, NULL, CurEnv);
! 		finis();
  	}
  
  	/*
--- 1566,1572 ----
  		/* collect body for UUCP return */
  		if (OpMode != MD_VERIFY)
  			collect(InChannel, FALSE, NULL, CurEnv);
! 		finis(TRUE, ExitStat);
  	}
  
  	/*
***************
*** 1583,1589 ****
  		/* bail out if message too large */
  		if (bitset(EF_CLRQUEUE, CurEnv->e_flags))
  		{
! 			finis();
  			/*NOTREACHED*/
  			return -1;
  		}
--- 1610,1616 ----
  		/* bail out if message too large */
  		if (bitset(EF_CLRQUEUE, CurEnv->e_flags))
  		{
! 			finis(TRUE, ExitStat);
  			/*NOTREACHED*/
  			return -1;
  		}
***************
*** 1615,1625 ****
  	**	Don't send return error message if in VERIFY mode.
  	*/
  
! 	finis();
  	/*NOTREACHED*/
  	return -1;
  }
  
  
  /* ARGSUSED */
  SIGFUNC_DECL
--- 1642,1659 ----
  	**	Don't send return error message if in VERIFY mode.
  	*/
  
! 	finis(TRUE, ExitStat);
  	/*NOTREACHED*/
  	return -1;
  }
  
+ /* ARGSUSED */
+ SIGFUNC_DECL
+ quiesce(sig)
+ 	int sig;
+ {
+ 	finis(FALSE, EX_OK);
+ }
  
  /* ARGSUSED */
  SIGFUNC_DECL
***************
*** 1635,1641 ****
  **  FINIS -- Clean up and exit.
  **
  **	Parameters:
! **		none
  **
  **	Returns:
  **		never
--- 1669,1676 ----
  **  FINIS -- Clean up and exit.
  **
  **	Parameters:
! **		drop -- whether or not to drop CurEnv envelope
! **		exitstat -- exit status to use for exit() call
  **
  **	Returns:
  **		never
***************
*** 1645,1658 ****
  */
  
  void
! finis()
  {
  	if (tTd(2, 1))
  	{
  		extern void printenvflags __P((ENVELOPE *));
  
  		printf("\n====finis: stat %d e_id=%s e_flags=",
! 			ExitStat,
  			CurEnv->e_id == NULL ? "NOQUEUE" : CurEnv->e_id);
  		printenvflags(CurEnv);
  	}
--- 1680,1700 ----
  */
  
  void
! finis(drop, exitstat)
! 	bool drop;
! 	volatile int exitstat;
  {
+ 	extern void closemaps __P((void));
+ #ifdef USERDB
+ 	extern void _udbx_close __P((void));
+ #endif
+ 
  	if (tTd(2, 1))
  	{
  		extern void printenvflags __P((ENVELOPE *));
  
  		printf("\n====finis: stat %d e_id=%s e_flags=",
! 			exitstat,
  			CurEnv->e_id == NULL ? "NOQUEUE" : CurEnv->e_id);
  		printenvflags(CurEnv);
  	}
***************
*** 1668,1679 ****
  
  	/* clean up temp files */
  	CurEnv->e_to = NULL;
! 	if (CurEnv->e_id != NULL)
  		dropenvelope(CurEnv, TRUE);
  
  	/* flush any cached connections */
  	mci_flush(TRUE, NULL);
  
  # ifdef XLA
  	/* clean up extended load average stuff */
  	xla_all_end();
--- 1710,1729 ----
  
  	/* clean up temp files */
  	CurEnv->e_to = NULL;
! 	if (drop && CurEnv->e_id != NULL)
  		dropenvelope(CurEnv, TRUE);
  
  	/* flush any cached connections */
  	mci_flush(TRUE, NULL);
  
+ 	/* close maps belonging to this pid */
+ 	closemaps();
+ 
+ #ifdef USERDB
+ 	/* close UserDatabase */
+ 	_udbx_close();
+ #endif
+ 
  # ifdef XLA
  	/* clean up extended load average stuff */
  	xla_all_end();
***************
*** 1685,1698 ****
  		sm_syslog(LOG_DEBUG, CurEnv->e_id,
  			"finis, pid=%d",
  			getpid());
! 	if (ExitStat == EX_TEMPFAIL || CurEnv->e_errormode == EM_BERKNET)
! 		ExitStat = EX_OK;
  
  	/* reset uid for process accounting */
  	endpwent();
  	setuid(RealUid);
  
! 	exit(ExitStat);
  }
  /*
  **  INTSIG -- clean up on interrupt
--- 1735,1748 ----
  		sm_syslog(LOG_DEBUG, CurEnv->e_id,
  			"finis, pid=%d",
  			getpid());
! 	if (exitstat == EX_TEMPFAIL || CurEnv->e_errormode == EM_BERKNET)
! 		exitstat = EX_OK;
  
  	/* reset uid for process accounting */
  	endpwent();
  	setuid(RealUid);
  
! 	exit(exitstat);
  }
  /*
  **  INTSIG -- clean up on interrupt
***************
*** 1719,1733 ****
  		sm_syslog(LOG_DEBUG, CurEnv->e_id, "interrupt");
  	FileName = NULL;
  	unlockqueue(CurEnv);
  #ifdef XLA
  	xla_all_end();
  #endif
! 
! 	/* reset uid for process accounting */
! 	endpwent();
! 	setuid(RealUid);
! 
! 	exit(EX_OK);
  }
  /*
  **  INITMACROS -- initialize the macro system
--- 1769,1779 ----
  		sm_syslog(LOG_DEBUG, CurEnv->e_id, "interrupt");
  	FileName = NULL;
  	unlockqueue(CurEnv);
+ 	closecontrolsocket(TRUE);
  #ifdef XLA
  	xla_all_end();
  #endif
! 	finis(FALSE, EX_OK);
  }
  /*
  **  INITMACROS -- initialize the macro system
***************
*** 2157,2179 ****
  	{
  		if (LogLevel > 3)
  			sm_syslog(LOG_INFO, NOQID, "could not restart: need full path");
! 		exit(EX_OSFILE);
  	}
  	if (LogLevel > 3)
  		sm_syslog(LOG_INFO, NOQID, "restarting %s on signal", SaveArgv[0]);
  	alarm(0);
  	releasesignal(SIGHUP);
  	if (drop_privileges(TRUE) != EX_OK)
  	{
  		if (LogLevel > 0)
  			sm_syslog(LOG_ALERT, NOQID, "could not set[ug]id(%d, %d): %m",
  				RunAsUid, RunAsGid);
! 		exit(EX_OSERR);
  	}
  	execve(SaveArgv[0], (ARGV_T) SaveArgv, (ARGV_T) ExternalEnviron);
  	if (LogLevel > 0)
  		sm_syslog(LOG_ALERT, NOQID, "could not exec %s: %m", SaveArgv[0]);
! 	exit(EX_OSFILE);
  }
  /*
  **  DROP_PRIVILEGES -- reduce privileges to those of the RunAsUser option
--- 2203,2226 ----
  	{
  		if (LogLevel > 3)
  			sm_syslog(LOG_INFO, NOQID, "could not restart: need full path");
! 		finis(FALSE, EX_OSFILE);
  	}
  	if (LogLevel > 3)
  		sm_syslog(LOG_INFO, NOQID, "restarting %s on signal", SaveArgv[0]);
  	alarm(0);
  	releasesignal(SIGHUP);
+ 	closecontrolsocket(TRUE);
  	if (drop_privileges(TRUE) != EX_OK)
  	{
  		if (LogLevel > 0)
  			sm_syslog(LOG_ALERT, NOQID, "could not set[ug]id(%d, %d): %m",
  				RunAsUid, RunAsGid);
! 		finis(FALSE, EX_OSERR);
  	}
  	execve(SaveArgv[0], (ARGV_T) SaveArgv, (ARGV_T) ExternalEnviron);
  	if (LogLevel > 0)
  		sm_syslog(LOG_ALERT, NOQID, "could not exec %s: %m", SaveArgv[0]);
! 	finis(FALSE, EX_OSFILE);
  }
  /*
  **  DROP_PRIVILEGES -- reduce privileges to those of the RunAsUser option
diff -cr sendmail-8.9.1/src/map.c sendmail-8.9.2/src/map.c
*** sendmail-8.9.1/src/map.c	Fri Jun  5 14:51:02 1998
--- sendmail-8.9.2/src/map.c	Tue Dec 29 09:42:26 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)map.c	8.239 (Berkeley) 6/5/98";
  #endif /* not lint */
  
  #include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)map.c	8.256 (Berkeley) 11/15/1998";
  #endif /* not lint */
  
  #include "sendmail.h"
***************
*** 437,445 ****
  			pass);
  
  	/*
! 	** Pass 0 opens all non-rebuildable maps.
! 	** Pass 1 opens all rebuildable maps for read.
! 	** Pass 2 rebuilds all rebuildable maps.
  	*/
  
  	rebuildable = (bitset(MF_ALIAS, map->map_mflags) &&
--- 437,445 ----
  			pass);
  
  	/*
! 	**  Pass 0 opens all non-rebuildable maps.
! 	**  Pass 1 opens all rebuildable maps for read.
! 	**  Pass 2 rebuilds all rebuildable maps.
  	*/
  
  	rebuildable = (bitset(MF_ALIAS, map->map_mflags) &&
***************
*** 478,483 ****
--- 478,484 ----
  				map->map_file == NULL ? "NULL" :
  					map->map_file);
  		map->map_mflags |= MF_OPEN;
+ 		map->map_pid = getpid();
  	}
  	else
  	{
***************
*** 496,505 ****
--- 497,551 ----
  
  			map->map_class = &BogusMapClass;
  			map->map_mflags |= MF_OPEN;
+ 			map->map_pid = getpid();
  		}
  	}
  }
  /*
+ **  CLOSEMAPS -- close all open maps opened by the current pid.
+ **
+ **	Parameters:
+ **		none
+ **
+ **	Returns:
+ **		none.
+ */
+ 
+ void
+ closemaps()
+ {
+ 	extern void map_close __P((STAB *, int));
+ 
+ 	stabapply(map_close, 0);
+ }
+ 
+ /* ARGSUSED1 */
+ void
+ map_close(s, unused)
+ 	register STAB *s;
+ 	int unused;
+ {
+ 	MAP *map;
+ 
+ 	if (s->s_type != ST_MAP)
+ 		return;
+ 	
+ 	map = &s->s_map;
+ 
+ 	if (!bitset(MF_VALID, map->map_mflags) ||
+ 	    !bitset(MF_OPEN, map->map_mflags) ||
+ 	    map->map_pid != getpid())
+ 		return;
+ 	
+ 	if (tTd(38, 5))
+ 		printf("closemaps: closing %s (%s)\n",
+ 		       map->map_mname == NULL ? "NULL" : map->map_mname,
+ 		       map->map_file == NULL ? "NULL" : map->map_file);
+ 	
+ 	map->map_class->map_close(map);
+ 	map->map_mflags &= ~(MF_OPEN|MF_WRITABLE);
+ }
+ /*
  **  GETCANONNAME -- look up name using service switch
  **
  **	Parameters:
***************
*** 953,962 ****
  	else
  	{
  		map->map_mflags |= MF_LOCKED;
! 		if (geteuid() == 0 && TrustedFileUid != 0)
  		{
! 			if (fchown(dfd, TrustedFileUid, -1) < 0 ||
! 			    fchown(pfd, TrustedFileUid, -1) < 0)
  			{
  				int err = errno;
  
--- 999,1009 ----
  	else
  	{
  		map->map_mflags |= MF_LOCKED;
! #if _FFR_TRUSTED_USER
! 		if (geteuid() == 0 && TrustedUid != 0)
  		{
! 			if (fchown(dfd, TrustedUid, -1) < 0 ||
! 			    fchown(pfd, TrustedUid, -1) < 0)
  			{
  				int err = errno;
  
***************
*** 967,972 ****
--- 1014,1020 ----
  					map->map_file, errstring(err));
  			}
  		}
+ #endif
  	}
  	if (fstat(dfd, &st) >= 0)
  		map->map_mtime = st.st_mtime;
***************
*** 1020,1025 ****
--- 1068,1074 ----
  		if (map->map_class->map_open(map, omode))
  		{
  			map->map_mflags |= MF_OPEN;
+ 			map->map_pid = getpid();
  			if ((omode && O_ACCMODE) == O_RDWR)
  				map->map_mflags |= MF_WRITABLE;
  			goto lockdbm;
***************
*** 1033,1038 ****
--- 1082,1088 ----
  				*statp = EX_TEMPFAIL;
  				map->map_class = &BogusMapClass;
  				map->map_mflags |= MF_OPEN;
+ 				map->map_pid = getpid();
  				syserr("Cannot reopen NDBM database %s",
  					map->map_file);
  			}
***************
*** 1159,1165 ****
  	{
  #ifdef NDBM_YP_COMPAT
  		bool inclnull;
! 		char buf[200];
  
  		inclnull = bitset(MF_INCLNULL, map->map_mflags);
  		map->map_mflags &= ~MF_INCLNULL;
--- 1209,1215 ----
  	{
  #ifdef NDBM_YP_COMPAT
  		bool inclnull;
! 		char buf[MAXHOSTNAMELEN];
  
  		inclnull = bitset(MF_INCLNULL, map->map_mflags);
  		map->map_mflags &= ~MF_INCLNULL;
***************
*** 1500,1508 ****
  	if (mode == O_RDWR)
  	{
  		(void) db->sync(db, 0);
! 		if (geteuid() == 0 && TrustedFileUid != 0)
  		{
! 			if (fchown(fd, TrustedFileUid, -1) < 0)
  			{
  				int err = errno;
  
--- 1550,1559 ----
  	if (mode == O_RDWR)
  	{
  		(void) db->sync(db, 0);
! #if _FFR_TRUSTED_USER
! 		if (geteuid() == 0 && TrustedUid != 0)
  		{
! 			if (fchown(fd, TrustedUid, -1) < 0)
  			{
  				int err = errno;
  
***************
*** 1513,1518 ****
--- 1564,1570 ----
  					buf, errstring(err));
  			}
  		}
+ #endif
  	}
  
  	if (fd >= 0 && fstat(fd, &st) >= 0)
***************
*** 1590,1595 ****
--- 1642,1648 ----
  		if (map->map_class->map_open(map, omode))
  		{
  			map->map_mflags |= MF_OPEN;
+ 			map->map_pid = getpid();
  			if ((omode && O_ACCMODE) == O_RDWR)
  				map->map_mflags |= MF_WRITABLE;
  			db = (DB *) map->map_db2;
***************
*** 1604,1609 ****
--- 1657,1663 ----
  				*statp = EX_TEMPFAIL;
  				map->map_class = &BogusMapClass;
  				map->map_mflags |= MF_OPEN;
+ 				map->map_pid = getpid();
  				syserr("Cannot reopen DB database %s",
  					map->map_file);
  			}
***************
*** 1817,1825 ****
  #if DB_VERSION_MAJOR < 2
  	if (db->close(db) != 0)
  #else
  	if ((errno = db->close(db, 0)) != 0)
  #endif
! 		syserr("readaliases: db close failure");
  }
  
  #endif
--- 1871,1901 ----
  #if DB_VERSION_MAJOR < 2
  	if (db->close(db) != 0)
  #else
+ 	/*
+ 	**  Berkeley DB can use internal shared memory
+ 	**  locking for its memory pool.  Closing a map
+ 	**  opened by another process will interfere
+ 	**  with the shared memory and locks of the parent
+ 	**  process leaving things in a bad state.
+ 	**
+ 	**  If this map was not opened by the current
+ 	**  process, do not close it here but recover
+ 	**  the file descriptor.
+ 	*/
+ 	if (map->map_pid != getpid())
+ 	{
+ 		int fd = -1;
+ 
+ 		errno = db->fd(db, &fd);
+ 		if (fd >= 0)
+ 			(void) close(fd);
+ 		return;
+ 	}
+ 
  	if ((errno = db->close(db, 0)) != 0)
  #endif
! 		syserr("db_map_close(%s, %s, %lx): db close failure",
! 			map->map_mname, map->map_file, map->map_mflags);
  }
  
  #endif
***************
*** 2250,2256 ****
--- 2326,2335 ----
  	if (!bitset(MF_OPEN, map->map_mflags))
  	{
  		if (nisplus_map_open(map, O_RDONLY))
+ 		{
  			map->map_mflags |= MF_OPEN;
+ 			map->map_pid = getpid();
+ 		}
  		else
  		{
  			*statp = EX_UNAVAILABLE;
***************
*** 2591,2608 ****
  		ev = setevent(lmap->timeout.tv_sec, ldaptimeout, 0);
  	}
  
! 	if ((ld = ldap_open(lmap->ldaphost,lmap->ldapport)) == NULL)
  	{
  		if (!bitset(MF_OPTIONAL, map->map_mflags))
  		{
! 			syserr("ldapopen failed to %s in map %s",
  				lmap->ldaphost, map->map_mname);
  		}
  		return FALSE;
  	}
  
! 	/* clear the event if it has not sprung */
! 	clrevent(ev);
  	/* From here on in we can use ldap internal timelimits */
  	ld->ld_deref = lmap->deref;
  	ld->ld_timelimit = lmap->timelimit;
--- 2670,2707 ----
  		ev = setevent(lmap->timeout.tv_sec, ldaptimeout, 0);
  	}
  
! #ifdef LDAP_VERSION3
! 	ld = ldap_init(lmap->ldaphost,lmap->ldapport);
! #else
! 	ld = ldap_open(lmap->ldaphost,lmap->ldapport);
! #endif
! 
!  	/* clear the event if it has not sprung */
! 	if (lmap->timeout.tv_sec != 0)
! 		clrevent(ev);
! 
! 	if (ld == NULL)
  	{
  		if (!bitset(MF_OPTIONAL, map->map_mflags))
  		{
! 			syserr("%sldapopen failed to %s in map %s",
! 				bitset(MF_NODEFER, map->map_mflags) ? "" : "421 ",
  				lmap->ldaphost, map->map_mname);
  		}
  		return FALSE;
  	}
  
! #ifdef LDAP_VERSION3
! 	ldap_set_option(ld, LDAP_OPT_DEREF, &lmap->deref);
! 	ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &lmap->timelimit);
! 	ldap_set_option(ld, LDAP_OPT_SIZELIMIT, &lmap->sizelimit);
! 	ldap_set_option(ld, LDAP_OPT_REFERRALS, &lmap->ldap_options);
! 
! 	/* ld needs to be cast into the map struct */
! 	lmap->ld = ld; 
! 	return TRUE;
! #else
! 
  	/* From here on in we can use ldap internal timelimits */
  	ld->ld_deref = lmap->deref;
  	ld->ld_timelimit = lmap->timelimit;
***************
*** 2625,2635 ****
  	}
  
  	return FALSE;
  }
  
  
  /*
! ** LDAP_MAP_CLOSE -- close ldap map
  */
  
  void
--- 2724,2735 ----
  	}
  
  	return FALSE;
+ #endif
  }
  
  
  /*
! **  LDAP_MAP_CLOSE -- close ldap map
  */
  
  void
***************
*** 2645,2652 ****
  
  #ifdef SUNET_ID
  /*
! ** SUNET_ID_HASH -- Convert a string to it's Sunet_id canonical form
! ** This only makes sense at Stanford University.
  */
  
  char *
--- 2745,2752 ----
  
  #ifdef SUNET_ID
  /*
! **  SUNET_ID_HASH -- Convert a string to it's Sunet_id canonical form
! **  This only makes sense at Stanford University.
  */
  
  char *
***************
*** 2680,2686 ****
  
  #endif /* SUNET_ID */
  /*
! ** LDAP_MAP_LOOKUP -- look up a datum in a LDAP map
  */
  
  char *
--- 2780,2786 ----
  
  #endif /* SUNET_ID */
  /*
! **  LDAP_MAP_LOOKUP -- look up a datum in a LDAP map
  */
  
  char *
***************
*** 2699,2704 ****
--- 2799,2805 ----
  	char **attr_values = NULL;
  	char *result;
  	int name_len;
+ 	char *fp, *p, *q;
  
  	if (tTd(38, 20))
  		printf("ldap_map_lookup(%s, %s)\n", map->map_mname, name);
***************
*** 2727,2734 ****
  		makelower(keybuf);
  #endif /*SUNET_ID */
  
! 	/* sprintf keybuf into filter */
! 	snprintf(filter, sizeof filter, lmap->filter, keybuf);
  
  	if (ldap_search_st(lmap->ld, lmap->base,lmap->scope,filter,
  			   lmap->attr, lmap->attrsonly, &(lmap->timeout),
--- 2828,2855 ----
  		makelower(keybuf);
  #endif /*SUNET_ID */
  
! 	/* substitute keybuf into filter, perhaps multiple times */
! 	fp = filter;
! 	p = lmap->filter;
! 	while ((q = strchr(p, '%')) != NULL)
! 	{
! 		if (q[1] == 's')
! 		{
! 			snprintf(fp, SPACELEFT(filter, fp), "%.*s%s",
! 				 q - p, p, keybuf);
! 			p = q + 2;
! 		}
! 		else
! 		{
! 			snprintf(fp, SPACELEFT(filter, fp), "%.*s",
! 				 q - p + 1, p);
! 			p = q + (q[1] == '%' ? 2 : 1);
! 		}
! 		fp += strlen(fp);
! 	}
! 	snprintf(fp, SPACELEFT(filter, fp), "%s", p);
! 	if (tTd(38, 20))
! 		printf("ldap search filter=%s\n", filter);
  
  	if (ldap_search_st(lmap->ld, lmap->base,lmap->scope,filter,
  			   lmap->attr, lmap->attrsonly, &(lmap->timeout),
***************
*** 2749,2755 ****
  		{
  			if (!bitset(MF_OPTIONAL, map->map_mflags))
  			{
! 				syserr("Error in ldap_search_st using %s in map %s",
  					filter, map->map_mname);
  			}
  			result = NULL;
--- 2870,2877 ----
  		{
  			if (!bitset(MF_OPTIONAL, map->map_mflags))
  			{
! 				syserr("%sError in ldap_search_st using %s in map %s",
! 					bitset(MF_NODEFER, map->map_mflags) ? "" : "421 ",
  					filter, map->map_mname);
  			}
  			result = NULL;
***************
*** 2802,2808 ****
  
  
  /*
! ** LDAP_MAP_DEQUOTE - helper routine for ldap_map_parseargs
  */
  
  char *
--- 2924,2930 ----
  
  
  /*
! **  LDAP_MAP_DEQUOTE - helper routine for ldap_map_parseargs
  */
  
  char *
***************
*** 2832,2838 ****
  }
  
  /*
! ** LDAP_MAP_PARSEARGS -- parse ldap map definition args.
  */
  
  bool
--- 2954,2960 ----
  }
  
  /*
! **  LDAP_MAP_PARSEARGS -- parse ldap map definition args.
  */
  
  bool
***************
*** 3036,3043 ****
  		map->map_domain = newstr(ldap_map_dequote(map->map_domain));
  
  	/*
! 	** We need to swallow up all the stuff into a struct
! 	** and dump it into map->map_dbptr1
  	*/
  
  	if (lmap->ldaphost != NULL)
--- 3158,3165 ----
  		map->map_domain = newstr(ldap_map_dequote(map->map_domain));
  
  	/*
! 	**  We need to swallow up all the stuff into a struct
! 	**  and dump it into map->map_dbptr1
  	*/
  
  	if (lmap->ldaphost != NULL)
***************
*** 3095,3101 ****
  
  #endif /* LDAP Modules */
  /*
! ** syslog map
  */
  
  #if _FFR_MAP_SYSLOG
--- 3217,3223 ----
  
  #endif /* LDAP Modules */
  /*
! **  syslog map
  */
  
  #if _FFR_MAP_SYSLOG
***************
*** 3103,3109 ****
  #define map_prio	map_lockfd	/* overload field */
  
  /*
! ** SYSLOG_MAP_PARSEARGS -- check for priority level to syslog messages.
  */
  
  bool
--- 3225,3231 ----
  #define map_prio	map_lockfd	/* overload field */
  
  /*
! **  SYSLOG_MAP_PARSEARGS -- check for priority level to syslog messages.
  */
  
  bool
***************
*** 3185,3191 ****
  }
  
  /*
! ** SYSLOG_MAP_LOOKUP -- rewrite and syslog message.  Always return empty string
  */
  
  char *
--- 3307,3313 ----
  }
  
  /*
! **  SYSLOG_MAP_LOOKUP -- rewrite and syslog message.  Always return empty string
  */
  
  char *
***************
*** 3382,3389 ****
  	MAP *map;
  	int mode;
  {
- 	char *p;
- 
  	if (tTd(38, 2))
  		printf("ni_map_open(%s, %s, %d)\n",
  			map->map_mname, map->map_file, mode);
--- 3504,3509 ----
***************
*** 3666,3672 ****
  	return propval;
  }
  
! #endif
  /*
  **  TEXT (unindexed text file) Modules
  **
--- 3786,3792 ----
  	return propval;
  }
  
! #endif /* NETINFO */
  /*
  **  TEXT (unindexed text file) Modules
  **
***************
*** 3842,3847 ****
--- 3962,3972 ----
  		return NULL;
  	}
  	vp = get_column(linebuf, map->map_valcolno, delim, buf, sizeof buf);
+ 	if (vp == NULL)
+ 	{
+ 		*statp = EX_NOTFOUND;
+ 		return NULL;
+ 	}
  	vsize = strlen(vp);
  	*statp = EX_OK;
  	if (bitset(MF_MATCHONLY, map->map_mflags))
diff -cr sendmail-8.9.1/src/mci.c sendmail-8.9.2/src/mci.c
*** sendmail-8.9.1/src/mci.c	Mon Jun 15 11:03:17 1998
--- sendmail-8.9.2/src/mci.c	Tue Dec 29 09:42:26 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)mci.c	8.82 (Berkeley) 6/15/98";
  #endif /* not lint */
  
  #include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)mci.c	8.83 (Berkeley) 10/13/1998";
  #endif /* not lint */
  
  #include "sendmail.h"
***************
*** 503,509 ****
  		mci_dump(MciCache[i], logit);
  }
  /*
! ** MCI_LOCK_HOST -- Lock host while sending.
  **
  **	If we are contacting a host, we'll need to
  **	update the status information in the host status
--- 503,509 ----
  		mci_dump(MciCache[i], logit);
  }
  /*
! **  MCI_LOCK_HOST -- Lock host while sending.
  **
  **	If we are contacting a host, we'll need to
  **	update the status information in the host status
***************
*** 643,649 ****
  	errno = saveErrno;
  }
  /*
! ** MCI_LOAD_PERSISTENT -- load persistent host info
  **
  **	Load information about host that is kept
  **	in common for all running sendmails.
--- 643,649 ----
  	errno = saveErrno;
  }
  /*
! **  MCI_LOAD_PERSISTENT -- load persistent host info
  **
  **	Load information about host that is kept
  **	in common for all running sendmails.
***************
*** 1016,1023 ****
  		*hostptr = '\0';
  
  		/*
! 		** Do something with the file containing the persistent
! 		** information.
  		*/
  		ret = (*action)(pathname, host);
  	}
--- 1016,1023 ----
  		*hostptr = '\0';
  
  		/*
! 		**  Do something with the file containing the persistent
! 		**  information.
  		*/
  		ret = (*action)(pathname, host);
  	}
***************
*** 1167,1173 ****
  	return 0;
  }
  /*
! ** MCI_GENERATE_PERSISTENT_PATH -- generate path from hostname
  **
  **	Given `host', convert from a.b.c to $QueueDir/.hoststat/c./b./a,
  **	putting the result into `path'.  if `createflag' is set, intervening
--- 1167,1173 ----
  	return 0;
  }
  /*
! **  MCI_GENERATE_PERSISTENT_PATH -- generate path from hostname
  **
  **	Given `host', convert from a.b.c to $QueueDir/.hoststat/c./b./a,
  **	putting the result into `path'.  if `createflag' is set, intervening
diff -cr sendmail-8.9.1/src/mime.c sendmail-8.9.2/src/mime.c
*** sendmail-8.9.1/src/mime.c	Tue May 19 16:36:11 1998
--- sendmail-8.9.2/src/mime.c	Tue Dec 29 09:42:27 1998
***************
*** 14,20 ****
  # include <string.h>
  
  #ifndef lint
! static char sccsid[] = "@(#)mime.c	8.66 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  /*
--- 14,20 ----
  # include <string.h>
  
  #ifndef lint
! static char sccsid[] = "@(#)mime.c	8.70 (Berkeley) 11/10/1998";
  #endif /* not lint */
  
  /*
***************
*** 225,231 ****
  	**	Do a recursive descent into the message.
  	*/
  
! 	if (strcasecmp(type, "multipart") == 0 && !bitset(M87F_NO8BIT, flags))
  	{
  		int blen;
  
--- 225,232 ----
  	**	Do a recursive descent into the message.
  	*/
  
! 	if (strcasecmp(type, "multipart") == 0 &&
! 	    (!bitset(M87F_NO8BIT, flags) || bitset(M87F_NO8TO7, flags)))
  	{
  		int blen;
  
***************
*** 379,385 ****
  	*/
  
  	sectionsize = sectionhighbits = 0;
! 	if (!bitset(M87F_NO8BIT, flags))
  	{
  		/* remember where we were */
  		offset = ftell(e->e_dfp);
--- 380,386 ----
  	*/
  
  	sectionsize = sectionhighbits = 0;
! 	if (!bitset(M87F_NO8BIT|M87F_NO8TO7, flags))
  	{
  		/* remember where we were */
  		offset = ftell(e->e_dfp);
***************
*** 441,448 ****
  	if (sectionhighbits == 0)
  	{
  		/* no encoding necessary */
! 		if (cte != NULL)
  		{
  			snprintf(buf, sizeof buf,
  				"Content-Transfer-Encoding: %.200s", cte);
  			putline(buf, mci);
--- 442,454 ----
  	if (sectionhighbits == 0)
  	{
  		/* no encoding necessary */
! 		if (cte != NULL && bitset(MCIF_INMIME, mci->mci_flags))
  		{
+ 			/*
+ 			**  Skip _unless_ in MIME mode; see putheader() for the
+ 			**  counterpart where this is skipped _if_ in MIME mode.
+ 			*/
+ 
  			snprintf(buf, sizeof buf,
  				"Content-Transfer-Encoding: %.200s", cte);
  			putline(buf, mci);
***************
*** 662,676 ****
  	static bool atbol = TRUE;	/* at beginning of line */
  	static int bt = MBT_SYNTAX;	/* boundary type of next EOF */
  	static u_char buf[128];		/* need not be a full line */
  
! 	if (buflen > 0)
  	{
  		buflen--;
  		return *bp++;
  	}
  	bp = buf;
  	buflen = 0;
- 	c = getc(fp);
  	if (c == '\n')
  	{
  		/* might be part of a MIME boundary */
--- 668,689 ----
  	static bool atbol = TRUE;	/* at beginning of line */
  	static int bt = MBT_SYNTAX;	/* boundary type of next EOF */
  	static u_char buf[128];		/* need not be a full line */
+ 	int start = 0;			/* indicates position of - in buffer */
  
! 	if (buflen == 1 && *bp == '\n')
! 	{
! 		/* last \n in buffer may be part of next MIME boundary */
! 		c = *bp;
! 	}
! 	else if (buflen > 0)
  	{
  		buflen--;
  		return *bp++;
  	}
+ 	else 
+ 		c = getc(fp);
  	bp = buf;
  	buflen = 0;
  	if (c == '\n')
  	{
  		/* might be part of a MIME boundary */
***************
*** 682,687 ****
--- 695,701 ----
  			ungetc(c, fp);
  			return c;
  		}
+ 		start = 1;
  	}
  	if (c != EOF)
  		*bp++ = c;
***************
*** 710,716 ****
  			*bp++ = c;
  		}
  		*bp = '\0';
! 		bt = mimeboundary((char *) &buf[1], boundaries);
  		switch (bt)
  		{
  		  case MBT_FINAL:
--- 724,730 ----
  			*bp++ = c;
  		}
  		*bp = '\0';
! 		bt = mimeboundary((char *) &buf[start], boundaries);
  		switch (bt)
  		{
  		  case MBT_FINAL:
diff -cr sendmail-8.9.1/src/newaliases.1 sendmail-8.9.2/src/newaliases.1
*** sendmail-8.9.1/src/newaliases.1	Tue May 19 16:36:06 1998
--- sendmail-8.9.2/src/newaliases.1	Tue Dec 29 09:42:20 1998
***************
*** 8,14 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)newaliases.1	8.10 (Berkeley) 5/19/98
  .\"
  .Dd May 19, 1998
  .Dt NEWALIASES 1
--- 8,14 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)newaliases.1	8.10 (Berkeley) 5/19/1998
  .\"
  .Dd May 19, 1998
  .Dt NEWALIASES 1
diff -cr sendmail-8.9.1/src/parseaddr.c sendmail-8.9.2/src/parseaddr.c
*** sendmail-8.9.1/src/parseaddr.c	Wed Jun 24 15:07:53 1998
--- sendmail-8.9.2/src/parseaddr.c	Tue Dec 29 09:42:17 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)parseaddr.c	8.153 (Berkeley) 6/24/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)parseaddr.c	8.156 (Berkeley) 10/27/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 67,73 ****
  	auto char *delimptrbuf;
  	bool queueup;
  	char pvpbuf[PSBUFSIZE];
- 	extern ADDRESS *buildaddr __P((char **, ADDRESS *, int, ENVELOPE *));
  	extern bool invalidaddr __P((char *, char *));
  	extern void allocaddr __P((ADDRESS *, int, char *));
  
--- 67,72 ----
***************
*** 1450,1457 ****
  	/* XXX should try to auto-open the map here */
  
  	if (tTd(60, 1))
! 		printf("map_lookup(%s, %s) => ",
! 			map->s_name, key);
  	replac = (*map->s_map.map_class->map_lookup)(&map->s_map,
  			key, argvect, &stat);
  	if (tTd(60, 1))
--- 1449,1465 ----
  	/* XXX should try to auto-open the map here */
  
  	if (tTd(60, 1))
! 	{
! 		printf("map_lookup(%s, %s", map->s_name, key);
! 		if (tTd(60, 5))
! 		{
! 			int i;
! 
! 			for (i = 0; argvect[i] != NULL; i++)
! 				printf(", %%%d=%s", i, argvect[i]);
! 		}
! 		printf(") => ");
! 	}
  	replac = (*map->s_map.map_class->map_lookup)(&map->s_map,
  			key, argvect, &stat);
  	if (tTd(60, 1))
***************
*** 1553,1559 ****
  	static MAILER errormailer;
  	static char *discardargv[] = { "DISCARD", NULL };
  	static char *errorargv[] = { "ERROR", NULL };
! 	static char ubuf[MAXNAME + 1];
  
  	if (tTd(24, 5))
  	{
--- 1561,1567 ----
  	static MAILER errormailer;
  	static char *discardargv[] = { "DISCARD", NULL };
  	static char *errorargv[] = { "ERROR", NULL };
! 	static char ubuf[MAXNAME + 2];
  
  	if (tTd(24, 5))
  	{
diff -cr sendmail-8.9.1/src/pathnames.h sendmail-8.9.2/src/pathnames.h
*** sendmail-8.9.1/src/pathnames.h	Tue May 19 16:36:02 1998
--- sendmail-8.9.2/src/pathnames.h	Tue Dec 29 09:42:15 1998
***************
*** 8,14 ****
   * the sendmail distribution.
   *
   *
!  *	@(#)pathnames.h	8.8 (Berkeley) 5/19/98
   */
  
  #ifndef _PATH_SENDMAILCF
--- 8,14 ----
   * the sendmail distribution.
   *
   *
!  *	@(#)pathnames.h	8.8 (Berkeley) 5/19/1998
   */
  
  #ifndef _PATH_SENDMAILCF
diff -cr sendmail-8.9.1/src/queue.c sendmail-8.9.2/src/queue.c
*** sendmail-8.9.1/src/queue.c	Mon Jun 15 10:32:26 1998
--- sendmail-8.9.2/src/queue.c	Tue Dec 29 09:42:23 1998
***************
*** 14,22 ****
  
  #ifndef lint
  #if QUEUE
! static char sccsid[] = "@(#)queue.c	8.202 (Berkeley) 6/15/98 (with queueing)";
  #else
! static char sccsid[] = "@(#)queue.c	8.202 (Berkeley) 6/15/98 (without queueing)";
  #endif
  #endif /* not lint */
  
--- 14,22 ----
  
  #ifndef lint
  #if QUEUE
! static char sccsid[] = "@(#)queue.c	8.210 (Berkeley) 10/15/1998 (with queueing)";
  #else
! static char sccsid[] = "@(#)queue.c	8.210 (Berkeley) 10/15/1998 (without queueing)";
  #endif
  #endif /* not lint */
  
***************
*** 611,617 ****
  		{
  			/* parent -- pick up intermediate zombie */
  			(void) blocksignal(SIGALRM);
! 			proc_list_add(pid);
  			(void) releasesignal(SIGALRM);
  			releasesignal(SIGCHLD);
  			if (QueueIntvl != 0)
--- 611,617 ----
  		{
  			/* parent -- pick up intermediate zombie */
  			(void) blocksignal(SIGALRM);
! 			proc_list_add(pid, "Queue runner");
  			(void) releasesignal(SIGALRM);
  			releasesignal(SIGCHLD);
  			if (QueueIntvl != 0)
***************
*** 619,631 ****
  			return TRUE;
  		}
  		/* child -- double fork and clean up signals */
  		proc_list_clear();
  		releasesignal(SIGCHLD);
  		(void) setsignal(SIGCHLD, SIG_DFL);
  		(void) setsignal(SIGHUP, intsig);
  	}
  
! 	setproctitle("running queue: %s", QueueDir);
  
  	if (LogLevel > 69)
  		sm_syslog(LOG_DEBUG, NOQID,
--- 619,635 ----
  			return TRUE;
  		}
  		/* child -- double fork and clean up signals */
+ 		clrcontrol();
  		proc_list_clear();
+ 
+ 		/* Add parent process as first child item */
+ 		proc_list_add(getpid(), "Queue runner child process");
  		releasesignal(SIGCHLD);
  		(void) setsignal(SIGCHLD, SIG_DFL);
  		(void) setsignal(SIGHUP, intsig);
  	}
  
! 	sm_setproctitle(TRUE, "running queue: %s", QueueDir);
  
  	if (LogLevel > 69)
  		sm_syslog(LOG_DEBUG, NOQID,
***************
*** 750,756 ****
  		else
  		{
  			pid_t pid;
- 			extern pid_t dowork __P((char *, bool, bool, ENVELOPE *));
  
  			if (Verbose)
  			{
--- 754,759 ----
***************
*** 771,777 ****
  
  	/* exit without the usual cleanup */
  	e->e_id = NULL;
! 	finis();
  	/*NOTREACHED*/
  	return TRUE;
  }
--- 774,780 ----
  
  	/* exit without the usual cleanup */
  	e->e_id = NULL;
! 	finis(TRUE, ExitStat);
  	/*NOTREACHED*/
  	return TRUE;
  }
***************
*** 893,899 ****
--- 896,911 ----
  			continue;
  
  		if (strlen(d->d_name) > MAXQFNAME)
+ 		{
+ 			if (Verbose)
+ 				printf("orderq: %s too long, %d max characters\n",
+ 					d->d_name, MAXQFNAME);
+ 			if (LogLevel > 0)
+ 				sm_syslog(LOG_ALERT, NOQID,
+ 					"orderq: %s too long, %d max characters",
+ 					d->d_name, MAXQFNAME);
  			continue;
+ 		}
  
  		check = QueueLimitId;
  		while (check != NULL)
***************
*** 1443,1448 ****
--- 1455,1470 ----
  		{
  			/* child -- error messages to the transcript */
  			QuickAbort = OnlyOneError = FALSE;
+ 
+ 			/*
+ 			**  Since the delivery may happen in a child and the
+ 			**  parent does not wait, the parent may close the
+ 			**  maps thereby removing any shared memory used by
+ 			**  the map.  Therefore, open a copy of the maps for
+ 			**  the delivery process.
+ 			*/
+ 		
+ 			initmaps(FALSE, e);
  		}
  	}
  	else
***************
*** 1474,1480 ****
  			disconnect(1, e);
  			OpMode = MD_DELIVER;
  		}
! 		setproctitle("%s: from queue", id);
  		if (LogLevel > 76)
  			sm_syslog(LOG_DEBUG, e->e_id,
  				"dowork, pid=%d",
--- 1496,1502 ----
  			disconnect(1, e);
  			OpMode = MD_DELIVER;
  		}
! 		sm_setproctitle(TRUE, "%s: from queue", id);
  		if (LogLevel > 76)
  			sm_syslog(LOG_DEBUG, e->e_id,
  				"dowork, pid=%d",
***************
*** 1490,1496 ****
  				printf("readqf(%s) failed\n", e->e_id);
  			e->e_id = NULL;
  			if (forkflag)
! 				exit(EX_OK);
  			else
  				return 0;
  		}
--- 1512,1518 ----
  				printf("readqf(%s) failed\n", e->e_id);
  			e->e_id = NULL;
  			if (forkflag)
! 				finis(FALSE, EX_OK);
  			else
  				return 0;
  		}
***************
*** 1506,1512 ****
  
  		/* finish up and exit */
  		if (forkflag)
! 			finis();
  		else
  			dropenvelope(e, TRUE);
  	}
--- 1528,1534 ----
  
  		/* finish up and exit */
  		if (forkflag)
! 			finis(TRUE, ExitStat);
  		else
  			dropenvelope(e, TRUE);
  	}
***************
*** 1777,1783 ****
  			    curtime() < e->e_dtime + MinQueueAge)
  			{
  				char *howlong = pintvl(curtime() - e->e_dtime, TRUE);
- 				extern void unlockqueue __P((ENVELOPE *));
  
  				if (Verbose || tTd(40, 8))
  					printf("%s: too young (%s)\n",
--- 1799,1804 ----
***************
*** 2185,2191 ****
  					continue;
  				syserr("queuename: Cannot create \"%s\" in \"%s\" (euid=%d)",
  					qf, QueueDir, geteuid());
! 				exit(EX_UNAVAILABLE);
  			}
  			do
  			{
--- 2206,2212 ----
  					continue;
  				syserr("queuename: Cannot create \"%s\" in \"%s\" (euid=%d)",
  					qf, QueueDir, geteuid());
! 				finis(FALSE, EX_UNAVAILABLE);
  			}
  			do
  			{
***************
*** 2212,2218 ****
  			{
  				syserr("queuename: Cannot lock \"%s\" in \"%s\" (euid=%d)",
  					qf, QueueDir, geteuid());
! 				exit(EX_OSERR);
  			}
  
  			/* a reader got the file; abandon it and try again */
--- 2233,2239 ----
  			{
  				syserr("queuename: Cannot lock \"%s\" in \"%s\" (euid=%d)",
  					qf, QueueDir, geteuid());
! 				finis(FALSE, EX_OSERR);
  			}
  
  			/* a reader got the file; abandon it and try again */
***************
*** 2222,2228 ****
  		{
  			syserr("queuename: Cannot create \"%s\" in \"%s\" (euid=%d)",
  				qf, QueueDir, geteuid());
! 			exit(EX_OSERR);
  		}
  		e->e_id = newstr(&qf[2]);
  		define('i', e->e_id, e);
--- 2243,2249 ----
  		{
  			syserr("queuename: Cannot create \"%s\" in \"%s\" (euid=%d)",
  				qf, QueueDir, geteuid());
! 			finis(FALSE, EX_OSERR);
  		}
  		e->e_id = newstr(&qf[2]);
  		define('i', e->e_id, e);
diff -cr sendmail-8.9.1/src/readcf.c sendmail-8.9.2/src/readcf.c
*** sendmail-8.9.1/src/readcf.c	Mon Jun  8 14:57:05 1998
--- sendmail-8.9.2/src/readcf.c	Tue Dec 29 09:42:22 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)readcf.c	8.230 (Berkeley) 6/5/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)readcf.c	8.235 (Berkeley) 8/18/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 106,124 ****
  	if (cf == NULL)
  	{
  		syserr("cannot open");
! 		exit(EX_OSFILE);
  	}
  
  	if (fstat(fileno(cf), &statb) < 0)
  	{
  		syserr("cannot fstat");
! 		exit(EX_OSFILE);
  	}
  
  	if (!S_ISREG(statb.st_mode))
  	{
  		syserr("not a plain file");
! 		exit(EX_OSFILE);
  	}
  
  	if (OpMode != MD_TEST && bitset(S_IWGRP|S_IWOTH, statb.st_mode))
--- 106,124 ----
  	if (cf == NULL)
  	{
  		syserr("cannot open");
! 		finis(FALSE, EX_OSFILE);
  	}
  
  	if (fstat(fileno(cf), &statb) < 0)
  	{
  		syserr("cannot fstat");
! 		finis(FALSE, EX_OSFILE);
  	}
  
  	if (!S_ISREG(statb.st_mode))
  	{
  		syserr("not a plain file");
! 		finis(FALSE, EX_OSFILE);
  	}
  
  	if (OpMode != MD_TEST && bitset(S_IWGRP|S_IWOTH, statb.st_mode))
***************
*** 518,524 ****
  	if (ferror(cf))
  	{
  		syserr("I/O read error");
! 		exit(EX_OSFILE);
  	}
  	fclose(cf);
  	FileName = NULL;
--- 518,524 ----
  	if (ferror(cf))
  	{
  		syserr("I/O read error");
! 		finis(FALSE, EX_OSFILE);
  	}
  	fclose(cf);
  	FileName = NULL;
***************
*** 1515,1525 ****
  #define O_CNCTONLYTO	0xa6
  	{ "ConnectOnlyTo",		O_CNCTONLYTO,	FALSE	},
  #endif
! #if _FFR_TRUSTED_FILE_OWNER
! #define O_TRUSTFILEOWN	0xa7
! 	{ "TrustedFileOwner",		O_TRUSTFILEOWN,	FALSE	},
  #endif
- 
  	{ NULL,				'\0',		FALSE	}
  };
  
--- 1515,1532 ----
  #define O_CNCTONLYTO	0xa6
  	{ "ConnectOnlyTo",		O_CNCTONLYTO,	FALSE	},
  #endif
! #if _FFR_TRUSTED_USER
! #define O_TRUSTUSER	0xa7
! 	{ "TrustedUser",		O_TRUSTUSER,	FALSE	},
! #endif
! #if _FFR_MAX_MIME_HEADER_LENGTH
! #define O_MAXMIMEHDRLEN	0xa8
! 	{ "MaxMimeHeaderLength",	O_MAXMIMEHDRLEN,	FALSE	},
! #endif
! #if _FFR_CONTROL_SOCKET
! #define O_CONTROLSOCKET	0xa9
! 	{ "ControlSocketName",		O_CONTROLSOCKET,	FALSE	},
  #endif
  	{ NULL,				'\0',		FALSE	}
  };
  
***************
*** 1707,1713 ****
  
  		  default:
  			syserr("Unknown 8-bit mode %c", *val);
! 			exit(EX_USAGE);
  		}
  		break;
  #endif
--- 1714,1720 ----
  
  		  default:
  			syserr("Unknown 8-bit mode %c", *val);
! 			finis(FALSE, EX_USAGE);
  		}
  		break;
  #endif
***************
*** 1771,1777 ****
  
  		  default:
  			syserr("Unknown delivery mode %c", *val);
! 			exit(EX_USAGE);
  		}
  		buf[0] = (char)e->e_sendmode;
  		buf[1] = '\0';
--- 1778,1784 ----
  
  		  default:
  			syserr("Unknown delivery mode %c", *val);
! 			finis(FALSE, EX_USAGE);
  		}
  		buf[0] = (char)e->e_sendmode;
  		buf[1] = '\0';
***************
*** 2401,2430 ****
  		break;
  #endif
  
! #if _FFR_TRUSTED_FILE_OWNER
! 	  case O_TRUSTFILEOWN:
  		if (isascii(*val) && isdigit(*val))
! 			TrustedFileUid = atoi(val);
  		else
  		{
  			register struct passwd *pw;
  
! 			TrustedFileUid = 0;
  			pw = sm_getpwnam(val);
  			if (pw == NULL)
! 				syserr("readcf: option TrustedFileOwner: unknown user %s", val);
  			else
! 				TrustedFileUid = pw->pw_uid;
  		}
  
  #ifdef UID_MAX
! 		if (TrustedFileUid > UID_MAX)
  		{
! 			syserr("readcf: option TrustedFileOwner: uid value (%ld) > UID_MAX (%ld)",
! 				TrustedFileUid, UID_MAX);
! 			TrustedFileUid = 0;
  		}
  #endif
  		break;
  #endif
  
--- 2408,2468 ----
  		break;
  #endif
  
! #if _FFR_TRUSTED_USER
! 	  case O_TRUSTUSER:
  		if (isascii(*val) && isdigit(*val))
! 			TrustedUid = atoi(val);
  		else
  		{
  			register struct passwd *pw;
  
! 			TrustedUid = 0;
  			pw = sm_getpwnam(val);
  			if (pw == NULL)
! 				syserr("readcf: option TrustedUser: unknown user %s", val);
  			else
! 				TrustedUid = pw->pw_uid;
  		}
  
  #ifdef UID_MAX
! 		if (TrustedUid > UID_MAX)
  		{
! 			syserr("readcf: option TrustedUser: uid value (%ld) > UID_MAX (%ld)",
! 				TrustedUid, UID_MAX);
! 			TrustedUid = 0;
  		}
  #endif
+ 		break;
+ #endif
+ 
+ #if _FFR_MAX_MIME_HEADER_LENGTH
+ 	  case O_MAXMIMEHDRLEN:
+ 		p = strchr(val, '/');
+ 		if (p != NULL)
+ 			*p++ = '\0';
+ 		MaxMimeHeaderLength = atoi(val);
+ 		if (p != NULL && *p != '\0')
+ 			MaxMimeFieldLength = atoi(p);
+ 		else
+ 			MaxMimeFieldLength = MaxMimeHeaderLength / 2;
+ 
+ 		if (MaxMimeHeaderLength < 0)
+ 			MaxMimeHeaderLength = 0;
+ 		else if (MaxMimeHeaderLength < 128)
+ 			printf("Warning: MaxMimeHeaderLength: header length limit set lower than 128\n");
+ 
+ 		if (MaxMimeFieldLength < 0)
+ 			MaxMimeFieldLength = 0;
+ 		else if (MaxMimeFieldLength < 40)
+ 			printf("Warning: MaxMimeHeaderLength: field length limit set lower than 40\n");
+ 		break;
+ #endif
+ 
+ #if _FFR_CONTROL_SOCKET
+ 	  case O_CONTROLSOCKET:
+ 		if (ControlSocketName != NULL)
+ 			free(ControlSocketName);
+ 		ControlSocketName = newstr(val);
  		break;
  #endif
  
diff -cr sendmail-8.9.1/src/recipient.c sendmail-8.9.2/src/recipient.c
*** sendmail-8.9.1/src/recipient.c	Wed Jun 24 14:32:29 1998
--- sendmail-8.9.2/src/recipient.c	Tue Dec 29 09:42:15 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)recipient.c	8.154 (Berkeley) 6/24/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)recipient.c	8.161 (Berkeley) 12/18/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 331,338 ****
  	}
  
  	/* add address on list */
! 	*pq = a;
! 	a->q_next = NULL;
  
  	/*
  	**  Alias the name and handle special mailer types.
--- 331,341 ----
  	}
  
  	/* add address on list */
! 	if (pq != NULL)
! 	{
! 		*pq = a;
! 		a->q_next = NULL;
! 	}
  
  	/*
  	**  Alias the name and handle special mailer types.
***************
*** 340,346 ****
  
    trylocaluser:
  	if (tTd(29, 7))
! 		printf("at trylocaluser %s\n", a->q_user);
  
  	if (bitset(QDONTSEND|QBADADDR|QVERIFIED, a->q_flags))
  		goto testselfdestruct;
--- 343,352 ----
  
    trylocaluser:
  	if (tTd(29, 7))
! 	{
! 		printf("at trylocaluser: ");
! 		printaddr(a, FALSE);
! 	}
  
  	if (bitset(QDONTSEND|QBADADDR|QVERIFIED, a->q_flags))
  		goto testselfdestruct;
***************
*** 931,937 ****
  		       (int) getuid(), (int) geteuid());
  
  	if (forwarding)
! 		sfflags |= SFF_MUSTOWN|SFF_ROOTOK|SFF_NOSLINK;
  
  	ca = getctladdr(ctladdr);
  	if (ca == NULL)
--- 937,943 ----
  		       (int) getuid(), (int) geteuid());
  
  	if (forwarding)
! 		sfflags |= SFF_MUSTOWN|SFF_ROOTOK|SFF_NOWLINK;
  
  	ca = getctladdr(ctladdr);
  	if (ca == NULL)
***************
*** 1195,1201 ****
  	}
  
  	/*
! 	** Check to see if some bad guy can write this file
  	**
  	**	Group write checking could be more clever, e.g.,
  	**	guessing as to which groups are actually safe ("sys"
--- 1201,1207 ----
  	}
  
  	/*
! 	**  Check to see if some bad guy can write this file
  	**
  	**	Group write checking could be more clever, e.g.,
  	**	guessing as to which groups are actually safe ("sys"
diff -cr sendmail-8.9.1/src/safefile.c sendmail-8.9.2/src/safefile.c
*** sendmail-8.9.1/src/safefile.c	Fri Jun  5 14:51:02 1998
--- sendmail-8.9.2/src/safefile.c	Tue Dec 29 09:42:27 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)safefile.c	8.40 (Berkeley) 6/5/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)safefile.c	8.43 (Berkeley) 10/13/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 102,108 ****
  		if (bitset(S_ISUID, st->st_mode))
  #else
  		if (bitset(S_ISUID, st->st_mode) && st->st_uid != 0 &&
! 		    st->st_uid != TrustedFileUid)
  #endif
  		{
  			uid = st->st_uid;
--- 102,108 ----
  		if (bitset(S_ISUID, st->st_mode))
  #else
  		if (bitset(S_ISUID, st->st_mode) && st->st_uid != 0 &&
! 		    st->st_uid != TrustedUid)
  #endif
  		{
  			uid = st->st_uid;
***************
*** 206,212 ****
  
  			if (stbuf.st_uid == uid)
  				;
! 			else if (uid == 0 && TrustedFileUid != 0 && stbuf.st_uid == TrustedFileUid)
  				;
  			else
  			{
--- 206,212 ----
  
  			if (stbuf.st_uid == uid)
  				;
! 			else if (uid == 0 && stbuf.st_uid == TrustedUid)
  				;
  			else
  			{
***************
*** 299,305 ****
  		mode >>= 6;
  	else if (st->st_uid == uid)
  		;
! 	else if (uid == 0 && TrustedFileUid != 0 && st->st_uid == TrustedFileUid)
  		;
  	else
  	{
--- 299,305 ----
  		mode >>= 6;
  	else if (st->st_uid == uid)
  		;
! 	else if (uid == 0 && st->st_uid == TrustedUid)
  		;
  	else
  	{
***************
*** 328,334 ****
  			(int) st->st_uid, (int) st->st_nlink,
  			(u_long) st->st_mode, (u_long) mode);
  	if ((st->st_uid == uid || st->st_uid == 0 ||
! 	     st->st_uid == TrustedFileUid ||
  	     !bitset(SFF_MUSTOWN, flags)) &&
  	    (st->st_mode & mode) == mode)
  	{
--- 328,334 ----
  			(int) st->st_uid, (int) st->st_nlink,
  			(u_long) st->st_mode, (u_long) mode);
  	if ((st->st_uid == uid || st->st_uid == 0 ||
! 	     st->st_uid == TrustedUid ||
  	     !bitset(SFF_MUSTOWN, flags)) &&
  	    (st->st_mode & mode) == mode)
  	{
***************
*** 429,437 ****
  		}
  
  		/*
! 		** Let OS determine access to file if we are not
! 		** running as a privileged user.  This allows ACLs
! 		** to work.
  		*/
  		if (geteuid() != 0)
  			continue;
--- 429,437 ----
  		}
  
  		/*
! 		**  Let OS determine access to file if we are not
! 		**  running as a privileged user.  This allows ACLs
! 		**  to work.
  		*/
  		if (geteuid() != 0)
  			continue;
diff -cr sendmail-8.9.1/src/savemail.c sendmail-8.9.2/src/savemail.c
*** sendmail-8.9.1/src/savemail.c	Wed Jun 17 10:20:00 1998
--- sendmail-8.9.2/src/savemail.c	Tue Dec 29 09:42:20 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)savemail.c	8.138 (Berkeley) 6/17/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)savemail.c	8.139 (Berkeley) 8/5/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 91,98 ****
  			      RF_COPYPARSE|RF_SENDERADDR, '\0', NULL, e) == NULL)
  		{
  			syserr("553 Cannot parse Postmaster!");
! 			ExitStat = EX_SOFTWARE;
! 			finis();
  		}
  	}
  	e->e_to = NULL;
--- 91,97 ----
  			      RF_COPYPARSE|RF_SENDERADDR, '\0', NULL, e) == NULL)
  		{
  			syserr("553 Cannot parse Postmaster!");
! 			finis(TRUE, EX_SOFTWARE);
  		}
  	}
  	e->e_to = NULL;
diff -cr sendmail-8.9.1/src/sendmail.8 sendmail-8.9.2/src/sendmail.8
*** sendmail-8.9.1/src/sendmail.8	Tue May 19 16:36:06 1998
--- sendmail-8.9.2/src/sendmail.8	Tue Dec 29 09:42:19 1998
***************
*** 8,16 ****
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)sendmail.8	8.19 (Berkeley) 5/19/98
  .\"
! .Dd May 19, 1998
  .Dt SENDMAIL 8
  .Os BSD 4
  .Sh NAME
--- 8,16 ----
  .\" the sendmail distribution.
  .\"
  .\"
! .\"     @(#)sendmail.8	8.20 (Berkeley) 8/2/1998
  .\"
! .Dd August 2, 1998
  .Dt SENDMAIL 8
  .Os BSD 4
  .Sh NAME
***************
*** 277,282 ****
--- 277,285 ----
  This should only be used as a last resort
  for debugging mailer bugs.
  It will log a lot of data very quickly.
+ .It Fl -
+ Stop processing command flags and use the rest of the arguments
+ as addresses.
  .El
  .Ss Options
  There are also a number of processing options that may be set.
diff -cr sendmail-8.9.1/src/sendmail.h sendmail-8.9.2/src/sendmail.h
*** sendmail-8.9.1/src/sendmail.h	Wed Jun 24 10:54:16 1998
--- sendmail-8.9.2/src/sendmail.h	Tue Dec 29 09:42:19 1998
***************
*** 9,15 ****
   * the sendmail distribution.
   *
   *
!  *	@(#)sendmail.h	8.280 (Berkeley) 6/5/98
   */
  
  /*
--- 9,15 ----
   * the sendmail distribution.
   *
   *
!  *	@(#)sendmail.h	8.292 (Berkeley) 11/21/1998
   */
  
  /*
***************
*** 19,25 ****
  # ifdef _DEFINE
  # define EXTERN
  # ifndef lint
! static char SmailSccsId[] =	"@(#)sendmail.h	8.280		6/5/98";
  # endif
  # else /*  _DEFINE */
  # define EXTERN extern
--- 19,25 ----
  # ifdef _DEFINE
  # define EXTERN
  # ifndef lint
! static char SmailSccsId[] =	"@(#)sendmail.h	8.292		11/21/1998";
  # endif
  # else /*  _DEFINE */
  # define EXTERN extern
***************
*** 684,689 ****
--- 684,690 ----
  	char		*map_domain;	/* the (nominal) NIS domain */
  	char		*map_rebuild;	/* program to run to do auto-rebuild */
  	time_t		map_mtime;	/* last database modification time */
+ 	pid_t		map_pid;	/* PID of process which opened map */
  	int		map_lockfd;	/* auxiliary lock file descriptor */
  	short		map_specificity;	/* specificity of aliases */
  	MAP		*map_stack[MAXMAPSTACK];   /* list for stacked maps */
***************
*** 1008,1013 ****
--- 1009,1015 ----
  #define M87F_OUTER		0	/* outer context */
  #define M87F_NO8BIT		0x0001	/* can't have 8-bit in this section */
  #define M87F_DIGEST		0x0002	/* processing multipart/digest */
+ #define M87F_NO8TO7		0x0004	/* don't do 8->7 bit conversions */
  
  
  /*
***************
*** 1077,1082 ****
--- 1079,1085 ----
  #define VENDOR_SUN	2	/* Sun-native configuration file */
  #define VENDOR_HP	3	/* Hewlett-Packard specific config syntax */
  #define VENDOR_IBM	4	/* IBM specific config syntax */
+ #define VENDOR_SENDMAIL	5	/* Sendmail, Inc. specific config syntax */
  
  EXTERN int	VendorCode;	/* vendor-specific operation enhancements */
  
***************
*** 1097,1103 ****
  #define DBS_GROUPWRITABLEALIASFILE			0x00000010
  #define DBS_WORLDWRITABLEALIASFILE			0x00000020
  #define DBS_FORWARDFILEINUNSAFEDIRPATH			0x00000040
- #define DBS_INCLUDEFILEINUNSAFEDIRPATH			0x00000060
  #define DBS_MAPINUNSAFEDIRPATH				0x00000080
  #define DBS_LINKEDALIASFILEINWRITABLEDIR		0x00000100
  #define DBS_LINKEDCLASSFILEINWRITABLEDIR		0x00000200
--- 1100,1105 ----
***************
*** 1120,1125 ****
--- 1122,1128 ----
  #define DBS_INCLUDEFILEINUNSAFEDIRPATHSAFE		0x04000000
  #define DBS_RUNPROGRAMINUNSAFEDIRPATH			0x08000000
  #define DBS_RUNWRITABLEPROGRAM				0x10000000
+ #define DBS_INCLUDEFILEINUNSAFEDIRPATH			0x20000000
  
  /* struct defining such things */
  struct dbsval
***************
*** 1183,1189 ****
  EXTERN uid_t	DefUid;		/* default uid to run as */
  EXTERN gid_t	DefGid;		/* default gid to run as */
  EXTERN char	*DefUser;	/* default user to run as (from DefUid) */
! EXTERN uid_t	TrustedFileUid;	/* uid of trusted owner of files and dirs */
  EXTERN MODE_T	OldUmask;	/* umask when sendmail starts up */
  EXTERN int	Verbose;	/* set if blow-by-blow desired */
  EXTERN int	Errors;		/* set if errors (local to single pass) */
--- 1186,1192 ----
  EXTERN uid_t	DefUid;		/* default uid to run as */
  EXTERN gid_t	DefGid;		/* default gid to run as */
  EXTERN char	*DefUser;	/* default user to run as (from DefUid) */
! EXTERN uid_t	TrustedUid;	/* uid of trusted user for files and startup */
  EXTERN MODE_T	OldUmask;	/* umask when sendmail starts up */
  EXTERN int	Verbose;	/* set if blow-by-blow desired */
  EXTERN int	Errors;		/* set if errors (local to single pass) */
***************
*** 1221,1226 ****
--- 1224,1230 ----
  EXTERN int	PrivacyFlags;	/* privacy flags */
  EXTERN char	*ConfFile;	/* location of configuration file [conf.c] */
  EXTERN char	*PidFile;	/* location of proc id file [conf.c] */
+ EXTERN char	*ControlSocketName; /* control socket filename [control.c] */
  extern ADDRESS	NullAddress;	/* a null (template) address [main.c] */
  EXTERN long	WkClassFact;	/* multiplier for message class -> priority */
  EXTERN long	WkRecipFact;	/* multiplier for # of recipients -> priority */
***************
*** 1285,1294 ****
  EXTERN char	**ExternalEnviron;	/* input environment */
  EXTERN char	*UserEnviron[MAXUSERENVIRON + 1];
  					/* saved user environment */
  extern int	errno;
  
  /*
! ** Queue Run Limitations
  */
  struct queue_char
  {
--- 1289,1301 ----
  EXTERN char	**ExternalEnviron;	/* input environment */
  EXTERN char	*UserEnviron[MAXUSERENVIRON + 1];
  					/* saved user environment */
+ EXTERN int	MaxMimeHeaderLength;	/* maximum MIME header length */
+ EXTERN int	MaxMimeFieldLength;	/* maximum MIME field length */
+ 
  extern int	errno;
  
  /*
! **  Queue Run Limitations
  */
  struct queue_char
  {
***************
*** 1400,1406 ****
  extern void	makelower __P((char *));
  extern bool	rebuildaliases __P((MAP *, bool));
  extern void	readaliases __P((MAP *, FILE *, bool, bool));
! extern void	finis __P((void));
  extern void	setsender __P((char *, ENVELOPE *, char **, int, bool));
  extern void	xputs __P((const char *));
  extern void	logsender __P((ENVELOPE *, char *));
--- 1407,1413 ----
  extern void	makelower __P((char *));
  extern bool	rebuildaliases __P((MAP *, bool));
  extern void	readaliases __P((MAP *, FILE *, bool, bool));
! extern void	finis __P((bool, volatile int));
  extern void	setsender __P((char *, ENVELOPE *, char **, int, bool));
  extern void	xputs __P((const char *));
  extern void	logsender __P((ENVELOPE *, char *));
***************
*** 1428,1436 ****
  extern int	switch_map_find __P((char *, char *[], short []));
  extern void	shorten_hostname __P((char []));
  extern int	waitfor __P((pid_t));
! extern void	proc_list_add __P((pid_t));
  extern void	proc_list_drop __P((pid_t));
  extern void	proc_list_clear __P((void));
  extern void	buffer_errors __P((void));
  extern void	flush_errors __P((bool));
  extern void	putline __P((char *, MCI *));
--- 1435,1446 ----
  extern int	switch_map_find __P((char *, char *[], short []));
  extern void	shorten_hostname __P((char []));
  extern int	waitfor __P((pid_t));
! extern void	proc_list_add __P((pid_t, char *));
! extern void	proc_list_set __P((pid_t, char *));
  extern void	proc_list_drop __P((pid_t));
  extern void	proc_list_clear __P((void));
+ extern void	proc_list_display __P((FILE *));
+ extern void	proc_list_probe __P((void));
  extern void	buffer_errors __P((void));
  extern void	flush_errors __P((bool));
  extern void	putline __P((char *, MCI *));
***************
*** 1468,1473 ****
--- 1478,1485 ----
  extern pid_t	dowork __P((char *, bool, bool, ENVELOPE *));
  extern int	drop_privileges __P((bool));
  extern void	fill_fd __P((int, char *));
+ extern void	closecontrolsocket  __P((bool));
+ extern void	clrcontrol  __P((void));
  
  extern const char	*errstring __P((int));
  extern sigfunc_t	setsignal __P((int, sigfunc_t));
***************
*** 1491,1496 ****
--- 1503,1509 ----
  extern void		message __P((const char *, ...));
  extern void		nmessage __P((const char *, ...));
  extern void		setproctitle __P((const char *, ...));
+ extern void		sm_setproctitle __P((bool, const char *, ...));
  extern void		sm_syslog __P((int, const char *, const char *, ...));
  
  #if !HASSNPRINTF
diff -cr sendmail-8.9.1/src/sendmail.hf sendmail-8.9.2/src/sendmail.hf
*** sendmail-8.9.1/src/sendmail.hf	Tue May 19 16:36:05 1998
--- sendmail-8.9.2/src/sendmail.hf	Tue Dec 29 09:42:18 1998
***************
*** 9,15 ****
  cpyr	forth in the LICENSE file which can be found at the top level of
  cpyr	the sendmail distribution.
  cpyr
! cpyr	@(#)sendmail.hf	8.16 (Berkeley) 5/19/98
  cpyr
  smtp	Topics:
  smtp		HELO	EHLO	MAIL	RCPT	DATA
--- 9,15 ----
  cpyr	forth in the LICENSE file which can be found at the top level of
  cpyr	the sendmail distribution.
  cpyr
! cpyr	@(#)sendmail.hf	8.18 (Berkeley) 11/19/1998
  cpyr
  smtp	Topics:
  smtp		HELO	EHLO	MAIL	RCPT	DATA
***************
*** 117,119 ****
--- 117,124 ----
  -bt	/map mapname key :look up `key' in the indicated `mapname'.
  -bt	rules addr	 :run the indicated address through the named rules.
  -bt			  Rules can be a comma separated list of rules.
+ control	Help for smcontrol:
+ control	help		This message.
+ control	restart		Restart sendmail.
+ control	shutdown	Shutdown sendmail.
+ control	status		Show sendmail status.
diff -cr sendmail-8.9.1/src/snprintf.c sendmail-8.9.2/src/snprintf.c
*** sendmail-8.9.1/src/snprintf.c	Thu Jun  4 14:32:02 1998
--- sendmail-8.9.2/src/snprintf.c	Tue Dec 29 09:42:27 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)snprintf.c	8.11 (Berkeley) 6/4/98";
  #endif /* not lint */
  
  #include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)snprintf.c	8.12 (Berkeley) 10/13/1998";
  #endif /* not lint */
  
  #include "sendmail.h"
***************
*** 367,376 ****
  	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
--- 367,376 ----
  	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
diff -cr sendmail-8.9.1/src/srvrsmtp.c sendmail-8.9.2/src/srvrsmtp.c
*** sendmail-8.9.1/src/srvrsmtp.c	Mon Jun 15 10:31:47 1998
--- sendmail-8.9.2/src/srvrsmtp.c	Tue Dec 29 09:42:21 1998
***************
*** 14,22 ****
  
  #ifndef lint
  #if SMTP
! static char sccsid[] = "@(#)srvrsmtp.c	8.181 (Berkeley) 6/15/98 (with SMTP)";
  #else
! static char sccsid[] = "@(#)srvrsmtp.c	8.181 (Berkeley) 6/15/98 (without SMTP)";
  #endif
  #endif /* not lint */
  
--- 14,22 ----
  
  #ifndef lint
  #if SMTP
! static char sccsid[] = "@(#)srvrsmtp.c	8.187 (Berkeley) 10/23/1998 (with SMTP)";
  #else
! static char sccsid[] = "@(#)srvrsmtp.c	8.187 (Berkeley) 10/23/1998 (without SMTP)";
  #endif
  #endif /* not lint */
  
***************
*** 127,133 ****
  	char *id;
  	volatile int nrcpts = 0;	/* number of RCPT commands */
  	bool doublequeue;
! 	bool discard;
  	volatile int badcommands = 0;	/* count of bad commands */
  	volatile int nverifies = 0;	/* count of VRFY/EXPN commands */
  	volatile int n_etrn = 0;	/* count of ETRN commands */
--- 127,133 ----
  	char *id;
  	volatile int nrcpts = 0;	/* number of RCPT commands */
  	bool doublequeue;
! 	volatile bool discard;
  	volatile int badcommands = 0;	/* count of bad commands */
  	volatile int nverifies = 0;	/* count of VRFY/EXPN commands */
  	volatile int n_etrn = 0;	/* count of ETRN commands */
***************
*** 163,169 ****
  	/* check_relay may have set discard bit, save for later */
  	discard = bitset(EF_DISCARD, e->e_flags);
  
! 	setproctitle("server %s startup", CurSmtpClient);
  #if DAEMON
  	if (LogLevel > 11)
  	{
--- 163,169 ----
  	/* check_relay may have set discard bit, save for later */
  	discard = bitset(EF_DISCARD, e->e_flags);
  
! 	sm_setproctitle(TRUE, "server %s startup", CurSmtpClient);
  #if DAEMON
  	if (LogLevel > 11)
  	{
***************
*** 222,228 ****
  
  		/* read the input line */
  		SmtpPhase = "server cmd read";
! 		setproctitle("server %s cmd read", CurSmtpClient);
  		p = sfgets(inp, sizeof inp, InChannel, TimeOuts.to_nextcommand,
  				SmtpPhase);
  
--- 222,228 ----
  
  		/* read the input line */
  		SmtpPhase = "server cmd read";
! 		sm_setproctitle(TRUE, "server %s cmd read", CurSmtpClient);
  		p = sfgets(inp, sizeof inp, InChannel, TimeOuts.to_nextcommand,
  				SmtpPhase);
  
***************
*** 243,257 ****
  				CurSmtpClient);
  
  			/*
! 			** If have not accepted mail (DATA), do not bounce
! 			** bad addresses back to sender.
  			*/
  			if (bitset(EF_CLRQUEUE, e->e_flags))
  				e->e_sendqueue = NULL;
  
  			if (InChild)
  				ExitStat = EX_QUIT;
! 			finis();
  		}
  
  		/* clean up end of line */
--- 243,257 ----
  				CurSmtpClient);
  
  			/*
! 			**  If have not accepted mail (DATA), do not bounce
! 			**  bad addresses back to sender.
  			*/
  			if (bitset(EF_CLRQUEUE, e->e_flags))
  				e->e_sendqueue = NULL;
  
  			if (InChild)
  				ExitStat = EX_QUIT;
! 			finis(TRUE, ExitStat);
  		}
  
  		/* clean up end of line */
***************
*** 267,275 ****
  				inp);
  
  		if (e->e_id == NULL)
! 			setproctitle("%s: %.80s", CurSmtpClient, inp);
  		else
! 			setproctitle("%s %s: %.80s", e->e_id, CurSmtpClient, inp);
  
  		/* break off command */
  		for (p = inp; isascii(*p) && isspace(*p); p++)
--- 267,275 ----
  				inp);
  
  		if (e->e_id == NULL)
! 			sm_setproctitle(TRUE, "%s: %.80s", CurSmtpClient, inp);
  		else
! 			sm_setproctitle(TRUE, "%s %s: %.80s", e->e_id, CurSmtpClient, inp);
  
  		/* break off command */
  		for (p = inp; isascii(*p) && isspace(*p); p++)
***************
*** 457,463 ****
  			{
  				errno = 0;
  				syserr("503 Nested MAIL command: MAIL %s", p);
! 				finis();
  			}
  
  			/* make sure we know who the sending host is */
--- 457,463 ----
  			{
  				errno = 0;
  				syserr("503 Nested MAIL command: MAIL %s", p);
! 				finis(TRUE, ExitStat);
  			}
  
  			/* make sure we know who the sending host is */
***************
*** 498,504 ****
  				goto undo_subproc_no_pm;
  			nrcpts = 0;
  			e->e_flags |= EF_LOGSENDER|EF_CLRQUEUE;
! 			setproctitle("%s %s: %.80s", e->e_id, CurSmtpClient, inp);
  
  			/* child -- go do the processing */
  			if (setjmp(TopFrame) > 0)
--- 498,504 ----
  				goto undo_subproc_no_pm;
  			nrcpts = 0;
  			e->e_flags |= EF_LOGSENDER|EF_CLRQUEUE;
! 			sm_setproctitle(TRUE, "%s %s: %.80s", e->e_id, CurSmtpClient, inp);
  
  			/* child -- go do the processing */
  			if (setjmp(TopFrame) > 0)
***************
*** 512,518 ****
  					QuickAbort = FALSE;
  					SuprErrs = TRUE;
  					e->e_flags &= ~EF_FATALERRS;
! 					finis();
  				}
  				break;
  			}
--- 512,518 ----
  					QuickAbort = FALSE;
  					SuprErrs = TRUE;
  					e->e_flags &= ~EF_FATALERRS;
! 					finis(TRUE, ExitStat);
  				}
  				break;
  			}
***************
*** 633,640 ****
  			if (p == NULL)
  				break;
  			a = parseaddr(p, NULLADDR, RF_COPYALL, ' ', &delimptr, e);
! 			if (a == NULL || Errors > 0)
  				break;
  			if (delimptr != NULL && *delimptr != '\0')
  				*delimptr++ = '\0';
  
--- 633,646 ----
  			if (p == NULL)
  				break;
  			a = parseaddr(p, NULLADDR, RF_COPYALL, ' ', &delimptr, e);
! 			if (Errors > 0)
! 				break;
! 			if (a == NULL)
! 			{
! 				usrerr("501 Missing recipient");
  				break;
+ 			}
+ 
  			if (delimptr != NULL && *delimptr != '\0')
  				*delimptr++ = '\0';
  
***************
*** 808,815 ****
  
  				if (!shouldqueue(e->e_msgpriority, e->e_ctime))
  				{
- 					extern pid_t dowork __P((char *, bool, bool, ENVELOPE *));
- 
  					unlockqueue(e);
  					(void) dowork(id, TRUE, TRUE, e);
  				}
--- 814,819 ----
***************
*** 818,824 ****
    abortmessage:
  			/* if in a child, pop back to our parent */
  			if (InChild)
! 				finis();
  
  			/* clean up a bit */
  			gotmail = FALSE;
--- 822,828 ----
    abortmessage:
  			/* if in a child, pop back to our parent */
  			if (InChild)
! 				finis(TRUE, ExitStat);
  
  			/* clean up a bit */
  			gotmail = FALSE;
***************
*** 837,843 ****
  			e->e_sendqueue = NULL;
  			e->e_flags |= EF_CLRQUEUE;
  			if (InChild)
! 				finis();
  
  			/* clean up a bit */
  			gotmail = FALSE;
--- 841,847 ----
  			e->e_sendqueue = NULL;
  			e->e_flags |= EF_CLRQUEUE;
  			if (InChild)
! 				finis(TRUE, ExitStat);
  
  			/* clean up a bit */
  			gotmail = FALSE;
***************
*** 916,922 ****
  				vrfyqueue = vrfyqueue->q_next;
  			}
  			if (InChild)
! 				finis();
  			break;
  
  		  case CMDETRN:		/* etrn -- force queue flush */
--- 920,926 ----
  				vrfyqueue = vrfyqueue->q_next;
  			}
  			if (InChild)
! 				finis(TRUE, ExitStat);
  			break;
  
  		  case CMDETRN:		/* etrn -- force queue flush */
***************
*** 992,998 ****
  				sm_syslog(LOG_INFO, NULL,
  					"Null connection from %.100s",
  					CurSmtpClient);
! 			finis();
  
  		  case CMDVERB:		/* set verbose mode */
  			if (bitset(PRIV_NOEXPN, PrivacyFlags) ||
--- 996,1002 ----
  				sm_syslog(LOG_INFO, NULL,
  					"Null connection from %.100s",
  					CurSmtpClient);
! 			finis(TRUE, ExitStat);
  
  		  case CMDVERB:		/* set verbose mode */
  			if (bitset(PRIV_NOEXPN, PrivacyFlags) ||
***************
*** 1417,1423 ****
  			auto int st;
  
  			/* parent -- wait for child to complete */
! 			setproctitle("server %s child wait", CurSmtpClient);
  			st = waitfor(childpid);
  			if (st == -1)
  				syserr("451 %s: lost child", label);
--- 1421,1427 ----
  			auto int st;
  
  			/* parent -- wait for child to complete */
! 			sm_setproctitle(TRUE, "server %s child wait", CurSmtpClient);
  			st = waitfor(childpid);
  			if (st == -1)
  				syserr("451 %s: lost child", label);
***************
*** 1429,1435 ****
  			if (WEXITSTATUS(st) == EX_QUIT)
  			{
  				disconnect(1, e);
! 				finis();
  			}
  
  			/* restore the child signal */
--- 1433,1439 ----
  			if (WEXITSTATUS(st) == EX_QUIT)
  			{
  				disconnect(1, e);
! 				finis(TRUE, ExitStat);
  			}
  
  			/* restore the child signal */
***************
*** 1447,1456 ****
  			(void) releasesignal(SIGCHLD);
  		}
  	}
- 
- 	/* open alias database */
- 	initmaps(FALSE, e);
- 
  	return (0);
  }
  
--- 1451,1456 ----
diff -cr sendmail-8.9.1/src/stab.c sendmail-8.9.2/src/stab.c
*** sendmail-8.9.1/src/stab.c	Tue May 19 16:36:05 1998
--- sendmail-8.9.2/src/stab.c	Tue Dec 29 09:42:18 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)stab.c	8.19 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)stab.c	8.19 (Berkeley) 5/19/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/stats.c sendmail-8.9.2/src/stats.c
*** sendmail-8.9.1/src/stats.c	Tue May 19 16:36:02 1998
--- sendmail-8.9.2/src/stats.c	Tue Dec 29 09:42:14 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)stats.c	8.22 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)stats.c	8.22 (Berkeley) 5/19/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/sysexits.c sendmail-8.9.2/src/sysexits.c
*** sendmail-8.9.1/src/sysexits.c	Sun May 24 14:03:36 1998
--- sendmail-8.9.2/src/sysexits.c	Tue Dec 29 09:42:14 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)sysexits.c	8.13 (Berkeley) 5/24/98";
  #endif /* not lint */
  
  #include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)sysexits.c	8.13 (Berkeley) 5/24/1998";
  #endif /* not lint */
  
  #include "sendmail.h"
diff -cr sendmail-8.9.1/src/trace.c sendmail-8.9.2/src/trace.c
*** sendmail-8.9.1/src/trace.c	Tue May 19 16:36:01 1998
--- sendmail-8.9.2/src/trace.c	Tue Dec 29 09:42:13 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)trace.c	8.12 (Berkeley) 5/19/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)trace.c	8.12 (Berkeley) 5/19/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
diff -cr sendmail-8.9.1/src/udb.c sendmail-8.9.2/src/udb.c
*** sendmail-8.9.1/src/udb.c	Wed Jun 24 11:26:47 1998
--- sendmail-8.9.2/src/udb.c	Tue Dec 29 09:42:25 1998
***************
*** 14,22 ****
  
  #ifndef lint
  #if USERDB
! static char sccsid [] = "@(#)udb.c	8.66 (Berkeley) 6/18/98 (with USERDB)";
  #else
! static char sccsid [] = "@(#)udb.c	8.66 (Berkeley) 6/18/98 (without USERDB)";
  #endif
  #endif
  
--- 14,22 ----
  
  #ifndef lint
  #if USERDB
! static char sccsid [] = "@(#)udb.c	8.70 (Berkeley) 12/21/1998 (with USERDB)";
  #else
! static char sccsid [] = "@(#)udb.c	8.70 (Berkeley) 12/21/1998 (without USERDB)";
  #endif
  #endif
  
***************
*** 49,54 ****
--- 49,55 ----
  {
  	char	*udb_spec;		/* string version of spec */
  	int	udb_type;		/* type of entry */
+ 	pid_t	udb_pid;		/* PID of process which opened db */
  	char	*udb_default;		/* default host for outgoing mail */
  	union
  	{
***************
*** 91,97 ****
  #define MAXUDBENT	10	/* maximum number of UDB entries */
  
  
! struct option
  {
  	char	*name;
  	char	*val;
--- 92,98 ----
  #define MAXUDBENT	10	/* maximum number of UDB entries */
  
  
! struct udb_option
  {
  	char	*name;
  	char	*val;
***************
*** 140,145 ****
--- 141,147 ----
  	register struct udbent *up;
  	int keylen;
  	int naddrs;
+ 	char *user;
  	char keybuf[MAXKEY];
  
  	bzero(&key, sizeof key);
***************
*** 164,183 ****
  	if (UdbSpec == NULL || UdbSpec[0] == '\0')
  		return EX_OK;
  
  	/* short circuit name begins with '\\' since it can't possibly match */
! 	if (a->q_user[0] == '\\')
  		return EX_OK;
  
  	/* if name is too long, assume it won't match */
! 	if (strlen(a->q_user) > (SIZE_T) sizeof keybuf - 12)
  		return EX_OK;
  
  	/* if name begins with a colon, it indicates our metadata */
! 	if (a->q_user[0] == ':')
  		return EX_OK;
  
  	/* build actual database key */
! 	(void) strcpy(keybuf, a->q_user);
  	(void) strcat(keybuf, ":maildrop");
  	keylen = strlen(keybuf);
  
--- 166,189 ----
  	if (UdbSpec == NULL || UdbSpec[0] == '\0')
  		return EX_OK;
  
+ 	/* extract user to do userdb matching on */
+ 	user = a->q_user;
+ 
  	/* short circuit name begins with '\\' since it can't possibly match */
! 	/* (might want to treat this as unquoted instead) */
! 	if (user[0] == '\\')
  		return EX_OK;
  
  	/* if name is too long, assume it won't match */
! 	if (strlen(user) > (SIZE_T) sizeof keybuf - 12)
  		return EX_OK;
  
  	/* if name begins with a colon, it indicates our metadata */
! 	if (user[0] == ':')
  		return EX_OK;
  
  	/* build actual database key */
! 	(void) strcpy(keybuf, user);
  	(void) strcat(keybuf, ":maildrop");
  	keylen = strlen(keybuf);
  
***************
*** 222,229 ****
--- 228,240 ----
  #else
  			i = 0;
  			if (dbc == NULL &&
+ # if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+ 			    (errno = (*up->udb_dbp->cursor)(up->udb_dbp,
+ 							    NULL, &dbc, 0)) != 0)
+ # else
  			    (errno = (*up->udb_dbp->cursor)(up->udb_dbp,
  							    NULL, &dbc)) != 0)
+ # endif
  				i = -1;
  			if (i != 0 || dbc == NULL ||
  			    (errno = dbc->c_get(dbc, &key,
***************
*** 892,899 ****
  		register struct hostent *h;
  		char *mxhosts[MAXMXHOSTS + 1];
  # endif
! 		struct option opts[MAXUDBOPTS + 1];
! 		extern int _udb_parsespec __P((char *, struct option [], int));
  
  		while (*p == ' ' || *p == '\t' || *p == ',')
  			p++;
--- 903,910 ----
  		register struct hostent *h;
  		char *mxhosts[MAXMXHOSTS + 1];
  # endif
! 		struct udb_option opts[MAXUDBOPTS + 1];
! 		extern int _udb_parsespec __P((char *, struct udb_option [], int));
  
  		while (*p == ' ' || *p == '\t' || *p == ',')
  			p++;
***************
*** 972,977 ****
--- 983,989 ----
  				if (h == NULL)
  					continue;
  				up->udb_type = UDB_REMOTE;
+ 				up->udb_pid = getpid();
  				up->udb_addr.sin_family = h->h_addrtype;
  				bcopy(h->h_addr_list[0],
  				      (char *) &up->udb_addr.sin_addr,
***************
*** 993,998 ****
--- 1005,1011 ----
  
  		  case '@':	/* forward to remote host */
  			up->udb_type = UDB_FORWARD;
+ 			up->udb_pid = getpid();
  			up->udb_fwdhost = spec + 1;
  			ents++;
  			up++;
***************
*** 1004,1009 ****
--- 1017,1023 ----
  			if (strcasecmp(spec, "hesiod") != 0)
  				goto badspec;
  			up->udb_type = UDB_HESIOD;
+ 			up->udb_pid = getpid();
  			ents++;
  			up++;
  			break;
***************
*** 1066,1072 ****
--- 1080,1096 ----
  					free(up->udb_dbname);
  				break;
  			}
+ 			if (tTd(28, 1))
+ 			{
+ #if DB_VERSION_MAJOR < 2
+ 				printf("_udbx_init: dbopen(%s)\n",
+ #else
+ 				printf("_udbx_init: db_open(%s)\n",
+ #endif
+ 					up->udb_dbname);
+ 			}
  			up->udb_type = UDB_DBFETCH;
+ 			up->udb_pid = getpid();
  			ents++;
  			up++;
  			break;
***************
*** 1138,1143 ****
--- 1162,1176 ----
  #else
  			errno = (*up->udb_dbp->close)(up->udb_dbp, 0);
  #endif
+ 			if (tTd(28, 1))
+ 			{
+ #if DB_VERSION_MAJOR < 2
+ 				printf("_udbx_init: db->close(%s)\n",
+ #else
+ 				printf("_udbx_init: db->close(%s)\n",
+ #endif
+ 					up->udb_dbname);
+ 			}
  		}
  	}
  #endif
***************
*** 1147,1153 ****
  int
  _udb_parsespec(udbspec, opt, maxopts)
  	char *udbspec;
! 	struct option opt[];
  	int maxopts;
  {
  	register char *spec;
--- 1180,1186 ----
  int
  _udb_parsespec(udbspec, opt, maxopts)
  	char *udbspec;
! 	struct udb_option opt[];
  	int maxopts;
  {
  	register char *spec;
***************
*** 1172,1177 ****
--- 1205,1256 ----
  			opt[optnum].val = ++p;
  	}
  	return optnum;
+ }
+ /*
+ **  _UDBX_CLOSE -- close all file based UDB entries.
+ **
+ **	Parameters:
+ **		none
+ **
+ **	Returns:
+ **		none
+ */
+ void
+ _udbx_close()
+ {
+ 	pid_t pid;
+ 	struct udbent *up;
+ 
+ 	if (!UdbInitialized)
+ 		return;
+ 
+ 	pid = getpid();
+ 
+ 	for (up = UdbEnts; up->udb_type != UDB_EOLIST; up++)
+ 	{
+ 		if (up->udb_pid != pid)
+ 			continue;
+ 		
+ #ifdef NEWDB
+ 		if (up->udb_type == UDB_DBFETCH)
+ 		{
+ #if DB_VERSION_MAJOR < 2
+ 			(*up->udb_dbp->close)(up->udb_dbp);
+ #else
+ 			errno = (*up->udb_dbp->close)(up->udb_dbp, 0);
+ #endif
+ 		}
+ 		if (tTd(28, 1))
+ 		{
+ #if DB_VERSION_MAJOR < 2
+ 			printf("_udbx_init: db->close(%s)\n",
+ #else
+ 			printf("_udbx_init: db->close(%s)\n",
+ #endif
+ 				up->udb_dbname);
+ 		}
+ #endif
+ 	}
  }
  
  #ifdef HESIOD
diff -cr sendmail-8.9.1/src/useful.h sendmail-8.9.2/src/useful.h
*** sendmail-8.9.1/src/useful.h	Tue May 19 16:36:02 1998
--- sendmail-8.9.2/src/useful.h	Tue Dec 29 09:42:14 1998
***************
*** 9,15 ****
   * the sendmail distribution.
   *
   *
!  *	@(#)useful.h	8.12 (Berkeley) 5/19/98
   */
  
  # include <sys/types.h>
--- 9,15 ----
   * the sendmail distribution.
   *
   *
!  *	@(#)useful.h	8.12 (Berkeley) 5/19/1998
   */
  
  # include <sys/types.h>
diff -cr sendmail-8.9.1/src/usersmtp.c sendmail-8.9.2/src/usersmtp.c
*** sendmail-8.9.1/src/usersmtp.c	Thu Jul  2 10:49:58 1998
--- sendmail-8.9.2/src/usersmtp.c	Tue Dec 29 09:42:14 1998
***************
*** 14,22 ****
  
  #ifndef lint
  #if SMTP
! static char sccsid[] = "@(#)usersmtp.c	8.104 (Berkeley) 6/30/98 (with SMTP)";
  #else
! static char sccsid[] = "@(#)usersmtp.c	8.104 (Berkeley) 6/30/98 (without SMTP)";
  #endif
  #endif /* not lint */
  
--- 14,22 ----
  
  #ifndef lint
  #if SMTP
! static char sccsid[] = "@(#)usersmtp.c	8.108 (Berkeley) 10/6/1998 (with SMTP)";
  #else
! static char sccsid[] = "@(#)usersmtp.c	8.108 (Berkeley) 10/6/1998 (without SMTP)";
  #endif
  #endif /* not lint */
  
***************
*** 118,124 ****
  	*/
  
  	SmtpPhase = mci->mci_phase = "client greeting";
! 	setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_initial, esmtp_check);
  	if (r < 0)
  		goto tempfail1;
--- 118,124 ----
  	*/
  
  	SmtpPhase = mci->mci_phase = "client greeting";
! 	sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_initial, esmtp_check);
  	if (r < 0)
  		goto tempfail1;
***************
*** 151,157 ****
  		smtpmessage("HELO %s", m, mci, MyHostName);
  		SmtpPhase = mci->mci_phase = "client HELO";
  	}
! 	setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_helo, helo_options);
  	if (r < 0)
  		goto tempfail1;
--- 151,157 ----
  		smtpmessage("HELO %s", m, mci, MyHostName);
  		SmtpPhase = mci->mci_phase = "client HELO";
  	}
! 	sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_helo, helo_options);
  	if (r < 0)
  		goto tempfail1;
***************
*** 439,445 ****
  			*bufp == '@' ? ',' : ':', bufp, optbuf);
  	}
  	SmtpPhase = mci->mci_phase = "client MAIL";
! 	setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_mail, NULL);
  	if (r < 0)
  	{
--- 439,445 ----
  			*bufp == '@' ? ',' : ':', bufp, optbuf);
  	}
  	SmtpPhase = mci->mci_phase = "client MAIL";
! 	sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_mail, NULL);
  	if (r < 0)
  	{
***************
*** 580,586 ****
  	smtpmessage("RCPT To:<%s>%s", m, mci, to->q_user, optbuf);
  
  	SmtpPhase = mci->mci_phase = "client RCPT";
! 	setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_rcpt, NULL);
  	to->q_rstatus = newstr(SmtpReplyBuffer);
  	to->q_status = smtptodsn(r);
--- 580,586 ----
  	smtpmessage("RCPT To:<%s>%s", m, mci, to->q_user, optbuf);
  
  	SmtpPhase = mci->mci_phase = "client RCPT";
! 	sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_rcpt, NULL);
  	to->q_rstatus = newstr(SmtpReplyBuffer);
  	to->q_status = smtptodsn(r);
***************
*** 661,667 ****
  	/* send the command and check ok to proceed */
  	smtpmessage("DATA", m, mci);
  	SmtpPhase = mci->mci_phase = "client DATA 354";
! 	setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_datainit, NULL);
  	if (r < 0 || REPLYTYPE(r) == 4)
  	{
--- 661,667 ----
  	/* send the command and check ok to proceed */
  	smtpmessage("DATA", m, mci);
  	SmtpPhase = mci->mci_phase = "client DATA 354";
! 	sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	r = reply(m, mci, e, TimeOuts.to_datainit, NULL);
  	if (r < 0 || REPLYTYPE(r) == 4)
  	{
***************
*** 741,747 ****
  
  	/* check for the results of the transaction */
  	SmtpPhase = mci->mci_phase = "client DATA status";
! 	setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	if (bitnset(M_LMTP, m->m_flags))
  		return EX_OK;
  	r = reply(m, mci, e, TimeOuts.to_datafinal, NULL);
--- 741,747 ----
  
  	/* check for the results of the transaction */
  	SmtpPhase = mci->mci_phase = "client DATA status";
! 	sm_setproctitle(TRUE, "%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
  	if (bitnset(M_LMTP, m->m_flags))
  		return EX_OK;
  	r = reply(m, mci, e, TimeOuts.to_datafinal, NULL);
***************
*** 974,980 ****
  	for (;;)
  	{
  		register char *p;
- 		extern time_t curtime __P((void));
  
  		/* actually do the read */
  		if (e->e_xfp != NULL)
--- 974,979 ----
***************
*** 1008,1014 ****
  			oldholderrs = HoldErrs;
  			HoldErrs = TRUE;
  			usrerr("451 reply: read error from %s", CurHostName);
! 			mci_setstat(mci, EX_TEMPFAIL, "4.4.2", MsgBuf);
  
  			/* if debugging, pause so we can see state */
  			if (tTd(18, 100))
--- 1007,1016 ----
  			oldholderrs = HoldErrs;
  			HoldErrs = TRUE;
  			usrerr("451 reply: read error from %s", CurHostName);
! 
! 			/* errors on QUIT should not be persistent */
! 			if (strncmp(SmtpMsgBuffer, "QUIT", 4) != 0)
! 				mci_setstat(mci, EX_TEMPFAIL, "4.4.2", MsgBuf);
  
  			/* if debugging, pause so we can see state */
  			if (tTd(18, 100))
***************
*** 1032,1038 ****
  					wbufleft -= plen;
  				}
  				snprintf(p, wbufleft, "reply(%.100s) during %s",
! 					CurHostName, SmtpPhase);
  				checkfd012(wbuf);
  			}
  #endif
--- 1034,1041 ----
  					wbufleft -= plen;
  				}
  				snprintf(p, wbufleft, "reply(%.100s) during %s",
! 					 CurHostName == NULL ? "NO_HOST" : CurHostName,
! 					 SmtpPhase);
  				checkfd012(wbuf);
  			}
  #endif
diff -cr sendmail-8.9.1/src/util.c sendmail-8.9.2/src/util.c
*** sendmail-8.9.1/src/util.c	Wed Jul  1 19:22:50 1998
--- sendmail-8.9.2/src/util.c	Tue Dec 29 09:42:21 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)util.c	8.159 (Berkeley) 7/1/98";
  #endif /* not lint */
  
  # include "sendmail.h"
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)util.c	8.167 (Berkeley) 12/1/1998";
  #endif /* not lint */
  
  # include "sendmail.h"
***************
*** 174,179 ****
--- 174,355 ----
  		return TRUE;
  }
  /*
+ **  SHORTEN_RFC822_STRING -- Truncate and rebalance an RFC822 string
+ **
+ **	Arbitratily shorten (in place) an RFC822 string and rebalance
+ **	comments and quotes.
+ **
+ **	Parameters:
+ **		string -- the string to shorten
+ **		length -- the maximum size, 0 if no maximum
+ **
+ **	Returns:
+ **		TRUE if string is changed, FALSE otherwise
+ **
+ **	Side Effects:
+ **		Changes string in place, possibly resulting
+ **		in a shorter string.
+ */
+ 
+ bool
+ shorten_rfc822_string(string, length)
+ 	char *string;
+ 	size_t length;
+ {
+ 	bool backslash = FALSE;
+ 	bool modified = FALSE;
+ 	bool quoted = FALSE;
+ 	size_t slen;
+ 	int parencount = 0;
+ 	char *ptr = string;
+ 	
+ 	/*
+ 	**  If have to rebalance an already short enough string,
+ 	**  need to do it within allocated space.
+ 	*/
+ 	slen = strlen(string);
+ 	if (length == 0 || slen < length)
+ 		length = slen;
+ 
+ 	while (*ptr != '\0')
+ 	{
+ 		if (backslash)
+ 		{
+ 			backslash = FALSE;
+ 			goto increment;
+ 		}
+ 
+ 		if (*ptr == '\\')
+ 			backslash = TRUE;
+ 		else if (*ptr == '(')
+ 		{
+ 			if (!quoted)
+ 				parencount++;
+ 		}
+ 		else if (*ptr == ')')
+ 		{
+ 			if (--parencount < 0)
+ 				parencount = 0;
+ 		}
+ 		
+ 		/* Inside a comment, quotes don't matter */
+ 		if (parencount <= 0 && *ptr == '"')
+ 			quoted = !quoted;
+ 
+ increment:
+ 		/* Check for sufficient space for next character */
+ 		if (length - (ptr - string) <= ((backslash ? 1 : 0) +
+ 						parencount +
+ 						(quoted ? 1 : 0)))
+ 		{
+ 			/* Not enough, backtrack */
+ 			if (*ptr == '\\')
+ 				backslash = FALSE;
+ 			else if (*ptr == '(' && !quoted)
+ 				parencount--;
+ 			else if (*ptr == '"' && parencount == 0)
+ 				quoted = FALSE;
+ 			break;
+ 		}
+ 		ptr++;
+ 	}
+ 
+ 	/* Rebalance */
+ 	while (parencount-- > 0)
+ 	{
+ 		if (*ptr != ')')
+ 		{
+ 			modified = TRUE;
+ 			*ptr = ')';
+ 		}
+ 		ptr++;
+ 	}
+ 	if (quoted)
+ 	{
+ 		if (*ptr != '"')
+ 		{
+ 			modified = TRUE;
+ 			*ptr = '"';
+ 		}
+ 		ptr++;
+ 	}
+ 	if (*ptr != '\0')
+ 	{
+ 		modified = TRUE;
+ 		*ptr = '\0';
+ 	}
+ 	return modified;
+ }
+ /*
+ **  FIND_CHARACTER -- find an unquoted character in an RFC822 string
+ **
+ **	Find an unquoted, non-commented character in an RFC822
+ **	string and return a pointer to its location in the
+ **	string.
+ **
+ **	Parameters:
+ **		string -- the string to search
+ **		character -- the character to find
+ **
+ **	Returns:
+ **		pointer to the character, or
+ **		a pointer to the end of the line if character is not found
+ */
+ 
+ char *
+ find_character(string, character)
+ 	char *string;
+ 	char character;
+ {
+ 	bool backslash = FALSE;
+ 	bool quoted = FALSE;
+ 	int parencount = 0;
+ 		
+ 	while (string != NULL && *string != '\0')
+ 	{
+ 		if (backslash)
+ 		{
+ 			backslash = FALSE;
+ 			if (!quoted && character == '\\' && *string == '\\')
+ 				break;
+ 			string++;
+ 			continue;
+ 		}
+ 		switch (*string)
+ 		{
+ 		  case '\\':
+ 			backslash = TRUE;
+ 			break;
+ 			
+ 		  case '(':
+ 			if (!quoted)
+ 				parencount++;
+ 			break;
+ 			
+ 		  case ')':
+ 			if (--parencount < 0)
+ 				parencount = 0;
+ 			break;
+ 		}
+ 		
+ 		/* Inside a comment, nothing matters */
+ 		if (parencount > 0)
+ 		{
+ 			string++;
+ 			continue;
+ 		}
+ 		
+ 		if (*string == '"')
+ 			quoted = !quoted;
+ 		else if (*string == character && !quoted)
+ 			break;
+ 		string++;
+ 	}
+ 
+ 	/* Return pointer to the character */
+ 	return string;
+ }
+ /*
  **  XALLOC -- Allocate memory and bitch wildly on failure.
  **
  **	THIS IS A CLUDGE.  This should be made to give a proper
***************
*** 1846,1852 ****
  **		none
  */
  
! static pid_t	*ProcListVec	= NULL;
  static int	ProcListSize	= 0;
  
  #define NO_PID		((pid_t) 0)
--- 2022,2034 ----
  **		none
  */
  
! struct procs
! {
! 	pid_t	proc_pid;
! 	char 	*proc_task;
! };
! 
! static struct procs	*ProcListVec	= NULL;
  static int	ProcListSize	= 0;
  
  #define NO_PID		((pid_t) 0)
***************
*** 1855,1869 ****
  #endif
  
  void
! proc_list_add(pid)
  	pid_t pid;
  {
  	int i;
- 	extern void proc_list_probe __P((void));
  
  	for (i = 0; i < ProcListSize; i++)
  	{
! 		if (ProcListVec[i] == NO_PID)
  			break;
  	}
  	if (i >= ProcListSize)
--- 2037,2051 ----
  #endif
  
  void
! proc_list_add(pid, task)
  	pid_t pid;
+ 	char *task;
  {
  	int i;
  
  	for (i = 0; i < ProcListSize; i++)
  	{
! 		if (ProcListVec[i].proc_pid == NO_PID)
  			break;
  	}
  	if (i >= ProcListSize)
***************
*** 1874,1902 ****
  		/* now scan again */
  		for (i = 0; i < ProcListSize; i++)
  		{
! 			if (ProcListVec[i] == NO_PID)
  				break;
  		}
  	}
  	if (i >= ProcListSize)
  	{
  		/* grow process list */
! 		pid_t *npv;
  
! 		npv = (pid_t *) xalloc(sizeof (pid_t) * (ProcListSize + PROC_LIST_SEG));
  		if (ProcListSize > 0)
  		{
! 			bcopy(ProcListVec, npv, ProcListSize * sizeof (pid_t));
  			free(ProcListVec);
  		}
  		for (i = ProcListSize; i < ProcListSize + PROC_LIST_SEG; i++)
! 			npv[i] = NO_PID;
  		i = ProcListSize;
  		ProcListSize += PROC_LIST_SEG;
  		ProcListVec = npv;
  	}
! 	ProcListVec[i] = pid;
! 	CurChildren++;
  }
  /*
  **  PROC_LIST_DROP -- drop pid from process list
--- 2056,2121 ----
  		/* now scan again */
  		for (i = 0; i < ProcListSize; i++)
  		{
! 			if (ProcListVec[i].proc_pid == NO_PID)
  				break;
  		}
  	}
  	if (i >= ProcListSize)
  	{
  		/* grow process list */
! 		struct procs *npv;
  
! 		npv = (struct procs *) xalloc(sizeof (struct procs) * (ProcListSize + PROC_LIST_SEG));
  		if (ProcListSize > 0)
  		{
! 			bcopy(ProcListVec, npv, ProcListSize *
! 						sizeof (struct procs));
  			free(ProcListVec);
  		}
  		for (i = ProcListSize; i < ProcListSize + PROC_LIST_SEG; i++)
! 		{
! 			npv[i].proc_pid = NO_PID;
! 			npv[i].proc_task = NULL;
! 		}
  		i = ProcListSize;
  		ProcListSize += PROC_LIST_SEG;
  		ProcListVec = npv;
  	}
! 	ProcListVec[i].proc_pid = pid;
! 	ProcListVec[i].proc_task = newstr(task);
! 
! 	/* if process adding itself, it's not a child */
! 	if (pid != getpid())
! 		CurChildren++;
! }
! /*
! **  PROC_LIST_SET -- set pid task in process list
! **
! **	Parameters:
! **		pid -- pid to set
! **		task -- task of pid
! **
! **	Returns:
! **		none.
! */
! 
! void
! proc_list_set(pid, task)
! 	pid_t pid;
! 	char *task;
! {
! 	int i;
! 
! 	for (i = 0; i < ProcListSize; i++)
! 	{
! 		if (ProcListVec[i].proc_pid == pid)
! 		{
! 			if (ProcListVec[i].proc_task != NULL)
! 				free(ProcListVec[i].proc_task);
! 			ProcListVec[i].proc_task = newstr(task);
! 			break;
! 		}
! 	}
  }
  /*
  **  PROC_LIST_DROP -- drop pid from process list
***************
*** 1916,1924 ****
  
  	for (i = 0; i < ProcListSize; i++)
  	{
! 		if (ProcListVec[i] == pid)
  		{
! 			ProcListVec[i] = NO_PID;
  			break;
  		}
  	}
--- 2135,2148 ----
  
  	for (i = 0; i < ProcListSize; i++)
  	{
! 		if (ProcListVec[i].proc_pid == pid)
  		{
! 			ProcListVec[i].proc_pid = NO_PID;
! 			if (ProcListVec[i].proc_task != NULL)
! 			{
! 				free(ProcListVec[i].proc_task);
! 				ProcListVec[i].proc_task = NULL;
! 			}
  			break;
  		}
  	}
***************
*** 1940,1947 ****
  {
  	int i;
  
! 	for (i = 0; i < ProcListSize; i++)
! 		ProcListVec[i] = NO_PID;
  	CurChildren = 0;
  }
  /*
--- 2164,2179 ----
  {
  	int i;
  
! 	/* start from 1 since 0 is the daemon itself */
! 	for (i = 1; i < ProcListSize; i++)
! 	{
! 		ProcListVec[i].proc_pid = NO_PID;
! 		if (ProcListVec[i].proc_task != NULL)
! 		{
! 			free(ProcListVec[i].proc_task);
! 			ProcListVec[i].proc_task = NULL;
! 		}
! 	}
  	CurChildren = 0;
  }
  /*
***************
*** 1959,1980 ****
  {
  	int i;
  
! 	for (i = 0; i < ProcListSize; i++)
  	{
! 		if (ProcListVec[i] == NO_PID)
  			continue;
! 		if (kill(ProcListVec[i], 0) < 0)
  		{
  			if (LogLevel > 3)
  				sm_syslog(LOG_DEBUG, CurEnv->e_id,
  					"proc_list_probe: lost pid %d",
! 					ProcListVec[i]);
! 			ProcListVec[i] = NO_PID;
  			CurChildren--;
  		}
  	}
  	if (CurChildren < 0)
  		CurChildren = 0;
  }
  /*
  **  SM_STRCASECMP -- 8-bit clean version of strcasecmp
--- 2191,2247 ----
  {
  	int i;
  
! 	/* start from 1 since 0 is the daemon itself */
! 	for (i = 1; i < ProcListSize; i++)
  	{
! 		if (ProcListVec[i].proc_pid == NO_PID)
  			continue;
! 		if (kill(ProcListVec[i].proc_pid, 0) < 0)
  		{
  			if (LogLevel > 3)
  				sm_syslog(LOG_DEBUG, CurEnv->e_id,
  					"proc_list_probe: lost pid %d",
! 					(int) ProcListVec[i].proc_pid);
! 			ProcListVec[i].proc_pid = NO_PID;
! 			if (ProcListVec[i].proc_task != NULL)
! 			{
! 				free(ProcListVec[i].proc_task);
! 				ProcListVec[i].proc_task = NULL;
! 			}
  			CurChildren--;
  		}
  	}
  	if (CurChildren < 0)
  		CurChildren = 0;
+ }
+ /*
+ **  PROC_LIST_DISPLAY -- display the process list
+ **
+ **	Parameters:
+ **		out -- output file pointer
+ **
+ **	Returns:
+ **		none.
+ */
+ 
+ void
+ proc_list_display(out)
+ 	FILE *out;
+ {
+ 	int i;
+ 
+ 	for (i = 0; i < ProcListSize; i++)
+ 	{
+ 		if (ProcListVec[i].proc_pid == NO_PID)
+ 			continue;
+ 
+ 		fprintf(out, "%d %s%s\n", (int) ProcListVec[i].proc_pid,
+ 			ProcListVec[i].proc_task != NULL ?
+ 			ProcListVec[i].proc_task : "(unknown)",
+ 			(OpMode == MD_SMTP ||
+ 			 OpMode == MD_DAEMON ||
+ 			 OpMode == MD_ARPAFTP) ? "\r" : "");
+ 	}
  }
  /*
  **  SM_STRCASECMP -- 8-bit clean version of strcasecmp
diff -cr sendmail-8.9.1/src/version.c sendmail-8.9.2/src/version.c
*** sendmail-8.9.1/src/version.c	Thu Jul  2 11:04:58 1998
--- sendmail-8.9.2/src/version.c	Tue Dec 29 09:57:32 1998
***************
*** 11,17 ****
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)version.c	8.9.1.1 (Berkeley) 7/2/98";
  #endif /* not lint */
  
! char	Version[] = "8.9.1";
--- 11,17 ----
   */
  
  #ifndef lint
! static char sccsid[] = "@(#)version.c	8.9.2.1 (Berkeley) 12/29/1998";
  #endif /* not lint */
  
! char	Version[] = "8.9.2";
diff -cr sendmail-8.9.1/test/Results sendmail-8.9.2/test/Results
*** sendmail-8.9.1/test/Results	Fri Apr 11 09:53:45 1997
--- sendmail-8.9.2/test/Results	Tue Jul 28 16:06:57 1998
***************
*** 60,65 ****
--- 60,66 ----
  Linux	1.0	OK	94.03.19  Shayne Smith <snsmith@rastus.brisnet.org.au>
  Linux	1.2.13	OK	95.11.02  Sven Neuhaus <sven@ping.de>
  Linux	2.0.17	OK	96.09.03  Horst von Brand <vonbrand@sleipnir.valparaiso.cl>
+ Linux	2.1.109	OK	98.07.21  John Kennedy <jk@csuchico.edu>
  
  BSD/386	1.0	OK	93.11.13  Tony Sanders
  
***************
*** 81,86 ****
--- 82,88 ----
  
  Linux	1.2.13	FAIL	95.11.02  Sven Neuhaus <sven@ping.de>
  Linux	2.0.17	FAIL	96.09.03  Horst von Brand <vonbrand@sleipnir.valparaiso.cl>
+ Linux	2.1.109	FAIL	98.07.21  John Kennedy <jk@csuchico.edu>
  
  AIX	4.1	OK	96.10.21  Hakan Lindholm <hakan@af.lu.se>