Bug 22619

Summary: Fix mail/sendmail (by maintainer)
Product: Ports & Packages Reporter: dirk.meyer <dirk.meyer>
Component: Individual Port(s)Assignee: Dirk Meyer <dinoex>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description dirk.meyer 2000-11-05 13:00:01 UTC
	Small improvements for remote build.
	The empty config directory is now removed.
	Use of macro APPENDDEF to allow local addition to confCCOPTS
	( e.G. milter and other FFR options )
	PORTREVISION is not increased.

Fix: apply the small patches.

diff sendmail/Makefile sendmail-8.11.1/Makefile
Comment 1 dirk.meyer 2000-11-08 13:26:48 UTC
more imovements:

	- TCPWARPPER for FreeBSD >= 4.0
	- IPv6 for FreeBSD >= 4.0
	- optional TSL support (2.2.8, 3.x, 4.x)
	- patches for rmail and mail.local
	- CFLAGS now reduced for the filesi who need it
	- extendable Definitions

kind regards Dirk

- Dirk Meyer, Im Grund 4, 34317 Habichtswald, Germany

patch to base version: in cvs
(includes previous diff)

diff sendmail/Makefile sendmail-8.11.1/Makefile
--- sendmail/Makefile	Thu Oct 26 09:29:34 2000
+++ sendmail-8.11.1/Makefile	Wed Nov  8 14:18:15 2000
@@ -7,6 +7,7 @@
 
 PORTNAME=	sendmail
 PORTVERSION=	8.11.1
+PORTREVISION=	1
 CATEGORIES=	mail
 MASTER_SITES=	ftp://ftp.sendmail.org/pub/sendmail/
 DISTNAME=	${PORTNAME}.${PORTVERSION}
@@ -18,14 +19,26 @@
 WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}
 PLIST=		${WRKDIR}/.PLIST.more
 
-.if exists(/etc/mail/mailer.conf)
+.if defined(SENDMAIL_WITH_TSL)
+USE_OPENSSL=	yes
+.endif
+
+.if exists(${DESTDIR}/etc/mail/mailer.conf)
 pre-configure:
 	${SED} -e "s=%%PREFIX%%=${PREFIX}=" \
 	${FILESDIR}/site.config.m4 >${WRKSRC}/devtools/Site/site.config.m4
+.if defined(SENDMAIL_WITH_TSL)
+	${CAT} ${FILESDIR}/site.config.m4.tls \
+		>>${WRKSRC}/devtools/Site/site.config.m4
+.endif
 .else
 pre-configure:
 	${SED} -e "s=%%PREFIX%%=${PREFIX}=" \
 	${FILESDIR}/site.config.m4.pre4 >${WRKSRC}/devtools/Site/site.config.m4
+.if defined(SENDMAIL_WITH_TSL)
+	${SED} -e "s=%%LOCALBASE%%=${LOCALBASE}=" \
+	${FILESDIR}/site.config.m4.ssl >>${WRKSRC}/devtools/Site/site.config.m4
+.endif
 
 PREFIX?=	${DESTDIR}/usr
 MANPREFIX?=	${DESTDIR}/usr/share
@@ -46,6 +59,7 @@
 	${AWK} '{print "share/sendmail/" $$1}' >>${PLIST}
 	cd ${WRKSRC} && find -d cf -type d | \
 	${AWK} '{print "@dirrm share/sendmail/" $$1}' >>${PLIST}
+	${ECHO} "@dirrm share/sendmail" >>${PLIST}
 .endif
 
 # We want mail.local and rmail for our system.
