File sendmail-8.15.2.dif of Package sendmail.10026

---
 cf/README                         |    2 -
 cf/domain/generic.m4              |    2 -
 cf/feature/masquerade_envelope.m4 |    2 +
 cf/feature/msp.m4                 |    9 +++++-
 cf/feature/use_cw_file.m4         |    2 -
 cf/m4/cfhead.m4                   |    1 
 cf/m4/proto.m4                    |    6 ++++
 cf/mailer/cyrus.m4                |    3 +-
 cf/mailer/fax.m4                  |    1 
 cf/mailer/local.m4                |    2 +
 cf/mailer/mail11.m4               |   10 ++++---
 cf/mailer/phquery.m4              |    1 
 cf/mailer/pop.m4                  |    1 
 cf/mailer/procmail.m4             |    1 
 cf/mailer/qpage.m4                |    1 
 cf/mailer/smtp.m4                 |    2 +
 cf/mailer/usenet.m4               |    1 
 cf/mailer/uucp.m4                 |    3 +-
 cf/sh/makeinfo.sh                 |   15 ++++++++--
 contrib/bounce-resender.pl        |    4 +-
 contrib/doublebounce.pl           |   10 ++++++-
 contrib/etrn.pl                   |    2 -
 contrib/expn.pl                   |   26 +++++++++++++++----
 contrib/passwd-to-alias.pl        |    2 -
 contrib/smcontrol.pl              |    2 -
 devtools/M4/UNIX/manpage.m4       |    2 -
 devtools/M4/depend/CC-M.m4        |    2 -
 devtools/OS/Linux                 |    3 +-
 devtools/bin/install.sh           |    5 ++-
 doc/op/op.me                      |   52 +++++++++++++++++++-------------------
 include/sm/conf.h                 |   48 +++++++++++++++++++++++++++--------
 libmilter/Makefile.m4             |   28 ++++++++++++++++++++
 libsm/Makefile.m4                 |    4 ++
 libsm/inet6_ntop.c                |    2 -
 libsmutil/Makefile.m4             |    4 ++
 mail.local/Makefile.m4            |    6 +++-
 mail.local/mail.local.8           |    4 +-
 mailstats/mailstats.8             |    5 ++-
 makemap/makemap.8                 |    9 ------
 praliases/Makefile.m4             |    3 +-
 rmail/rmail.c                     |    2 -
 sendmail/Makefile.m4              |    3 ++
 sendmail/SECURITY                 |   32 +++++++++++------------
 sendmail/control.c                |    2 -
 sendmail/domain.c                 |   10 +++++--
 sendmail/readcf.c                 |    9 +++++-
 sendmail/sendmail.h               |    8 ++---
 sendmail/udb.c                    |   14 +++++++---
 smrsh/README                      |   32 +++++++++++------------
 smrsh/smrsh.8                     |   25 ++++++++----------
 vacation/vacation.c               |    3 ++
 51 files changed, 289 insertions(+), 139 deletions(-)

--- cf/README
+++ cf/README	2017-11-29 08:53:04.280369594 +0000
@@ -364,7 +364,7 @@ LOCAL_MAILER_DSN_DIAGNOSTIC_CODE
 			local mailer.  This should be changed with care.
 LOCAL_SHELL_PATH	[/bin/sh] The shell used to deliver piped email.
 LOCAL_SHELL_FLAGS	[eu9] The flags used by the shell mailer.  The
-			flags lsDFM are always included.
+			flags lsDFMoq are always included.
 LOCAL_SHELL_ARGS	[sh -c $u] The arguments passed to deliver "prog"
 			mail.
 LOCAL_SHELL_DIR		[$z:/] The directory search path in which the
