Apply by doing:
	cd /usr/src
	patch -p0 < 014_sendmail.patch

And then rebuild and install sendmail:
	cd gnu/usr.sbin/sendmail
	make depend
	make
	make install

Restart sendmail if necessary:
	kill -HUP `sed q /var/run/sendmail.pid`

Index: gnu/usr.sbin/sendmail/cf/README
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/cf/README,v
retrieving revision 1.15
retrieving revision 1.15.2.1
diff -u -r1.15 -r1.15.2.1
--- gnu/usr.sbin/sendmail/cf/README	15 Sep 2002 02:23:35 -0000	1.15
+++ gnu/usr.sbin/sendmail/cf/README	31 Mar 2003 01:01:46 -0000	1.15.2.1
@@ -3630,6 +3630,7 @@
 confMAX_MIME_HEADER_LENGTH  MaxMimeHeaderLength
 					[undefined] Maximum length of
 					certain MIME header field values.
+					If not set, sendmail uses 2048/1024.
 confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
 					[undefined] The maximum number of
 					connections permitted per second per
@@ -4311,4 +4312,4 @@
    8	DNS based blacklists
    9	special local rulesets (1 and 2)
 
-$Revision: 1.15 $, Last updated $Date: 2002/09/15 02:23:35 $
+$Revision: 1.15.2.1 $, Last updated $Date: 2003/03/31 01:01:46 $
Index: gnu/usr.sbin/sendmail/sendmail/README
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/README,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -r1.14 -r1.14.2.1
--- gnu/usr.sbin/sendmail/sendmail/README	26 Jun 2002 04:48:55 -0000	1.14
+++ gnu/usr.sbin/sendmail/sendmail/README	31 Mar 2003 01:01:47 -0000	1.14.2.1
@@ -475,6 +475,9 @@
 		parameter of main().
 USE_DOUBLE_FORK By default this is on (1).  Set it to 0 to suppress the
 		extra fork() used to avoid intermediate zombies.
+ALLOW_255	Do not convert (char)0xff to (char)0x7f in headers etc.
+		This can also be done at runtime with the command line
+		option -d82.101.
 
 
 +-----------------------+
@@ -1768,4 +1771,4 @@
 version.c	The version number and information about this
 		version of sendmail.
 
-(Version $Revision: 1.14 $, last update $Date: 2002/06/26 04:48:55 $ )
+(Version $Revision: 1.14.2.1 $, last update $Date: 2003/03/31 01:01:47 $ )
Index: gnu/usr.sbin/sendmail/sendmail/collect.c
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/collect.c,v
retrieving revision 1.13
retrieving revision 1.13.2.1
diff -u -r1.13 -r1.13.2.1
--- gnu/usr.sbin/sendmail/sendmail/collect.c	15 Sep 2002 02:23:35 -0000	1.13
+++ gnu/usr.sbin/sendmail/sendmail/collect.c	31 Mar 2003 01:01:47 -0000	1.13.2.1
@@ -434,6 +434,7 @@
 					  OpMode != MD_ARPAFTP))
 
 				{
+					SM_ASSERT(pbp < peekbuf + sizeof(peekbuf));
 					*pbp++ = c;
 					c = '.';
 				}