diff sendmail/files/patch-aa sendmail-8.11.1/files/patch-aa
--- sendmail/files/patch-aa	Thu Jan  1 01:00:00 1970
+++ sendmail-8.11.1/files/patch-aa	Mon Nov  6 12:11:56 2000
@@ -0,0 +1,326 @@
+diff -ur cf/m4/cfhead.m4 src/contrib/sendmail/cf/m4/cfhead.m4
+--- cf/m4/cfhead.m4	Thu Aug 24 19:09:50 2000
++++ src/contrib/sendmail/cf/m4/cfhead.m4	Mon Nov  6 11:23:40 2000
+@@ -9,6 +9,7 @@
+ # forth in the LICENSE file which can be found at the top level of
+ # the sendmail distribution.
+ #
++# $FreeBSD: src/contrib/sendmail/cf/m4/cfhead.m4,v 1.3.6.2 2000/10/10 05:07:17 gshapiro Exp $
+ #
+ 
+ ######################################################################
+@@ -214,7 +215,8 @@
+ define(`_REC_FULL_AUTH_', `$.$?{auth_type}(authenticated as ${auth_authen} $?{auth_author}for ${auth_author} $.with ${auth_type}')
+ define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
+ define(`_REC_END_', `for $u; $|;
+-	$.$b')
++	$.$b$?g
++	(envelope-from $g)$.')
+ define(`_REC_TLS_', `(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u')
+ define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
+ define(`confRECEIVED_HEADER', `_REC_HDR_
+diff -ur cf/ostype/bsd4.4.m4 src/contrib/sendmail/cf/ostype/bsd4.4.m4
+--- cf/ostype/bsd4.4.m4	Sun Apr 25 22:00:56 1999
++++ src/contrib/sendmail/cf/ostype/bsd4.4.m4	Wed Oct  4 23:19:29 2000
+@@ -10,11 +10,12 @@
+ # forth in the LICENSE file which can be found at the top level of
+ # the sendmail distribution.
+ #
+-#
++# $FreeBSD: src/contrib/sendmail/cf/ostype/bsd4.4.m4,v 1.3.6.1 2000/08/27 17:31:10 gshapiro Exp $
+ #
+ 
+ divert(0)
+ VERSIONID(`$Id: bsd4.4.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $')
+ 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(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl
+ ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
+diff -ur cf/sh/makeinfo.sh src/contrib/sendmail/cf/sh/makeinfo.sh
+--- cf/sh/makeinfo.sh	Sun Feb  7 08:26:25 1999
++++ src/contrib/sendmail/cf/sh/makeinfo.sh	Wed Oct  4 23:19:29 2000
+@@ -13,6 +13,8 @@
+ #
+ #	$Id: makeinfo.sh,v 8.14 1999/02/07 07:26:25 gshapiro Exp $
+ #
++# $FreeBSD: src/contrib/sendmail/cf/sh/makeinfo.sh,v 1.3.6.1 2000/08/27 17:31:13 gshapiro Exp $
++#
+ 
+ usewhoami=0
+ usehostname=0
+@@ -52,7 +54,7 @@
+ else
+ 	host=`uname -n`
+ fi
+-echo '#####' built by $user@$host on `date`
++echo '#####' built by $user@$host on `LC_TIME=C date`
+ echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
+ echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//'
+ echo "define(\`__HOST__', $host)dnl"
+diff -ur mail.local/mail.local.8 src/contrib/sendmail/mail.local/mail.local.8
+--- mail.local/mail.local.8	Sun Sep 17 19:04:25 2000
++++ src/contrib/sendmail/mail.local/mail.local.8	Mon Nov  6 11:23:41 2000
+@@ -10,13 +10,15 @@
+ .\"
+ .\"	$Id: mail.local.8,v 8.14.14.3 2000/09/17 17:04:25 gshapiro Exp $
+ .\"
++.\" $FreeBSD: src/contrib/sendmail/mail.local/mail.local.8,v 1.5.6.2 2000/10/10 05:07:22 gshapiro Exp $
++.\"
+ .TH MAIL.LOCAL 8 "$Date: 2000/09/17 17:04:25 $"
+ .SH NAME
+ .B mail.local
+ \- store mail in a mailbox
+ .SH SYNOPSIS
+ .B mail.local
+-.RB [ \-7 "] [" \-b "] [" \-d "] [" \-l "] [" \-f 
++.RB [ \-7 "] [" \-B "] [" \-b "] [" \-d "] [" \-l "] [" \-s "] [" \-f 
+ .IR from "] " "user ..."
+ .SH DESCRIPTION
+ .B Mail.local
+@@ -32,6 +34,11 @@
+ .B \-7
+ Do not advertise 8BITMIME support in LMTP mode.
+ .TP 
++.B \-B
++Turn off the attempts to notify the
++.Dq biff
++service.
++.TP 
+ .B \-b
+ Return a permanent error instead of a temporary error
+ if a mailbox exceeds quota.
+@@ -44,6 +51,13 @@
+ .TP
+ .B \-l
+ Turn on LMTP mode.
++.TP
++.B \-s
++Turn off the
++.Xr fsync 2
++call that forces the mailbox to be committed to disk before returning a
++.Dq success
++status.
+ .TP 
+ .BI \-r " from"
+ Specify the sender's name (for backward compatibility).
+@@ -91,7 +105,6 @@
+ .PD
+ .SH SEE ALSO
+ mail(1), 
+-xsend(1), 
+ flock(2), 
+ getservbyname(3), 
+ comsat(8), 
+diff -ur mail.local/mail.local.c src/contrib/sendmail/mail.local/mail.local.c
+--- mail.local/mail.local.c	Fri Sep 22 18:30:09 2000
++++ src/contrib/sendmail/mail.local/mail.local.c	Mon Nov  6 11:23:42 2000
+@@ -22,6 +22,8 @@
+ static char id[] = "@(#)$Id: mail.local.c,v 8.143.4.37 2000/09/22 00:49:10 doug Exp $";
+ #endif /* ! lint */
+ 
++/* $FreeBSD: src/contrib/sendmail/mail.local/mail.local.c,v 1.6.6.3 2000/10/10 22:28:25 gshapiro Exp $ */
++
+ /*
+ **  This is not intended to work on System V derived systems
+ **  such as Solaris or HP-UX, since they use a totally different
+@@ -170,7 +172,7 @@
+ 
+ # if defined(BSD4_4) || defined(__GLIBC__)
+ #   include <paths.h>
+-#  define _PATH_LOCTMP	"/tmp/local.XXXXXX"
++#  define _PATH_LOCTMP	"/var/tmp/local.XXXXXX"
+ # endif /* defined(BSD4_4) || defined(__GLIBC__) */
+ 
+ # ifdef BSD4_4
+@@ -229,7 +231,7 @@
+ # endif /* USE_SETRESUID */
+ 
+ # ifndef _PATH_LOCTMP
+-#  define _PATH_LOCTMP	"/tmp/local.XXXXXX"
++#  define _PATH_LOCTMP	"/var/tmp/local.XXXXXX"
+ # endif /* ! _PATH_LOCTMP */
+ #  ifndef _PATH_MAILDIR
+ #   define _PATH_MAILDIR	"/var/spool/mail"
+@@ -264,6 +266,8 @@
+ int	ExitVal = EX_OK;		/* sysexits.h error value. */
+ bool	LMTPMode = FALSE;
+ bool	bouncequota = FALSE;		/* permanent error when over quota */
++bool	nobiff = FALSE;
++bool	nofsync = FALSE;
+ 
+ void	deliver __P((int, char *, bool));
+ int	e_to_sys __P((int));
+@@ -304,7 +308,7 @@
+ # endif /* LOG_MAIL */
+ 
+ 	from = NULL;
+-	while ((ch = getopt(argc, argv, "7bdf:r:l")) != -1)
++	while ((ch = getopt(argc, argv, "7Bbdf:r:ls")) != -1)
+ 	{
+ 		switch(ch)
+ 		{
+@@ -312,6 +316,10 @@
+ 			EightBitMime = FALSE;
+ 			break;
+ 
++		  case 'B':
++			nobiff = TRUE;
++			break;
++
+ 		  case 'b':		/* bounce mail when over quota. */
+ 			bouncequota = TRUE;
+ 			break;
+@@ -333,6 +341,10 @@
+ 			LMTPMode = TRUE;
+ 			break;
+ 
++		  case 's':
++			nofsync++;
++			break;
++
+ 		  case '?':
+ 		  default:
+ 			usage();
+@@ -342,7 +354,8 @@
+ 	argv += optind;
+ 
+ 	/* initialize biff structures */
+-	notifybiff(NULL);
++	if (!nobiff)
++		notifybiff(NULL);
+ 
+ 	if (LMTPMode)
+ 		dolmtp(bouncequota);
+@@ -1127,14 +1140,17 @@
+ 		goto err1;
+ 	}
+ 
+-	/* Get the starting offset of the new message for biff. */
+-	curoff = lseek(mbfd, (off_t)0, SEEK_END);
+-	if (sizeof curoff > sizeof(long))
+-		(void) snprintf(biffmsg, sizeof(biffmsg), "%s@%s\n",
+-				name, quad_to_string(curoff));
+-	else
+-		(void) snprintf(biffmsg, sizeof(biffmsg), "%s@%ld\n",
+-				name, (long) curoff);
++	if (!nobiff)
++	{
++		/* Get the starting offset of the new message for biff. */
++		curoff = lseek(mbfd, (off_t)0, SEEK_END);
++		if (sizeof curoff > sizeof(long))
++			(void) snprintf(biffmsg, sizeof(biffmsg), "%s@%s\n",
++					name, quad_to_string(curoff));
++		else
++			(void) snprintf(biffmsg, sizeof(biffmsg), "%s@%ld\n",
++					name, (long) curoff);
++	}
+ 
+ 	/* Copy the message into the file. */
+ 	if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1)
+@@ -1196,7 +1212,7 @@
+ 	}
+ 
+ 	/* Flush to disk, don't wait for update. */
+-	if (fsync(mbfd) < 0)
++	if (!nofsync && fsync(mbfd) < 0)
+ 	{
+ 		mailerr("450 4.2.0", "%s: %s", path, errstring(errno));
+ err3:
+@@ -1230,7 +1246,7 @@
+ 		mailerr("450 4.2.0", "%s: %s", path, errstring(errno));
+ 		(void) truncate(path, curoff);
+ 	}
+-	else
++	else if (!nobiff)
+ 		notifybiff(biffmsg);
+ 
+ 	if (setreuid(0, 0) < 0)
+@@ -1409,7 +1425,7 @@
+ usage()
+ {
+ 	ExitVal = EX_USAGE;
+-	mailerr(NULL, "usage: mail.local [-7] [-b] [-l] [-f from] user ...");
++	mailerr(NULL, "usage: mail.local [-7] [-B] [-b] [-l] [-f from] [-s] user ...");
+ 	exit(ExitVal);
+ }
+ 
+diff -ur rmail/rmail.c src/contrib/sendmail/rmail/rmail.c
+--- rmail/rmail.c	Sun Sep 17 00:20:25 2000
++++ src/contrib/sendmail/rmail/rmail.c	Mon Nov  6 11:23:42 2000
+@@ -22,6 +22,8 @@
+ static char id[] = "@(#)$Id: rmail.c,v 8.39.4.8 2000/09/16 22:20:25 gshapiro Exp $";
+ #endif /* ! lint */
+ 
++/* $FreeBSD: src/contrib/sendmail/rmail/rmail.c,v 1.4.6.2 2000/10/10 05:07:23 gshapiro Exp $ */
++
+ /*
+  * RMAIL -- UUCP mail server.
+  *
+@@ -318,7 +320,11 @@
+ 	args[i++] = _PATH_SENDMAIL;	/* Build sendmail's argument list. */
+ 	args[i++] = "-G";		/* relay submission */
+ 	args[i++] = "-oee";		/* No errors, just status. */
++#ifdef QUEUE_ONLY
+ 	args[i++] = "-odq";		/* Queue it, don't try to deliver. */
++#else
++	args[i++] = "-odi";		/* Deliver in foreground. */
++#endif
+ 	args[i++] = "-oi";		/* Ignore '.' on a line by itself. */
+ 
+ 	/* set from system and protocol used */
+diff -ur smrsh/smrsh.8 src/contrib/sendmail/smrsh/smrsh.8
+--- smrsh/smrsh.8	Tue Jun 15 06:50:19 1999
++++ src/contrib/sendmail/smrsh/smrsh.8	Wed Oct  4 23:19:47 2000
+@@ -11,6 +11,8 @@
+ .\"
+ .\"     $Id: smrsh.8,v 8.11 1999/06/09 16:51:07 ca Exp $
+ .\"
++.\" $FreeBSD: src/contrib/sendmail/smrsh/smrsh.8,v 1.3.6.1 2000/08/27 17:31:24 gshapiro Exp $
++.\"
+ .TH SMRSH 8 11/02/93
+ .SH NAME
+ smrsh \- restricted shell for sendmail
+@@ -38,7 +40,7 @@
+ Briefly,
+ .I smrsh
+ limits programs to be in the directory
+-/usr/adm/sm.bin,
++/usr/libexec/sm.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
+@@ -49,16 +51,15 @@
+ ``"|exec /usr/local/bin/procmail -f- /etc/procmailrcs/user || exit 75"''
+ .PP
+ Initial pathnames on programs are stripped,
+-so forwarding to ``/usr/ucb/vacation'',
+-``/usr/bin/vacation'',
++so forwarding to ``/usr/bin/vacation'',
+ ``/home/server/mydir/bin/vacation'',
+ and
+ ``vacation''
+ all actually forward to
+-``/usr/adm/sm.bin/vacation''.
++``/usr/libexec/sm.bin/vacation''.
+ .PP
+ System administrators should be conservative about populating
+-/usr/adm/sm.bin.
++/usr/libexec/sm.bin.
+ Reasonable additions are
+ .IR vacation (1),
+ .IR procmail (1),
+@@ -77,11 +78,11 @@
+ Compilation should be trivial on most systems.
+ You may need to use \-DPATH=\e"\fIpath\fP\e"
+ to adjust the default search path
+-(defaults to ``/bin:/usr/bin:/usr/ucb'')
++(defaults to ``/bin:/usr/bin'')
+ and/or \-DCMDBIN=\e"\fIdir\fP\e"
+ to change the default program directory
+-(defaults to ``/usr/adm/sm.bin'').
++(defaults to ``/usr/libexec/sm.bin'').
+ .SH FILES
+-/usr/adm/sm.bin \- directory for restricted programs
++/usr/libexec/sm.bin \- directory for restricted programs
+ .SH SEE ALSO
+ sendmail(8)
diff sendmail/files/site.config.m4 sendmail-8.11.1/files/site.config.m4
--- sendmail/files/site.config.m4	Sat Oct 14 06:51:41 2000
+++ sendmail-8.11.1/files/site.config.m4	Mon Nov  6 15:56:23 2000
@@ -4,4 +4,10 @@
 define(`confMBINDIR',`%%PREFIX%%/sbin')
 define(`confSBINDIR',`%%PREFIX%%/sbin')
 define(`confUBINDIR',`%%PREFIX%%/bin')
-define(`confCCOPTS',`-DCMDDIR="\"%%PREFIX%%/libexec/sm.bin\"" -DPATH="\"/bin:/usr/bin\""')
+APPENDDEF(`conf_sendmail_ENVDEF', `-DTCPWRAPPERS')
+APPENDDEF(`conf_sendmail_LIBS', `-lwrap')"
+APPENDDEF(`conf_sendmail_ENVDEF', `-DNETINET6')
+APPENDDEF(`conf_libmilter_ENVDEF', `-DNETINET6')
+APPENDDEF(`conf_mail_local_ENVDEF', `-DQUEUE_ONLY')
+APPENDDEF(`conf_smrsh_ENVDEF', `-DCMDDIR="\"%%PREFIX%%/libexec/sm.bin\""')
+APPENDDEF(`conf_smrsh_ENVDEF', `-DPATH="\"/bin:/usr/bin\""')
--- sendmail/files/site.config.m4.pre4	Sat Oct 14 06:51:41 2000
+++ sendmail-8.11.1/files/site.config.m4.pre4	Mon Nov  6 19:16:09 2000
@@ -1 +1,3 @@
-define(`confCCOPTS',`-DCMDDIR="\"%%PREFIX%%/libexec/sm.bin\"" -DPATH="\"/bin:/usr/bin\""')
+APPENDDEF(`conf_mail_local_ENVDEF', `-DQUEUE_ONLY')
+APPENDDEF(`conf_smrsh_ENVDEF', `-DCMDDIR="\"%%PREFIX%%/libexec/sm.bin\""')
+APPENDDEF(`conf_smrsh_ENVDEF', `-DPATH="\"/bin:/usr/bin\""')
diff sendmail/files/site.config.m4.ssl sendmail-8.11.1/files/site.config.m4.ssl
--- sendmail/files/site.config.m4.ssl	Thu Jan  1 01:00:00 1970
+++ sendmail-8.11.1/files/site.config.m4.ssl	Mon Nov  6 19:50:28 2000
@@ -0,0 +1,3 @@
+APPENDDEF(`confLIBDIRS', `-L%%LOCALBASE%%/lib')
+APPENDDEF(`confINCDIRS', `-I%%LOCALBASE%%/include')
+APPENDDEF(`conf_sendmail_ENVDEF', `-DHASSRANDOMDEV')
diff sendmail/files/site.config.m4.tls sendmail-8.11.1/files/site.config.m4.tls
--- sendmail/files/site.config.m4.tls	Thu Jan  1 01:00:00 1970
+++ sendmail-8.11.1/files/site.config.m4.tls	Mon Nov  6 18:50:59 2000
@@ -0,0 +1,5 @@
+APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS')
+APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_TLS_O_T')
+APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_TLS_1')
+APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_TLS_TOREK')
+APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')
Comment 2 Will Andrews freebsd_committer freebsd_triage 2000-12-21 07:32:27 UTC
State Changed
From-To: open->closed

Committed, thanks.  I added this port to IPV6 virtual category, 
if that's OK with you.