--- cf/domain/generic.m4
+++ cf/domain/generic.m4	2017-11-29 08:53:04.280369594 +0000
@@ -25,4 +25,4 @@ define(`confFORWARD_PATH', `$z/.forward.
 define(`confMAX_HEADERS_LENGTH', `32768')dnl
 FEATURE(`redirect')dnl
 FEATURE(`use_cw_file')dnl
-EXPOSED_USER(`root')
+ifdef(`_MAILER_uucp_', `EXPOSED_USER(`root uucp')',`EXPOSED_USER(`root')')dnl
--- cf/feature/masquerade_envelope.m4
+++ cf/feature/masquerade_envelope.m4	2017-11-29 08:53:04.284369517 +0000
@@ -17,3 +17,5 @@ VERSIONID(`$Id: masquerade_envelope.m4,v
 divert(-1)
 
 define(`_MASQUERADE_ENVELOPE_', 1)
+
+divert(0)dnl
--- cf/feature/msp.m4
+++ cf/feature/msp.m4	2017-11-29 08:53:04.284369517 +0000
@@ -20,7 +20,7 @@ define(`confPRIVACY_FLAGS', `goaway,noet
 define(`confDONT_PROBE_INTERFACES', `True')
 dnl ---------------------------------------------
 dnl run as this user (even if called by root)
-ifdef(`confRUN_AS_USER',,`define(`confRUN_AS_USER', `smmsp')')
+ifdef(`confRUN_AS_USER',,`define(`confRUN_AS_USER', `mail')')
 ifdef(`confTRUSTED_USER',,`define(`confTRUSTED_USER',
 `ifelse(index(confRUN_AS_USER,`:'), -1, `confRUN_AS_USER',
 `substr(confRUN_AS_USER,0,index(confRUN_AS_USER,`:'))')')')
@@ -62,11 +62,18 @@ MODIFY_MAILER_FLAGS(`ESMTP', `+k5')dnl
 MODIFY_MAILER_FLAGS(`DSMTP', `+k5')dnl
 MODIFY_MAILER_FLAGS(`SMTP8', `+k5')dnl
 MODIFY_MAILER_FLAGS(`RELAY', `+k')dnl
+define(`SMTP_MAILER_ARGS',  `TCP $h ${MTAPort}')dnl
+define(`ESMTP_MAILER_ARGS', `TCP $h ${MTAPort}')dnl
+define(`DSMTP_MAILER_ARGS', `TCP $h ${MTAPort}')dnl
+define(`SMTP8_MAILER_ARGS', `TCP $h ${MTAPort}')dnl
+ifelse(_ARG2_, `', `define(`RELAY_MAILER_ARGS', `TCP $h ${MTAPort}')')dnl
+ifdef(`confMTAPort', `define(`_MTA_PORT_', confMTAPort)', `define(`_MTA_PORT_', `smtp')')dnl
 MAILER(`local')dnl
 MAILER(`smtp')dnl
 
 LOCAL_CONFIG
 D{MTAHost}_MTA_HOST_
+D{MTAPort}_MTA_PORT_
 
 LOCAL_RULESETS
 SLocal_localaddr
--- cf/feature/use_cw_file.m4
+++ cf/feature/use_cw_file.m4	2017-11-29 08:53:04.284369517 +0000
@@ -22,4 +22,4 @@ divert(-1)
 
 define(`USE_CW_FILE', `')
 
-divert(0)
+divert(0)dnl
--- cf/m4/cfhead.m4
+++ cf/m4/cfhead.m4	2017-11-29 08:53:04.284369517 +0000
@@ -304,6 +304,7 @@ define(`confMILTER_MACROS_HELO', ``{tls_
 define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
 define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
 define(`confMILTER_MACROS_EOM', `{msg_id}')
+undefine(`confMTAPort')
 
 
 divert(0)dnl
--- cf/m4/proto.m4
+++ cf/m4/proto.m4	2017-11-29 08:53:04.284369517 +0000
@@ -1279,6 +1279,12 @@ ifdef(`_PRESERVE_LUSER_HOST_', `dnl
 R< $+ > $+		$: < $1 > $2 $&{Host}')
 dnl')
 
+ifdef(`_LDAP_', `dnl
+# Now attempt to lookup in ldap (ldap map)
+R< $L > $+		$: < $L > $(ldap $1 $)		look up user
+R< $*  > $+ @ $+	$: < $3 > $2			rewrite if forward',
+`dnl')
+
 ifdef(`MAIL_HUB', `dnl
 R< > $+			$: < $H > $1			try hub', `dnl')
 ifdef(`LOCAL_RELAY', `dnl
--- cf/mailer/cyrus.m4
+++ cf/mailer/cyrus.m4	2017-11-29 08:53:04.284369517 +0000
@@ -36,7 +36,7 @@ PUSHDIVERT(-1)
 #
 
 _DEFIFNOT(`CYRUS_MAILER_FLAGS', `Ah5@/:|')
-ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', /usr/cyrus/bin/deliver)')
+ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', `/usr/lib/cyrus/bin/deliver')')
 ifdef(`CYRUS_MAILER_ARGS',, `define(`CYRUS_MAILER_ARGS', `deliver -e -m $h -- $u')')
 ifdef(`CYRUS_MAILER_USER',, `define(`CYRUS_MAILER_USER', `cyrus:mail')')
 _DEFIFNOT(`CYRUS_BB_MAILER_FLAGS', `u')
@@ -51,6 +51,7 @@ POPDIVERT
 
 VERSIONID(`$Id: cyrus.m4,v 8.24 2013-11-22 20:51:14 ca Exp $ (Carnegie Mellon)')
 
+MAILER_DEFINITIONS
 Mcyrus,		P=CYRUS_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), `CYRUS'), S=EnvFromL, R=EnvToL/HdrToL,
 		ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER, T=DNS/RFC822/X-Unix,_CYRUS_QGRP
 		A=CYRUS_MAILER_ARGS
--- cf/mailer/fax.m4
+++ cf/mailer/fax.m4	2017-11-29 08:53:04.284369517 +0000
@@ -30,6 +30,7 @@ POPDIVERT
 
 VERSIONID(`$Id: fax.m4,v 8.17 2013-11-22 20:51:14 ca Exp $')
 
+MAILER_DEFINITIONS
 Mfax,		P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24,
 		M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,_FAX_QGRP
 		A=FAX_MAILER_ARGS
--- cf/mailer/local.m4
+++ cf/mailer/local.m4	2017-11-29 08:53:04.284369517 +0000
@@ -34,6 +34,7 @@ POPDIVERT
 
 VERSIONID(`$Id: local.m4,v 8.60 2013-11-22 20:51:14 ca Exp $')
 
+LOCAL_RULESETS
 #
 #  Envelope sender rewriting
 #
@@ -85,6 +86,7 @@ R$+			$@ $1 < @ *LOCAL* >	add local qual
 `R$+			$@ $1 < @ _ALWAYS_ADD_DOMAIN_ >	add qualification')',
 `dnl')
 
+MAILER_DEFINITIONS
 Mlocal,		P=LOCAL_MAILER_PATH, F=_MODMF_(CONCAT(_DEF_LOCAL_MAILER_FLAGS, LOCAL_MAILER_FLAGS), `LOCAL'), LOCAL_RWR,_OPTINS(`LOCAL_MAILER_EOL', ` E=', `, ')
 		_OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`LOCAL_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/LOCAL_MAILER_DSN_DIAGNOSTIC_CODE,_LOCAL_QGRP
 		A=LOCAL_MAILER_ARGS
--- cf/mailer/mail11.m4
+++ cf/mailer/mail11.m4	2017-11-29 08:53:04.284369517 +0000
@@ -34,7 +34,7 @@ R$* < @ $=w .DECNET. >		$#_LOCAL_ $: $1
 R$+ < @ $+ .DECNET. >		$#mail11 $@ $2 $: $1		DECnet user
 POPDIVERT
 
-PUSHDIVERT(6)
+LOCAL_CONFIG
 CPDECNET
 POPDIVERT
 
@@ -44,6 +44,7 @@ POPDIVERT
 
 VERSIONID(`$Id: mail11.m4,v 8.23 2013-11-22 20:51:14 ca Exp $')
 
+LOCAL_RULESETS
 SMail11To
 R$+ < @ $- .UUCP >	$: $2 ! $1		back to old style
 R$+ < @ $- .DECNET >	$: $2 :: $1		convert to DECnet style
@@ -56,6 +57,7 @@ SMail11From
 R$+			$: $>Mail11To $1	preprocess
 R$w :: $+		$@ $w :: $1		ready to go
 
-Mmail11, P=MAIL11_MAILER_PATH, F=_MODMF_(MAIL11_MAILER_FLAGS, `MAIL11'), S=Mail11From, R=Mail11To,
-	T=DNS/X-DECnet/X-Unix,_MAIL11_QGRP
-	A=MAIL11_MAILER_ARGS
+MAILER_DEFINITIONS
+Mmail11,	P=MAIL11_MAILER_PATH, F=_MODMF_(MAIL11_MAILER_FLAGS, `MAIL11'), S=Mail11From, R=Mail11To,
+		T=DNS/X-DECnet/X-Unix,_MAIL11_QGRP
+		A=MAIL11_MAILER_ARGS
--- cf/mailer/phquery.m4
+++ cf/mailer/phquery.m4	2017-11-29 08:53:04.284369517 +0000
@@ -27,6 +27,7 @@ POPDIVERT
 
 VERSIONID(`$Id: phquery.m4,v 8.18 2013-11-22 20:51:14 ca Exp $')
 
+MAILER_DEFINITIONS
 Mph,		P=PH_MAILER_PATH, F=_MODMF_(CONCAT(`nrDFM', PH_MAILER_FLAGS), `PH'), S=EnvFromL, R=EnvToL/HdrToL,
 		T=DNS/RFC822/X-Unix,_PH_QGRP
 		A=PH_MAILER_ARGS
--- cf/mailer/pop.m4
+++ cf/mailer/pop.m4	2017-11-29 08:53:04.284369517 +0000
@@ -25,6 +25,7 @@ POPDIVERT
 
 VERSIONID(`$Id: pop.m4,v 8.23 2013-11-22 20:51:14 ca Exp $')
 
+MAILER_DEFINITIONS
 Mpop,		P=POP_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMq', POP_MAILER_FLAGS), `POP'), S=EnvFromL, R=EnvToL/HdrToL,
 		T=DNS/RFC822/X-Unix,_POP_QGRP
 		A=POP_MAILER_ARGS
--- cf/mailer/procmail.m4
+++ cf/mailer/procmail.m4	2017-11-29 08:53:04.284369517 +0000
@@ -29,6 +29,7 @@ POPDIVERT
 
 VERSIONID(`$Id: procmail.m4,v 8.23 2013-11-22 20:51:14 ca Exp $')
 
+MAILER_DEFINITIONS
 Mprocmail,	P=PROCMAIL_MAILER_PATH, F=_MODMF_(CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), `PROCMAIL'), S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP,
 		ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')T=DNS/RFC822/X-Unix,_PROCMAIL_QGRP
 		A=PROCMAIL_MAILER_ARGS
--- cf/mailer/qpage.m4
+++ cf/mailer/qpage.m4	2017-11-29 08:53:04.300369213 +0000
@@ -26,6 +26,7 @@ POPDIVERT
 
 VERSIONID(`$Id: qpage.m4,v 8.11 2013-11-22 20:51:14 ca Exp $')
 
+MAILER_DEFINITIONS
 Mqpage, P=QPAGE_MAILER_PATH, F=_MODMF_(QPAGE_MAILER_FLAGS, `QPAGE'),
 	M=QPAGE_MAILER_MAX,  T=DNS/RFC822/X-Unix,_QPAGE_QGRP
 	A=QPAGE_MAILER_ARGS
--- cf/mailer/smtp.m4
+++ cf/mailer/smtp.m4	2017-11-29 08:53:04.300369213 +0000
@@ -33,6 +33,7 @@ POPDIVERT
 
 VERSIONID(`$Id: smtp.m4,v 8.66 2013-11-22 20:51:14 ca Exp $')
 
+LOCAL_RULESETS
 #
 #  common sender and masquerading recipient rewriting
 #
@@ -107,6 +108,7 @@ SMasqRelay
 R$+			$: $>MasqSMTP $1
 R$+			$: $>MasqHdr $1
 
+MAILER_DEFINITIONS
 Msmtp,		P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, SMTP_MAILER_FLAGS), `SMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
 		_OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_SMTP_QGRP
 		A=SMTP_MAILER_ARGS
--- cf/mailer/usenet.m4
+++ cf/mailer/usenet.m4	2017-11-29 08:53:04.300369213 +0000
@@ -23,6 +23,7 @@ POPDIVERT
 
 VERSIONID(`$Id: usenet.m4,v 8.23 2013-11-22 20:51:14 ca Exp $')
 
+MAILER_DEFINITIONS
 Musenet,	P=USENET_MAILER_PATH, F=_MODMF_(USENET_MAILER_FLAGS, `USENET'), S=EnvFromL, R=EnvToL,
 		_OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,_USENET_QGRP
 		A=USENET_MAILER_ARGS $u
--- cf/mailer/uucp.m4
+++ cf/mailer/uucp.m4	2017-11-29 08:53:04.300369213 +0000
@@ -26,6 +26,7 @@ POPDIVERT
 
 VERSIONID(`$Id: uucp.m4,v 8.45 2013-11-22 20:51:14 ca Exp $')
 
+LOCAL_RULESETS
 #
 #  envelope and header sender rewriting
 #
@@ -122,6 +123,7 @@ R$* < @ $=Y . UUCP. > $*	$#uucp-new $@ $
 R$* < @ $=U . UUCP. > $*	$#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3
 POPDIVERT
 
+MAILER_DEFINITIONS
 #
 #  There are innumerable variations on the UUCP mailer.  It really
 #  is rather absurd.
@@ -154,4 +156,3 @@ Muucp-uudom,	P=UUCP_MAILER_PATH, F=_MODM
 		M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
 		A=UUCP_MAILER_ARGS')
 
-
--- cf/sh/makeinfo.sh
+++ cf/sh/makeinfo.sh	2017-11-29 08:53:04.304369138 +0000
@@ -22,7 +22,7 @@ do
 	then
 		p="."
 	fi
-	if [ -f $p/whoami ]
+	if [ -x $p/whoami ]
 	then
 		usewhoami=1
 		if [ $usehostname -ne 0 ]
@@ -30,7 +30,7 @@ do
 			break;
 		fi
 	fi
-	if [ -f $p/hostname ]
+	if [ -x $p/hostname ]
 	then
 		usehostname=1
 		if [ $usewhoami -ne 0 ]
@@ -48,11 +48,20 @@ fi
 
 if [ $usehostname -ne 0 ]
 then
-	host=`hostname`
+	[ -r /etc/rc.config ] && host="$( . /etc/rc.config &> /dev/null ; echo $FQHOSTNAME)"
+	[ -z "$host" -a -r /etc/HOSTNAME ] && read host < /etc/HOSTNAME
+	[ -z "$host" ] && host=`hostname -f`
 else
 	host=`uname -n`
 fi
 echo '#####' built by $user@$host on `date`
+if [ -r /etc/os-release ] ; then
+	. /etc/os-release
+	echo '#####' on $PRETTY_NAME
+elif [ -r /etc/SuSE-release ] ; then
+	read line < /etc/SuSE-release
+	echo '#####' on $line
+fi
 echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
 echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//'
 echo "define(\`__HOST__', $host)dnl"
--- contrib/bounce-resender.pl
+++ contrib/bounce-resender.pl	2017-11-29 08:53:04.304369138 +0000
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl -w
+#!/usr/bin/perl -w
 #
 # bounce-resender: constructs mail queue from bounce spool for
 #  subsequent reprocessing by sendmail
@@ -30,7 +30,7 @@ $uname = "PhilOS";  # You don't want to
 $myname = $0;
 $myname =~ s,.*/([^/]*),$1,;
 
-chomp($hostname = `hostname`);
+chomp($hostname = `hostname -f`);
 chomp($uname = `uname`);
 
 # FIXME: Define the functions "major" and "minor" for your OS.
--- contrib/doublebounce.pl
+++ contrib/doublebounce.pl	2017-11-29 08:53:04.304369138 +0000
@@ -111,6 +111,11 @@ EOT
   return $result;
 }
 
+sub cleanup
+{
+        unlink("$tmpfile");
+}
+
 sub main {
   # Get our command line options
   getopts('d');
@@ -127,6 +132,10 @@ sub main {
   # it in memory, get a temporary file.
   $tmpfile = tmpnam();
 
+  $SIG{'INT'}  = "cleanup";
+  $SIG{'TERM'} = "cleanup";
+  $SIG{'HUP'}  = "cleanup";
+
   if (!open(MSG, ">$tmpfile")) {
     syslog('err', "Unable to open temporary file $tmpfile");
     exit(75); # 75 is a temporary failure, sendmail should retry
@@ -222,4 +231,3 @@ sub main {
 
 main();
 exit(0);
-
--- contrib/etrn.pl
+++ contrib/etrn.pl	2017-11-29 08:53:04.304369138 +0000
@@ -1,4 +1,4 @@
-#!/usr/perl5/bin/perl -w
+#!/usr/bin/perl -w
 #
 # CDDL HEADER START
 #
--- contrib/expn.pl
+++ contrib/expn.pl	2017-11-29 08:53:04.304369138 +0000
@@ -101,6 +101,7 @@ use Fcntl;
 
 $have_nslookup = 1;	# we have the nslookup program
 $port = 'smtp';
+$tmp_dir = "/tmp/.expn$$";
 $av0 = $0;
 $ENV{'PATH'} .= ":/usr/etc" unless $ENV{'PATH'} =~ m,/usr/etc,;
 $ENV{'PATH'} .= ":/usr/ucb" unless $ENV{'PATH'} =~ m,/usr/ucb,;
@@ -112,6 +113,19 @@ chop($name = `hostname || uname -n`);
 $0 = "$av0 - lookup host FQDN and IP addr";
 ($hostname,$aliases,$type,$len,$thisaddr) = gethostbyname($name);
 
+mkdir("$tmp_dir",0700) || die "mkdir $tmp_dir: $!";
+
+sub cleanup
+{
+	unlink("/tmp/.expn$$/expn$$");
+	rmdir $tmp_dir;
+	exit(1);
+}
+
+$SIG{'INT'}  = "cleanup";
+$SIG{'TERM'} = "cleanup";
+$SIG{'HUP'}  = "cleanup";
+
 $0 = "$av0 - parsing args";
 $usage = "Usage: $av0 [-1avwd] user[\@host] [user2[host2] ...]";
 for $a (@ARGV) {
@@ -402,7 +416,9 @@ select(STDOUT);
 for $f (sort @final) {
 	print "$f\n";
 }
-unlink("/tmp/expn$$");
+unlink("/tmp/.expn$$/expn$$");
+rmdir $tmp_dir;
+
 exit(0);
 
 
@@ -1000,13 +1016,13 @@ sub mxlookup
 	}
 
 	$0 = "$av0 - nslookup of $server";
-	sysopen(T,"/tmp/expn$$",O_RDWR|O_CREAT|O_EXCL,0600) || die "open > /tmp/expn$$: $!\n";
+	sysopen(T,"/tmp/.expn$$/expn$$",O_RDWR|O_CREAT|O_EXCL,0600) || die "open > /tmp/.expn$$/expn$$: $!\n";
 	print T "set querytype=MX\n";
 	print T "$server\n";
 	close(T);
 	$cpref = 1.0E12;
 	undef $nserver;
-	open(NSLOOKUP,"nslookup < /tmp/expn$$ 2>&1 |") || die "open nslookup: $!";
+	open(NSLOOKUP,"nslookup < /tmp/.expn$$/expn$$ 2>&1 |") || die "open nslookup: $!";
 	while(<NSLOOKUP>) {
 		print if ($debug > 2);
 		if (/mail exchanger = ([-A-Za-z_.0-9+]+)/) {
@@ -1037,7 +1053,7 @@ sub mxlookup
 				
 	}
 	close(NSLOOKUP);
-	unlink("/tmp/expn$$");
+	unlink("/tmp/.expn$$/expn$$");
 	unless ($nserver) {
 		$0 = "$o0 - finished mxlookup";
 		return 0 unless $lastchance;
@@ -1309,7 +1325,7 @@ it is possible to eliminate bugs.
 No environment variables are used.
 .SH FILES
 .PD 0
-.B /tmp/expn$$
+.B /tmp/.expn$$/expn$$
 .B temporary file used as input to 
 .BR nslookup .
 .SH SEE ALSO
--- contrib/passwd-to-alias.pl
+++ contrib/passwd-to-alias.pl	2017-11-29 08:53:04.304369138 +0000
@@ -1,4 +1,4 @@
-#!/bin/perl
+#!/usr/bin/perl
 
 #
 #  Convert GECOS information in password files to alias syntax.
--- contrib/smcontrol.pl
+++ contrib/smcontrol.pl	2017-11-29 08:53:04.304369138 +0000
@@ -25,7 +25,7 @@ sub get_controlname
 	my $cn = undef;
 	my $qd = undef;
  
-	open(CF, "</etc/mail/sendmail.cf") or return $cn;
+	open(CF, "</etc/sendmail.cf") or open(CF, "</etc/mail/sendmail.cf") or return $cn;
 	while (<CF>)
 	{
 		chomp;
--- devtools/M4/UNIX/manpage.m4
+++ devtools/M4/UNIX/manpage.m4	2017-11-29 08:53:04.304369138 +0000
@@ -69,7 +69,7 @@ ifdef(`confNO_MAN_INSTALL', `divert(-1)'
 define(`bldMAN_INSTALL_CMD',
 `ifdef(`confDONT_INSTALL_CATMAN', `dnl',
 `	ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}; else :; fi ')
-	${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'')
+	${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}`MAN'/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'')
 ifdef(`confINSTALL_RAWMAN',
 `	ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}; else :; fi ')
 	${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1) `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'', `dnl')'
--- devtools/M4/depend/CC-M.m4
+++ devtools/M4/depend/CC-M.m4	2017-11-29 08:53:04.304369138 +0000
@@ -3,6 +3,6 @@ depend: ${BEFORE} ${LINKS}
 	@mv Makefile Makefile.old
 	@sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
 	@echo "# Do not edit or remove this line or anything below it." >> Makefile
-	${CC} -M ${COPTS} ${SRCS} >> Makefile
+	${CC} -M ${O} ${COPTS} ${SRCS} >> Makefile
 
 #	End of $RCSfile: CC-M.m4,v $
--- devtools/OS/Linux
+++ devtools/OS/Linux	2017-11-29 08:53:04.304369138 +0000
@@ -5,8 +5,9 @@ dnl	Place personal settings in devtools/
 
 define(`confDEPEND_TYPE', `CC-M')
 define(`confCCOPTS_SO', `-fPIC')
+define(`confENVDEF', `-DNETINET6')
 define(`confSM_OS_HEADER', `sm_os_linux')
-define(`confMANROOT', `/usr/man/man')
+define(`confMANROOT', `/usr/share/man/man')
 define(`confLIBS', `-ldl')
 define(`confEBINDIR', `/usr/sbin')
 APPENDDEF(`confLIBSEARCH', `crypt nsl')
--- devtools/bin/install.sh
+++ devtools/bin/install.sh	2017-11-29 08:53:04.304369138 +0000
@@ -16,6 +16,7 @@ owner=""
 group=""
 mode=""
 strip=""
+id=$(id -u)
 
 # chown program -- ultrix keeps it in /etc/chown and /usr/etc/chown
 if [ -f /etc/chown ]
@@ -102,7 +103,7 @@ then
 fi
 
 # Change owner if requested
-if [ ! -z "$owner" ]
+if [ ! -z "$owner" -a $id -eq 0 ]
 then
 	$chown $owner $dst
 	if [ $? != 0 ]
@@ -112,7 +113,7 @@ then
 fi
 
 # Change group if requested
-if [ ! -z "$group" ]
+if [ ! -z "$group" -a $id -eq 0 ]
 then
 	chgrp $group $dst
 	if [ $? != 0 ]
--- doc/op/op.me
+++ doc/op/op.me	2017-11-29 08:53:04.308369061 +0000
@@ -588,7 +588,7 @@ The binary for
 .i sendmail
 is located in /usr/\*(SD\**.
 .(f
-\**This is usually
+\** This is usually
 /usr/sbin
 on 4.4BSD and newer systems;
 many systems install it in
@@ -602,7 +602,7 @@ For security reasons,
 /, /usr, and /usr/\*(SD
 should be owned by root, mode 0755\**.
 .(f
-\**Some vendors ship them owned by bin;
+\** Some vendors ship them owned by bin;
 this creates a security hole that is not actually related to
 .i sendmail .
 Other important directories that should have restrictive ownerships
@@ -614,7 +614,7 @@ and permissions are
 This is the main configuration file for
 .i sendmail \**.
 .(f
-\**Actually, the pathname varies depending on the operating system;
+\** Actually, the pathname varies depending on the operating system;
 /etc/mail is the preferred directory.
 Some older systems install it in
 .b /usr/lib/sendmail.cf ,
@@ -630,7 +630,7 @@ This is one of the two non-library file
 .i sendmail \**,
 the other is /etc/mail/submit.cf.
 .(f
-\**The system libraries can reference other files;
+\** The system libraries can reference other files;
 in particular, system library subroutines that
 .i sendmail
 calls probably reference
@@ -1054,7 +1054,7 @@ are logged under the
 .sm LOG_MAIL
 facility\**.
 .(f
-\**Except on Ultrix,
+\** Except on Ultrix,
 which does not support facilities in the syslog.
 .)f
 .sh 3 "Format"
@@ -1068,7 +1068,7 @@ the word
 .q sendmail: ,
 and a message\**.
 .(f
-\**This format may vary slightly if your vendor has changed
+\** This format may vary slightly if your vendor has changed
 the syntax.
 .)f
 Most messages are a sequence of
@@ -1517,7 +1517,7 @@ The disk based host information is store
 directory called
 .b \&.hoststat \**.
 .(f
-\**This is the usual value of the
+\** This is the usual value of the
 .b HostStatusDirectory
 option;
 it can, of course, go anywhere you like in your filesystem.
@@ -1568,7 +1568,7 @@ and sendmail knows about it,
 will use the native version.
 Ultrix, Solaris, and DEC OSF/1 are examples of such systems\**.
 .(f
-\**HP-UX 10 has service switch support,
+\** HP-UX 10 has service switch support,
 but since the APIs are apparently not available in the libraries
 .i sendmail
 does not use the native service switch in this release.
@@ -1661,7 +1661,7 @@ will not have the desired effect
 (except on prep.ai.MIT.EDU,
 and they probably don't want me)\**.
 .(f
-\**Actually, any mailer that has the `A' mailer flag set
+\** Actually, any mailer that has the `A' mailer flag set
 will permit aliasing;
 this is normally limited to the local mailer.
 .)f
@@ -1676,7 +1676,7 @@ are comments.
 The second form is processed by the
 .i ndbm \|(3)\**
 .(f
-\**The
+\** The
 .i gdbm
 package does not work.
 .)f
@@ -1814,7 +1814,7 @@ Before
 will access the database,
 it checks to insure that this entry exists\**.
 .(f
-\**The
+\** The
 .b AliasWait
 option is required in the configuration
 for this action to occur.
@@ -2237,7 +2237,7 @@ Some options have security implications.
 Sendmail allows you to set these,
 but relinquishes its set-user-ID or set-group-ID permissions thereafter\**.
 .(f
-\**That is, it sets its effective uid to the real uid;
+\** That is, it sets its effective uid to the real uid;
 thus, if you are executing as root,
 as from root's crontab file or during system startup
 the root permissions will still be honored.
@@ -2605,7 +2605,7 @@ the time to wait for another command.
 The timeout waiting for a reply to an IDENT query
 [5s\**, unspecified].
 .(f
-\**On some systems the default is zero to turn the protocol off entirely.
+\** On some systems the default is zero to turn the protocol off entirely.
 .)f
 .ip lhlo
 The wait for a reply to an LMTP LHLO command
@@ -3856,7 +3856,7 @@ and
 is looked up in the host database(s)
 and replaced by the canonical name\**.
 .(f
-\**This is actually
+\** This is actually
 completely equivalent
 to $(host \fIhostname\fP$).
 In particular, a
@@ -3941,7 +3941,7 @@ part.
 If the mailer is local
 the host part may be omitted\**.
 .(f
-\**You may want to use it for special
+\** You may want to use it for special
 .q "per user"
 extensions.
 For example, in the address
@@ -4750,7 +4750,7 @@ for interpolation into argv's for mailer
 or for other contexts.
 The ones marked \(dg are information passed into sendmail\**,
 .(f
-\**As of version 8.6,
+\** As of version 8.6,
 all of these macros have reasonable defaults.
 Previous versions required that they be defined.
 .)f
@@ -5293,7 +5293,7 @@ and then passing that to
 .i gethostbyname (3)
 which is supposed to return the canonical version of that host name.\**
 .(f
-\**For example, on some systems
+\** For example, on some systems
 .i gethostname
 might return
 .q foo
@@ -5321,7 +5321,7 @@ it is imperative that the config file se
 .b $j
 to the fully qualified domain name\**.
 .(f
-\**Older versions of sendmail didn't pre-define
+\** Older versions of sendmail didn't pre-define
 .b $j
 at all, so up until 8.6,
 config files
@@ -7082,7 +7082,7 @@ will run as this user.
 Defaults to 1:1.
 The value can also be given as a symbolic user name.\**
 .(f
-\**The old
+\** The old
 .b g
 option has been combined into the
 .b DefaultUser
@@ -7823,7 +7823,7 @@ noactualrecipient	Don't put X-Actual-Rec
 		which reveal the actual account that addresses map to.
 .)b
 .(f
-\**N.B.:
+\** N.B.:
 the
 .b noreceipts
 flag turns off support for RFC 1891
@@ -8063,7 +8063,7 @@ If set to a non-zero (non-root) value,
 .i sendmail
 will change to this user id shortly after startup\**.
 .(f
-\**When running as a daemon,
+\** When running as a daemon,
 it changes to this user after accepting a connection
 but before reading any
 .sm SMTP
@@ -8720,7 +8720,7 @@ line may have an optional
 to indicate that this configuration file uses modifications
 specific to a particular vendor\**.
 .(f
-\**And of course, vendors are encouraged to add themselves
+\** And of course, vendors are encouraged to add themselves
 to the list of recognized vendors by editing the routine
 .i setvendor
 in
@@ -9927,7 +9927,7 @@ gets their outgoing mail stamped as
 but people not listed in the database use the local hostname.
 .sh 3 "Creating the database\**"
 .(f
-\**These instructions are known to be incomplete.
+\** These instructions are known to be incomplete.
 Other features are available which provide similar functionality,
 e.g., virtual hosting and mapping local addresses into a
 generic form as explained in cf/README.
@@ -10504,7 +10504,7 @@ and
 fields are always scanned on ARPANET mail
 to determine the sender\**;
 .(f
-\**Actually, this is no longer true in SMTP;
+\** Actually, this is no longer true in SMTP;
 this information is contained in the envelope.
 The older ARPANET protocols did not completely distinguish
 envelope from header.
@@ -10732,7 +10732,7 @@ The distribution includes several possib
 If you are porting to a new environment
 you may need to add some new tweaks.\**
 .(f
-\**If you do, please send updates to
+\** If you do, please send updates to
 sendmail@Sendmail.ORG.
 .)f
 .sh 2 "Configuration in sendmail/daemon.c"
@@ -11600,7 +11600,7 @@ the following is a queue file sent to
 and
 .q bostic@okeeffe.CS.Berkeley.EDU \**:
 .(f
-\**This example is contrived and probably inaccurate for your environment.
+\** This example is contrived and probably inaccurate for your environment.
 Glance over it to get an idea;
 nothing can replace looking at what your own system generates.
 .)f
--- include/sm/conf.h
+++ include/sm/conf.h	2017-11-29 08:53:04.308369061 +0000
@@ -1460,23 +1460,47 @@ extern void		*malloc();
 #   define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 #  endif /* !defined(KERNEL_VERSION) */
 #  define BSD		1	/* include BSD defines */
+#  include <features.h>
+#  if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+#   undef  GLIBC_VERSION
+#   define GLIBC_VERSION ((__GLIBC__ << 8) + __GLIBC_MINOR__)
+#   define HASSTRERROR	1	/* has strerror(3) */
+#  endif /* __GLIBC__ && __GLIBC_MINOR__ */
 #  define HASSETREGID	1	/* use setregid(2) to set saved gid */
 #  ifndef REQUIRES_DIR_FSYNC
 #   define REQUIRES_DIR_FSYNC	1	/* requires fsync() on directory */
 #  endif /* REQUIRES_DIR_FSYNC */
-#  ifndef USESETEUID
-#   define USESETEUID	0	/* has it due to POSIX, but doesn't work */
-#  endif /* USESETEUID */
+#  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0))
+#   if defined (GLIBC_VERSION) && (GLIBC_VERSION >= 0x201)
+#    define USESETEUID	1	/* It works */
+#   else /* GLIBC_VERSION >= 0x201 */
+#    define USESETEUID	0	/* has it due to POSIX, but doesn't work */
+#   endif /* GLIBC_VERSION >= 0x201 */
+#   if defined (GLIBC_VERSION) && (GLIBC_VERSION >= 0x200)
+#    define HASSETREUID	1	/* has setreuid(2) call */
+#   endif /* GLIBC_VERSION >= 0x200 */
+#  else  /* LINUX_VERSION_CODE < 2.2.0 */
+#   ifndef USESETEUID
+#    define USESETEUID	0	/* has it due to POSIX, but doesn't work */
+#   endif /* USESETEUID */
+#  endif /* LINUX_VERSION_CODE < 2.2.0 */
 #  define SM_CONF_GETOPT	0	/* need a replacement for getopt(3) */
 #  define HASUNAME	1	/* use System V uname(2) system call */
 #  define HASUNSETENV	1	/* has unsetenv(3) call */
 #  define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
 #  define GIDSET_T	gid_t	/* from <linux/types.h> */
+#  define HAVE_NANOSLEEP	1		/* moved from librt to libc in S11 */
+#  define SOCKADDR_LEN_T	socklen_t	/* arg#3 to accept, getsockname */
+#  define SOCKOPT_LEN_T		socklen_t	/* arg#5 to getsockopt */
 #  ifndef HASGETUSERSHELL
 #   define HASGETUSERSHELL 0	/* getusershell(3) broken in Slackware 2.0 */
 #  endif /* HASGETUSERSHELL */
 #  ifndef IP_SRCROUTE
-#   define IP_SRCROUTE	0	/* linux <= 1.2.8 doesn't support IP_OPTIONS */
+#   if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0))
+#    define IP_SRCROUTE	1	/* can check IP source routing */
+#   else
+#    define IP_SRCROUTE	0	/* linux <= 1.2.8 doesn't support IP_OPTIONS */
+#   endif
 #  endif /* ! IP_SRCROUTE */
 #  ifndef HAS_IN_H
 #   define HAS_IN_H	1	/* use netinet/in.h */
@@ -1485,15 +1509,15 @@ extern void		*malloc();
 #   define USE_SIGLONGJMP	1 /* sigsetjmp needed for signal handling */
 #  endif /* ! USE_SIGLONGJMP */
 #  ifndef HASFLOCK
-#   if LINUX_VERSION_CODE < 66399
+#   if (LINUX_VERSION_CODE < KERNEL_VERSION(1,3,95))
 #    define HASFLOCK	0	/* flock(2) is broken after 0.99.13 */
-#   else /* LINUX_VERSION_CODE < 66399 */
+#   else /* (LINUX_VERSION_CODE < KERNEL_VERSION(1,3,95)) */
 #     if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
 #      define HASFLOCK	1	/* flock(2) fixed after 1.3.95 */
 #     else /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */
 #      define HASFLOCK	0	/* flock(2) is broken (again) after 2.4.0 */
 #     endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) */
-#   endif /* LINUX_VERSION_CODE < 66399 */
+#   endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(1,3,95)) */
 #  endif /* ! HASFLOCK */
 #  ifndef LA_TYPE
 #   define LA_TYPE	LA_PROCSTR
@@ -1507,6 +1531,7 @@ extern void		*malloc();
 #  endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) */
 #  if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
 #   define HASSTRERROR	1	/* has strerror(3) */
+#   define HASSNPRINTF	1	/* has snprintf */
 #  endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */
 #  ifndef TZ_TYPE
 #   define TZ_TYPE	TZ_NONE		/* no standard for Linux */
@@ -1519,6 +1544,10 @@ extern void		*malloc();
 #  endif /* ! _PATH_SENDMAILPID */
 #  include <sys/sysmacros.h>
 #  undef atol			/* wounded in <stdlib.h> */
+#  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0))
+#   undef NETINET6
+#   define NETINET6	1	/* IPv6 added in 2.2 and upper */
+#  endif /* LINUX_VERSION_CODE >= 2.2.0 */
 #  if NETINET6
    /*
    **  Linux doesn't have a good way to tell userland what interfaces are
@@ -1532,8 +1561,7 @@ extern void		*malloc();
    **  Indirectly included from glibc's <feature.h>.  IPv6 support is native
    **  in 2.1 and later, but the APIs appear before the functions.
    */
-#   if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
-#    define GLIBC_VERSION ((__GLIBC__ << 8) + __GLIBC_MINOR__)
+#   if defined(GLIBC_VERSION)
 #    if (GLIBC_VERSION >= 0x201)
 #     define SOCKADDR_LEN_T     socklen_t
 #     define SOCKOPT_LEN_T      socklen_t
@@ -1546,7 +1574,7 @@ extern void		*malloc();
 #     define NEEDSGETIPNODE	1
 #    endif /* (GLIBC_VERSION >= 0x201 && !defined(NEEDSGETIPNODE)) */
 #    undef GLIBC_VERSION
-#   endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */
+#   endif /* defined(GLIBC_VERSION) */
 #  endif /* NETINET6 */
 #  ifndef HASFCHOWN
 #   define HASFCHOWN	1	/* fchown(2) */
--- libmilter/Makefile.m4
+++ libmilter/Makefile.m4	2017-11-29 08:53:04.308369061 +0000
@@ -12,6 +12,8 @@ PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR}
 bldPRODUCT_START(`library', `libmilter')
 define(`bldINSTALLABLE', `true')
 define(`LIBMILTER_EXTRAS', `errstring.c strl.c')
+REPLACEDEF(`confCCOPTS', `-fPIE')
+APPENDDEF(`confCCOPTS', `-fPIC')
 APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL -Dsm_snprintf=snprintf')
 define(`bldSOURCES', `main.c engine.c listener.c worker.c handler.c comm.c smfi.c signal.c sm_gethost.c monitor.c LIBMILTER_EXTRAS ')
 define(`confBEFORE', `LIBMILTER_EXTRAS')
@@ -28,6 +30,32 @@ POPDIVERT
 
 
 divert(bldTARGETS_SECTION)
+sm_libmilter_somajor = conf_libmilter_SOMAJOR
+sm_libmilter_soname = conf_libmilter_SONAME
+sm_libmilter_soversion = conf_libmilter_SOVERSION
+
+libmilter.a: libmilter.so.${sm_libmilter_soversion}
+libmilter.so.${sm_libmilter_soversion}: ${BEFORE} ${libmilterOBJS}
+	${CC} -shared -pthread \
+		-o libmilter.so.${sm_libmilter_soversion} \
+		-fPIC ${CFLAGS} \
+		-Wl,-soname,${sm_libmilter_soname} \
+		$(filter-out -fpie,${LDFLAGS}) \
+		${libmilterOBJS}
+	${LN} ${LNOPTS} libmilter.so.${sm_libmilter_soversion} ${sm_libmilter_soname}
+	${LN} ${LNOPTS} libmilter.so.${sm_libmilter_soversion} libmilter.so
+
+install-libmilter: install-libmilter-shared
+install-libmilter-shared: libmilter.so.${sm_libmilter_soversion}
+	${INSTALL} -d ${DESTDIR}${LIBDIR}
+	${INSTALL} -c -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} libmilter.so.${sm_libmilter_soversion} ${DESTDIR}${LIBDIR}
+	${LN} ${LNOPTS} libmilter.so.${sm_libmilter_soversion} ${DESTDIR}${LIBDIR}/${sm_libmilter_soname}
+	${LN} ${LNOPTS} libmilter.so.${sm_libmilter_soversion} ${DESTDIR}${LIBDIR}/libmilter.so
+
+libmilter-clean: libmilter-clean-shared
+libmilter-clean-shared:
+	rm -f libmilter.so libmilter.so.${sm_libmilter_soname} libmilter.so.${sm_libmilter_soversion}
+
 # Install the API header files
 MFAPI=	${SRCDIR}/inc`'lude/libmilter/mfapi.h
 MFDEF=	${SRCDIR}/inc`'lude/libmilter/mfdef.h
--- libsm/Makefile.m4
+++ libsm/Makefile.m4	2017-11-29 10:48:15.568980450 +0000
@@ -4,8 +4,12 @@ include(confBUILDTOOLSDIR`/M4/switch.m4'
 
 define(`confREQUIRE_LIBSM', `true')
 define(`confREQUIRE_SM_OS_H', `true')
+REPLACEDEF(`confCCOPTS', `-fPIE')
+APPENDDEF(`confCCOPTS', `-fPIC')
 PREPENDDEF(`confENVDEF', `confMAPDEF')
 bldPRODUCT_START(`library', `libsm')
+define(`bldINSTALL_DIR', `')
+define(`bldINSTALLABLE', `true')
 define(`bldSOURCES', ` assert.c debug.c errstring.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c wbuf.c wsetup.c string.c stringf.c xtrap.c strto.c test.c strcasecmp.c strrevcmp.c signal.c clock.c config.c shm.c sem.c mbdb.c strexit.c cf.c ldap.c niprop.c mpeix.c memstat.c util.c inet6_ntop.c ')
 bldPRODUCT_END
 dnl msg.c
--- libsm/inet6_ntop.c
+++ libsm/inet6_ntop.c	2017-11-29 08:53:04.308369061 +0000
@@ -11,8 +11,8 @@
 #include <sm/gen.h>
 SM_RCSID("@(#)$Id: inet6_ntop.c,v 1.2 2013-11-22 20:51:43 ca Exp $")
 
-#if NETINET6
 # include <sm/conf.h>
+#if NETINET6
 # include <sm/types.h>
 # include <sm/io.h>
 # include <sm/string.h>
--- libsmutil/Makefile.m4
+++ libsmutil/Makefile.m4	2017-11-29 10:48:50.672312342 +0000
@@ -6,8 +6,12 @@ define(`confREQUIRE_SM_OS_H', `true')
 SMSRCDIR=	ifdef(`confSMSRCDIR', `confSMSRCDIR', `${SRCDIR}/sendmail')
 PREPENDDEF(`confENVDEF', `confMAPDEF')
 PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
+REPLACEDEF(`confCCOPTS', `-fPIE')
+APPENDDEF(`confCCOPTS', `-fPIC')
 
 bldPRODUCT_START(`library', `libsmutil')
+define(`bldINSTALL_DIR', `')
+define(`bldINSTALLABLE', `true')
 define(`bldSOURCES', `debug.c err.c lockfile.c safefile.c snprintf.c cf.c ')
 APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL')
 bldPRODUCT_END
--- mail.local/Makefile.m4
+++ mail.local/Makefile.m4	2017-11-29 08:53:04.308369061 +0000
@@ -20,8 +20,12 @@ bldPRODUCT_START(`manpage', `mail.local'
 define(`bldSOURCES', `mail.local.8')
 bldPRODUCT_END
 
+MAILLOCAL=ifdef(`confFORCE_MAILLOCAL', `force-install', `defeat-install')
+
 divert(bldTARGETS_SECTION)
-install:
+install: ${MAILLOCAL}
+
+defeat-install:
 	@echo "NOTE: This version of mail.local is not suited for some operating"
 	@echo "      systems such as HP-UX and Solaris.  Please consult the"
 	@echo "      README file in the mail.local directory.  You can force"
--- mail.local/mail.local.8
+++ mail.local/mail.local.8	2017-11-29 08:53:04.308369061 +0000
@@ -123,10 +123,10 @@ Used to set the appropriate time zone on
 /tmp/local.XXXXXX
 temporary files
 .TP
-/var/mail/user
+/var/spool/mail/user
 user's default mailbox directory
 .TP 
-/var/mail/user.lock
+/var/spool/mail/user.lock
 lock file for a user's default mailbox
 .PD
 .SH SEE ALSO
--- mailstats/mailstats.8
+++ mailstats/mailstats.8	2017-11-29 08:53:04.308369061 +0000
@@ -108,10 +108,13 @@ The default
 .B sendmail
 configuration file.
 .TP
-/etc/mail/statistics
+/var/lib/sendmail/statistics
 The default
 .B sendmail
 statistics file.
+.TP
+/etc/mail/statistics
+The symbolic link to the statistics file.
 .PD
 .SH SEE ALSO
 mailq(1), 
--- makemap/makemap.8
+++ makemap/makemap.8	2017-11-29 08:53:04.308369061 +0000
@@ -44,20 +44,13 @@ It reads input from the standard input
 and outputs them to the indicated
 .I mapname.
 .PP
-Depending on how it is compiled,
 .B makemap
-handles up to three different database formats, 
+handles two different database formats, 
 selected using the
 .I maptype
 parameter.  
 They may be
 .TP
-dbm
-DBM format maps.  
-This requires the 
-ndbm(3) 
-library.
-.TP
 btree
 B-Tree format maps.  
 This requires the new Berkeley DB 
--- praliases/Makefile.m4
+++ praliases/Makefile.m4	2017-11-29 08:53:04.308369061 +0000
@@ -9,7 +9,8 @@ PREPENDDEF(`confENVDEF', `confMAPDEF')
 PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
 
 bldPRODUCT_START(`executable', `praliases')
-define(`bldINSTALL_DIR', `S')
+define(`bldBIN_TYPE', `U')
+define(`bldINSTALL_DIR', `')
 define(`bldSOURCES', `praliases.c ')
 bldPUSH_SMLIB(`sm')
 bldPUSH_SMLIB(`smutil')
--- rmail/rmail.c
+++ rmail/rmail.c	2017-11-29 08:53:04.308369061 +0000
@@ -276,7 +276,7 @@ main(argc, argv)
 	args[i++] = _PATH_SENDMAIL;	/* Build sendmail's argument list. */
 	args[i++] = "-G";		/* relay submission */
 	args[i++] = "-oee";		/* No errors, just status. */
-	args[i++] = "-odq";		/* Queue it, don't try to deliver. */
+	args[i++] = "-odi";		/* deliver in the foreground. */
 	args[i++] = "-oi";		/* Ignore '.' on a line by itself. */
 
 	/* set from system and protocol used */
--- sendmail/Makefile.m4
+++ sendmail/Makefile.m4	2017-11-29 08:53:04.308369061 +0000
@@ -49,13 +49,16 @@ ${DESTDIR}/etc/mail/submit.cf:
 	cd ${SRCDIR}/cf/cf && make install-submit-cf
 
 MSPQ=ifdef(`confMSP_QUEUE_DIR', `confMSP_QUEUE_DIR', `/var/spool/clientmqueue')
+ID=`$(shell id -u)'
 
 ${DESTDIR}${MSPQ}:
 	@echo "Please read INSTALL if anything fails while installing the binary."
 	@echo "You must have setup a new user ${MSPQOWN} and a new group ${GBINGRP}"
 	@echo "as explained in sendmail/SECURITY."
 	mkdir -p ${DESTDIR}${MSPQ}
+	test ${ID} -ne 0 || \
 	chown ${MSPQOWN} ${DESTDIR}${MSPQ}
+	test ${ID} -ne 0 || \
 	chgrp ${GBINGRP} ${DESTDIR}${MSPQ}
 	chmod 0770 ${DESTDIR}${MSPQ}
 
--- sendmail/SECURITY
+++ sendmail/SECURITY	2017-11-29 08:53:04.308369061 +0000
@@ -49,14 +49,14 @@ The default configuration starting with
 sendmail binary which acts differently based on operation mode and
 supplied options.
 
-sendmail must be a set-group-ID (default group: smmsp, recommended
-gid: 25) program to allow for queueing mail in a group-writable
+sendmail must be a set-group-ID (default group: mail, recommended
+gid: 12) program to allow for queueing mail in a group-writable
 directory.  Two .cf files are required:  sendmail.cf for the daemon
 and submit.cf for the submission program.  The following permissions
 should be used:
 
--r-xr-sr-x	root   smmsp	... /PATH/TO/sendmail
-drwxrwx---	smmsp  smmsp	... /var/spool/clientmqueue
+-r-xr-sr-x	root   mail	... /PATH/TO/sendmail
+drwxrwx---	mail   mail	... /var/spool/clientmqueue
 drwx------	root   wheel	... /var/spool/mqueue
 -r--r--r--	root   wheel	... /etc/mail/sendmail.cf
 -r--r--r--	root   wheel	... /etc/mail/submit.cf
@@ -64,10 +64,10 @@ drwx------	root   wheel	... /var/spool/m
 [Notice: On some OS "wheel" is not used but "bin" or "root" instead,
 however, this is not important here.]
 
-That is, the owner of sendmail is root, the group is smmsp, and
+That is, the owner of sendmail is root, the group is mail, and
 the binary is set-group-ID.  The client mail queue is owned by
-smmsp with group smmsp and is group writable.  The client mail
-queue directory must be writable by smmsp, but it must not be
+mail with group mail and is group writable.  The client mail
+queue directory must be writable by mail, but it must not be
 accessible for others. That is, do not use world read or execute
 permissions.  In submit.cf the option UseMSP must be set, and
 QueueFileMode must be set to 0660.  submit.cf is available in
@@ -83,7 +83,7 @@ sendmail.cf.  This selection can be chan
 
 The daemon must be started by root as usual, e.g.,
 
-/PATH/TO/sendmail -L sm-mta -bd -q1h
+/PATH/TO/sendmail -L sendmail -bd -q1h
 
 (replace /PATH/TO with the right path for your OS, e.g.,
 /usr/sbin or /usr/lib).
@@ -102,15 +102,15 @@ which, however, may have undesired side
 a discussion.  In general it is necessary to clean the queue either
 via a cronjob or by running a daemon, e.g.,
 
-/PATH/TO/sendmail -L sm-msp-queue -Ac -q30m
+/PATH/TO/sendmail -L sendmail-client -Ac -q30m
 
 If the option UseMSP is not set, sendmail will complain during
 queue runs about bogus file permission.  If you want a queue runner
 for the client queue, you probably have to change OS specific
 scripts to accomplish this (check the man pages of your OS for more
 information.)  You can start this program as root, it will change
-its user id to RunAsUser (smmsp by default, recommended uid: 25).
-This way smmsp does not need a valid shell.
+its user id to RunAsUser (mail by default, recommended uid: 8).
+This way mail does not need a valid shell.
 
 Summary
 -------
@@ -120,7 +120,7 @@ This is a brief summary how the two conf
 sendmail.cf	For the MTA (mail transmission agent)
 	The MTA is started by root as daemon:
 
-		/PATH/TO/sendmail -L sm-mta -bd -q1h
+		/PATH/TO/sendmail -L sendmail -bd -q1h
 
 	it accepts SMTP connections (on ports 25 and 587 by default);
 	it runs the main queue (/var/spool/mqueue by default).
@@ -131,20 +131,20 @@ submit.cf	For the MSP (mail submission p
 	daemon; it uses /var/spool/clientmqueue by default; it
 	can be started to run that queue periodically:
 
-		/PATH/TO/sendmail -L sm-msp-queue -Ac -q30m
+		/PATH/TO/sendmail -L sendmail-client -Ac -q30m
 
 
 Hints and Troubleshooting
 -------------------------
 
-RunAsUser: FEATURE(`msp') sets the option RunAsUser to smmsp.
-This user must have the group smmsp, i.e., the same group as the
+RunAsUser: FEATURE(`msp') sets the option RunAsUser to mail.
+This user must have the group mail, i.e., the same group as the
 clientmqueue directory.  If you specify a user whose primary group
 is not the same as that of the clientmqueue directory, then you
 should explicitly set the group, e.g.,
 
 	FEATURE(`msp')
-	define(`confRUN_AS_USER', `mailmsp:smmsp')
+	define(`confRUN_AS_USER', `mailmsp:mail')
 
 STARTTLS: If sendmail is compiled with STARTTLS support on a platform
 that does not have HASURANDOMDEV defined, you either need to specify
--- sendmail/control.c
+++ sendmail/control.c	2017-11-29 08:53:04.308369061 +0000
@@ -137,7 +137,7 @@ opencontrolsocket()
 		}
 	}
 
-	if (chmod(ControlSocketName, S_IRUSR|S_IWUSR) < 0)
+	if (chmod(ControlSocketName, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) < 0)
 	{
 		save_errno = errno;
 		closecontrolsocket(true);
--- sendmail/domain.c
+++ sendmail/domain.c	2017-11-29 08:53:04.308369061 +0000
@@ -870,14 +870,20 @@ cnameloop:
 		if (qtype == initial)
 			gotmx = false;
 		if (tTd(8, 5))
+# if NETINET6
 			sm_dprintf("dns_getcanonname: trying %s.%s (%s)\n",
 				host, *dp,
-# if NETINET6
 				qtype == T_AAAA ? "AAAA" :
-# endif /* NETINET6 */
 				qtype == T_A ? "A" :
 				qtype == T_MX ? "MX" :
 				"???");
+#else /* NETINET6 */
+			sm_dprintf("dns_getcanonname: trying %s.%s (%s)\n",
+				host, *dp,
+				qtype == T_A ? "A" :
+				qtype == T_MX ? "MX" :
+				"???");
+# endif /* NETINET6 */
 		errno = 0;
 		ret = res_querydomain(host, *dp, C_IN, qtype,
 				      answer.qb2, sizeof(answer.qb2));
--- sendmail/readcf.c
+++ sendmail/readcf.c	2017-11-29 08:53:04.308369061 +0000
@@ -1751,15 +1751,20 @@ makemailer(line)
 #endif /* NETUNIX */
 		    )
 		{
+#if NETUNIX
 			(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
 					     "M%s: Warning: first argument in %s mailer must be %s\n",
 					     m->m_name, m->m_mailer,
-#if NETUNIX
 					     "TCP or FILE"
+					     "TCP"
+				     );
 #else /* NETUNIX */
+			(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
+					     "M%s: Warning: first argument in %s mailer must be %s\n",
+					     m->m_name, m->m_mailer,
 					     "TCP"
-#endif /* NETUNIX */
 				     );
+#endif /* NETUNIX */
 		}
 		if (m->m_mtatype == NULL)
 			m->m_mtatype = "dns";
--- sendmail/sendmail.h
+++ sendmail/sendmail.h	2017-11-29 08:53:04.312368985 +0000
@@ -154,14 +154,14 @@ typedef int (*sasl_callback_ft)(void);
 #   define SASL SASL_VERSION
 #  else /* SASL == 1 || SASL == 2 */
 #   if SASL != SASL_VERSION
-  ERROR README: -DSASL (SASL) does not agree with the version of the CYRUS_SASL library (SASL_VERSION)
-  ERROR README: see README!
+#    error  ERROR README: -DSASL (SASL) does not agree with the version of the CYRUS_SASL library (SASL_VERSION)
+#    error  ERROR README: see README!
 #   endif /* SASL != SASL_VERSION */
 #  endif /* SASL == 1 || SASL == 2 */
 # else /* defined(SASL_VERSION_MAJOR) && defined(SASL_VERSION_MINOR) && defined(SASL_VERSION_STEP) */
 #  if SASL == 1
-  ERROR README: please set -DSASL to the version of the CYRUS_SASL library
-  ERROR README: see README!
+#    error  ERROR README: please set -DSASL to the version of the CYRUS_SASL library
+#    error  ERROR README: see README!
 #  endif /* SASL == 1 */
 # endif /* defined(SASL_VERSION_MAJOR) && defined(SASL_VERSION_MINOR) && defined(SASL_VERSION_STEP) */
 #endif /* SASL */
--- sendmail/udb.c
+++ sendmail/udb.c	2017-11-29 08:53:04.312368985 +0000
@@ -1040,24 +1040,29 @@ _udbx_init(e)
 
 #  if DB_VERSION_MAJOR < 2
 					sm_dprintf("dbopen(%s): %s\n",
+						up->udb_dbname,
+						sm_errstring(errno));
 #  else /* DB_VERSION_MAJOR < 2 */
 					sm_dprintf("db_open(%s): %s\n",
-#  endif /* DB_VERSION_MAJOR < 2 */
 						up->udb_dbname,
 						sm_errstring(errno));
+#  endif /* DB_VERSION_MAJOR < 2 */
 					errno = save_errno;
 				}
 				if (errno != ENOENT && errno != EACCES)
 				{
 					if (LogLevel > 2)
-						sm_syslog(LOG_ERR, e->e_id,
 #  if DB_VERSION_MAJOR < 2
+						sm_syslog(LOG_ERR, e->e_id,
 							  "dbopen(%s): %s",
+							  up->udb_dbname,
+							  sm_errstring(errno));
 #  else /* DB_VERSION_MAJOR < 2 */
+						sm_syslog(LOG_ERR, e->e_id,
 							  "db_open(%s): %s",
-#  endif /* DB_VERSION_MAJOR < 2 */
 							  up->udb_dbname,
 							  sm_errstring(errno));
+#  endif /* DB_VERSION_MAJOR < 2 */
 					up->udb_type = UDB_EOLIST;
 					if (up->udb_dbname != spec)
 						sm_free(up->udb_dbname); /* XXX */
@@ -1071,10 +1076,11 @@ _udbx_init(e)
 			{
 #  if DB_VERSION_MAJOR < 2
 				sm_dprintf("_udbx_init: dbopen(%s)\n",
+					up->udb_dbname);
 #  else /* DB_VERSION_MAJOR < 2 */
 				sm_dprintf("_udbx_init: db_open(%s)\n",
-#  endif /* DB_VERSION_MAJOR < 2 */
 					up->udb_dbname);
+#  endif /* DB_VERSION_MAJOR < 2 */
 			}
 			up->udb_type = UDB_DBFETCH;
 			up->udb_pid = CurrentPid;
--- smrsh/README
+++ smrsh/README	2017-11-29 08:53:04.312368985 +0000
@@ -6,7 +6,7 @@ Software Engineering Institute, Carnegie
 intended as a supplement to the CERT advisory CA-93:16.sendmail.vulnerability,
 and to the software, smrsh.c, written by Eric Allman.
 
-
+* Modified to reflect different paths. *
 
 The smrsh(8) program is intended as a replacement for /bin/sh in the
 program mailer definition of sendmail(8).  This README file describes
@@ -56,15 +56,15 @@ These can be added to the devtools/Site/
 global M4 macro confENVDEF or the smrsh specific M4 macro
 conf_smrsh_ENVDEF.
 
-As root, install smrsh in /usr/libexec.  Using the Build script:
+As root, install smrsh in /usr/lib/sendmail.d/bin/.  Using the Build script:
 
 	host.domain# sh ./Build install
 
-For manual installation: install smrsh in the /usr/libexec
+For manual installation: install smrsh in the /usr/lib/sendmail.d/bin/
 directory, with mode 511.
 
-	host.domain# mv smrsh /usr/libexec
-	host.domain# chmod 511 /usr/libexec/smrsh
+	host.domain# mv smrsh /usr/lib/sendmail.d/bin/
+	host.domain# chmod 511 /usr/lib/sendmail.d/bin/smrsh
 
 
 
@@ -79,14 +79,14 @@ to run.  This list of allowable commands
 
 See the man page for aliases(5) if you are unfamiliar with the format of
 these specifications. Additionally, you should include in the list,
-popular commands such as /usr/ucb/vacation.
+popular commands such as /usr/bin/vacation.
 
 You should NOT include interpreter programs such as sh(1), csh(1),
 perl(1), uudecode(1) or the stream editor sed(1) in your list of
 acceptable commands.
 
 If your platform doesn't have a default SMRSH_CMDDIR setting, you will
-next need to create the directory /usr/adm/sm.bin and populate
+next need to create the directory /usr/lib/sendmail.d/bin/ and populate
 it with the programs that your site feels are allowable for sendmail
 to execute.   This directory is explicitly specified in the source
 code for smrsh, so changing this directory must be accompanied with
@@ -95,22 +95,22 @@ a change in smrsh.c.
 
 You will have to be root to make these modifications.
 
-After creating the /usr/adm/sm.bin directory, either copy the programs
+After creating the /usr/lib/sendmail.d/bin/ directory, either copy the programs
 to the directory, or establish links to the allowable programs from
-/usr/adm/sm.bin.  Change the file permissions, so that these programs
+/usr/lib/sendmail.d/bin/.  Change the file permissions, so that these programs
 can not be modified by non-root users.  If you use links, you should
 ensure that the target programs are not modifiable.
 
 To allow the popular vacation(1) program by creating a link in the
-/usr/adm/sm.bin directory, you should:
+/usr/lib/sendmail.d/bin/ directory, you should:
 
-	host.domain# cd /usr/adm/sm.bin
-	host.domain# ln -s /usr/ucb/vacation vacation
+	host.domain# cd /usr/lib/sendmail.d/bin/
+	host.domain# ln -s /usr/bin/vacation vacation
 
 
 
 
-After populating the /usr/adm/sm.bin directory, you can now configure
+After populating the /usr/lib/sendmail.d/bin/ directory, you can now configure
 sendmail to use the restricted shell.  Save the current sendmail.cf
 file prior to modifying it, as a prudent precaution.
 
@@ -125,7 +125,7 @@ help to locate it.
 
 In order to configure sendmail to use smrsh, you must modify the Mprog
 definition in the sendmail.cf file, by replacing the /bin/sh specification
-with /usr/libexec/smrsh.
+with /usr/lib/sendmail.d/bin/smrsh.
 
 As an example:
 
@@ -133,14 +133,14 @@ In most Sun Microsystems' sendmail.cf fi
 Mprog,	P=/bin/sh,   F=lsDFMeuP,  S=10, R=20, A=sh -c $u
 
 which should be changed to:
-Mprog,	P=/usr/libexec/smrsh,   F=lsDFMeuP,  S=10, R=20, A=sh -c $u
+Mprog,	P=/usr/lib/sendmail.d/bin/smrsh,   F=lsDFMeuP,  S=10, R=20, A=sh -c $u
           ^^^^^^^^^^^^^^^^^^
 
 A more generic line may be:
 Mprog,		P=/bin/sh, F=lsDFM, A=sh -c $u
 
 and should be changed to;
-Mprog,		P=/usr/libexec/smrsh, F=lsDFM, A=sh -c $u
+Mprog,		P=/usr/lib/sendmail.d/bin/smrsh, F=lsDFM, A=sh -c $u
 
 
 After modifying the Mprog definition in the sendmail.cf file, if a frozen
--- smrsh/smrsh.8
+++ smrsh/smrsh.8	2017-11-29 08:53:04.312368985 +0000
@@ -39,7 +39,7 @@ Briefly,
 .I smrsh
 limits programs to be in a single directory,
 by default
-/usr/adm/sm.bin,
+/usr/lib/sendmail.d/bin/
 allowing the system administrator to choose the set of acceptable commands,
 and to the shell builtin commands ``exec'', ``exit'', and ``echo''.
 It also rejects any commands with the characters
@@ -50,16 +50,18 @@ It allows ``||'' and ``&&'' to enable co
 ``"|exec /usr/local/bin/filter || exit 75"''
 .PP
 Initial pathnames on programs are stripped,
-so forwarding to ``/usr/ucb/vacation'',
+so forwarding to ``/usr/bin/vacation'',
 ``/usr/bin/vacation'',
 ``/home/server/mydir/bin/vacation'',
 and
 ``vacation''
 all actually forward to
-``/usr/adm/sm.bin/vacation''.
+`/usr/lib/sendmail.d/bin/vacation''.
 .PP
 System administrators should be conservative about populating
-the sm.bin directory.
+the
+/usr/lib/sendmail.d/bin/
+directory.
 For example, a reasonable additions is
 .IR vacation (1),
 and the like.
@@ -68,10 +70,10 @@ never include any shell or shell-like pr
 (such as
 .IR perl (1))
 in the
-sm.bin
+/usr/lib/sendmail.d/bin/
 directory.
 Note that this does not restrict the use of shell or perl scripts
-in the sm.bin directory (using the ``#!'' syntax);
+in the /usr/lib/sendmail.d/bin/ directory (using the ``#!'' syntax);
 it simply disallows execution of arbitrary programs.
 Also, including mail filtering programs such as
 .IR procmail (1)
@@ -83,16 +85,11 @@ allows users to run arbitrary programs i
 Compilation should be trivial on most systems.
 You may need to use \-DSMRSH_PATH=\e"\fIpath\fP\e"
 to adjust the default search path
-(defaults to ``/bin:/usr/bin:/usr/ucb'')
+(defaults to ``/bin:/usr/bin'')
 and/or \-DSMRSH_CMDDIR=\e"\fIdir\fP\e"
 to change the default program directory
-(defaults to ``/usr/adm/sm.bin'').
+(defaults to ``/usr/lib/sendmail.d/bin/'').
 .SH FILES
-/usr/adm/sm.bin \- default directory for restricted programs on most OSs
-.PP
-/var/adm/sm.bin \- directory for restricted programs on HP UX and Solaris
-.PP
-/usr/libexec/sm.bin \- directory for restricted programs on FreeBSD (>= 3.3) and DragonFly BSD
-
+/usr/lib/sendmail.d/bin/ \- default directory for restricted programs on SuSE Linux
 .SH SEE ALSO
 sendmail(8)
--- vacation/vacation.c
+++ vacation/vacation.c	2017-11-29 08:53:04.312368985 +0000
@@ -699,6 +699,7 @@ junkmail(from)
 		{ "uucp",		4	},
 		{ "mailer-daemon",	13	},
 		{ "mailer",		6	},
+		{ "bugzilla-daemon",	15	},
 		{ NULL,			0	}
 	};
 
@@ -707,6 +708,8 @@ junkmail(from)
 		{ "-request",		8	},
 		{ "-relay",		6	},
 		{ "-owner",		6	},
+		{ "-activists",		10	},
+		{ "-programmers",	12	},
 		{ NULL,			0	}
 	};