@@ -445,6 +446,7 @@
 				else
 				{
 					/* push back the ".\rx" */
+					SM_ASSERT(pbp < peekbuf + sizeof(peekbuf));
 					*pbp++ = c;
 					if (OpMode != MD_SMTP &&
 					    OpMode != MD_DAEMON &&
@@ -615,6 +617,7 @@
 			}
 
 			/* trim off trailing CRLF or NL */
+			SM_ASSERT(bp > buf);
 			if (*--bp != '\n' || *--bp != '\r')
 				bp++;
 			*bp = '\0';
Index: gnu/usr.sbin/sendmail/sendmail/conf.c
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/conf.c,v
retrieving revision 1.16
retrieving revision 1.16.2.1
diff -u -r1.16 -r1.16.2.1
--- gnu/usr.sbin/sendmail/sendmail/conf.c	15 Sep 2002 02:23:35 -0000	1.16
+++ gnu/usr.sbin/sendmail/sendmail/conf.c	31 Mar 2003 01:01:47 -0000	1.16.2.1
@@ -330,6 +330,8 @@
 	DontProbeInterfaces = DPI_PROBEALL;
 	DoubleBounceAddr = "postmaster";
 	MaxHeadersLength = MAXHDRSLEN;
+	MaxMimeHeaderLength = MAXLINE;
+	MaxMimeFieldLength = MaxMimeHeaderLength / 2;
 	MaxForwardEntries = 0;
 	FastSplit = 1;
 #if SASL
Index: gnu/usr.sbin/sendmail/sendmail/deliver.c
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/deliver.c,v
retrieving revision 1.16
retrieving revision 1.16.2.1
diff -u -r1.16 -r1.16.2.1
--- gnu/usr.sbin/sendmail/sendmail/deliver.c	15 Sep 2002 02:23:35 -0000	1.16
+++ gnu/usr.sbin/sendmail/sendmail/deliver.c	31 Mar 2003 01:01:47 -0000	1.16.2.1
@@ -1154,7 +1154,7 @@
 		/* Need to account for IPv6 bracketed addresses */
 		if (*a == '[')
 			braclev++;
-		else if (*a == '[' && braclev > 0)
+		else if (*a == ']' && braclev > 0)
 			braclev--;
 		else if (*a == ':' && braclev <= 0)
 		{
@@ -4700,7 +4700,11 @@
 				{
 					pos += bp - buf;
 					if (c != '\r')
+					{
+						SM_ASSERT(pbp < peekbuf +
+								sizeof(peekbuf));
 						*pbp++ = c;
+					}
 				}
 
 				bp = buf;
@@ -4740,6 +4744,7 @@
 				}
 
 				/* had a naked carriage return */
+				SM_ASSERT(pbp < peekbuf + sizeof(peekbuf));
 				*pbp++ = c;
 				c = '\r';
 				ostate = OS_INLINE;
@@ -4768,7 +4773,11 @@
 					else if ((d = sm_io_getc(e->e_dfp,
 								 SM_TIME_DEFAULT))
 						 != SM_IO_EOF)
+					{
+						SM_ASSERT(pbp < peekbuf +
+									sizeof(peekbuf));
 						*pbp++ = d;
+					}
 
 					if (d == '\n' || d == SM_IO_EOF)
 					{
@@ -4818,6 +4827,8 @@
 								     mci->mci_mailer->m_eol);
 					}
 					ostate = OS_HEAD;
+					SM_ASSERT(pbp < peekbuf +
+							sizeof(peekbuf));
 					*pbp++ = c;
 					continue;
 				}
Index: gnu/usr.sbin/sendmail/sendmail/parseaddr.c
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/parseaddr.c,v
retrieving revision 1.13
retrieving revision 1.13.2.2
diff -u -r1.13 -r1.13.2.2
--- gnu/usr.sbin/sendmail/sendmail/parseaddr.c	15 Sep 2002 02:23:36 -0000	1.13
+++ gnu/usr.sbin/sendmail/sendmail/parseaddr.c	31 Mar 2003 01:01:47 -0000	1.13.2.2
@@ -608,7 +608,7 @@
 };
 
 
-#define NOCHAR		-1	/* signal nothing in lookahead token */
+#define NOCHAR		(-1)	/* signal nothing in lookahead token */
 
 char **
 prescan(addr, delim, pvpbuf, pvpbsize, delimptr, toktab)
@@ -694,6 +694,7 @@
 				/* see if there is room */
 				if (q >= &pvpbuf[pvpbsize - 5])
 				{
+	addrtoolong:
 					usrerr("553 5.1.1 Address too long");
 					if (strlen(addr) > MAXNAME)
 						addr[MAXNAME] = '\0';
@@ -705,11 +706,15 @@
 				}
 
 				/* squirrel it away */
+#if !ALLOW_255
+				if ((char) c == (char) -1 && !tTd(82, 101))
+					c &= 0x7f;
+#endif /* !ALLOW_255 */
 				*q++ = c;
 			}
 
 			/* read a new input character */
-			c = *p++;
+			c = (*p++) & 0x00ff;
 			if (c == '\0')
 			{
 				/* diagnose and patch up bad syntax */
@@ -764,6 +769,9 @@
 				}
 				else if (c != '!' || state == QST)
 				{
+					/* see if there is room */
+					if (q >= &pvpbuf[pvpbsize - 5])
+						goto addrtoolong;
 					*q++ = '\\';
 					continue;
 				}
@@ -849,6 +857,9 @@
 		/* new token */
 		if (tok != q)
 		{
+			/* see if there is room */
+			if (q >= &pvpbuf[pvpbsize - 5])
+				goto addrtoolong;
 			*q++ = '\0';
 			if (tTd(22, 36))
 			{
