Apply by doing:
	cd /usr/src
	patch -p0 < 027_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.11
retrieving revision 1.11.2.1
diff -u -r1.11 -r1.11.2.1
--- gnu/usr.sbin/sendmail/cf/README	14 Jan 2002 03:21:39 -0000	1.11
+++ gnu/usr.sbin/sendmail/cf/README	31 Mar 2003 07:07:04 -0000	1.11.2.1
@@ -3572,6 +3572,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
@@ -4237,4 +4238,4 @@
    8	DNS based blacklists
    9	special local rulesets (1 and 2)
 
-$Revision: 1.11 $, Last updated $Date: 2002/01/14 03:21:39 $
+$Revision: 1.11.2.1 $, Last updated $Date: 2003/03/31 07:07:04 $
Index: gnu/usr.sbin/sendmail/sendmail/README
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/README,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -u -r1.11 -r1.11.2.1
--- gnu/usr.sbin/sendmail/sendmail/README	14 Jan 2002 03:21:40 -0000	1.11
+++ gnu/usr.sbin/sendmail/sendmail/README	31 Mar 2003 07:07:06 -0000	1.11.2.1
@@ -476,6 +476,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.
 
 
 +-----------------------+
@@ -1735,4 +1738,4 @@
 version.c	The version number and information about this
 		version of sendmail.
 
-(Version $Revision: 1.11 $, last update $Date: 2002/01/14 03:21:40 $ )
+(Version $Revision: 1.11.2.1 $, last update $Date: 2003/03/31 07:07:06 $ )
Index: gnu/usr.sbin/sendmail/sendmail/collect.c
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/collect.c,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -u -r1.10 -r1.10.2.1
--- gnu/usr.sbin/sendmail/sendmail/collect.c	14 Jan 2002 03:21:40 -0000	1.10
+++ gnu/usr.sbin/sendmail/sendmail/collect.c	31 Mar 2003 07:07:07 -0000	1.10.2.1
@@ -436,6 +436,7 @@
 					  OpMode != MD_DAEMON &&
 					  OpMode != MD_ARPAFTP))
 				{
+					SM_ASSERT(pbp < peekbuf + sizeof(peekbuf));
 					*pbp++ = c;
 					c = '.';
 				}
@@ -447,6 +448,7 @@
 				else
 				{
 					/* push back the ".\rx" */
+					SM_ASSERT(pbp < peekbuf + sizeof(peekbuf));
 					*pbp++ = c;
 					*pbp++ = '\r';
 					c = '.';
@@ -610,6 +612,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.12
retrieving revision 1.12.2.1
diff -u -r1.12 -r1.12.2.1
--- gnu/usr.sbin/sendmail/sendmail/conf.c	25 Mar 2002 19:16:07 -0000	1.12
+++ gnu/usr.sbin/sendmail/sendmail/conf.c	31 Mar 2003 07:07:07 -0000	1.12.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.10
retrieving revision 1.10.2.1
diff -u -r1.10 -r1.10.2.1
--- gnu/usr.sbin/sendmail/sendmail/deliver.c	17 Feb 2002 23:46:27 -0000	1.10
+++ gnu/usr.sbin/sendmail/sendmail/deliver.c	31 Mar 2003 07:07:07 -0000	1.10.2.1
@@ -1140,7 +1140,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)
 		{
@@ -4660,7 +4660,11 @@
 				{
 					pos += bp - buf;
 					if (c != '\r')
+					{
+						SM_ASSERT(pbp < peekbuf +
+								sizeof(peekbuf));
 						*pbp++ = c;
+					}
 				}
 
 				bp = buf;
@@ -4700,6 +4704,7 @@
 				}
 
 				/* had a naked carriage return */
+				SM_ASSERT(pbp < peekbuf + sizeof(peekbuf));
 				*pbp++ = c;
 				c = '\r';
 				ostate = OS_INLINE;
@@ -4728,7 +4733,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)
 					{
@@ -4778,6 +4787,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.10
retrieving revision 1.10.2.2
diff -u -r1.10 -r1.10.2.2
--- gnu/usr.sbin/sendmail/sendmail/parseaddr.c	14 Jan 2002 03:21:40 -0000	1.10
+++ gnu/usr.sbin/sendmail/sendmail/parseaddr.c	31 Mar 2003 07:07:07 -0000	1.10.2.2
@@ -574,7 +574,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)
@@ -660,6 +660,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';
@@ -671,11 +672,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 */
@@ -730,6 +735,9 @@
 				}
 				else if (c != '!' || state == QST)
 				{
+					/* see if there is room */
+					if (q >= &pvpbuf[pvpbsize - 5])
+						goto addrtoolong;
 					*q++ = '\\';
 					continue;
 				}
@@ -815,6 +823,9 @@
 		/* new token */
 		if (tok != q)
 		{
+			/* see if there is room */
+			if (q >= &pvpbuf[pvpbsize - 5])
+				goto addrtoolong;
 			*q++ = '\0';
 			if (tTd(22, 36))
 			{
