diff -ur sendmail-8.13.8-orig/cf/m4/proto.m4 sendmail-8.13.8-singlebounce/cf/m4/proto.m4
--- sendmail-8.13.8-orig/cf/m4/proto.m4	2006-03-30 15:50:13.000000000 -0500
+++ sendmail-8.13.8-singlebounce/cf/m4/proto.m4	2006-10-23 19:24:25.000000000 -0400
@@ -565,6 +565,10 @@
 # where do errors that occur when sending errors get sent?
 _OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS', `postmaster')
 
+ifdef(`_FFR_SINGLE_BOUNCE_ADDR',`dnl
+# where do errors get diverted to? The option is macro expanded at runtime.
+_OPTION(SingleBounceAddr, `confSINGLE_BOUNCE_ADDRESS', `')')
+
 # where to save bounces if all else fails
 _OPTION(DeadLetterDrop, `confDEAD_LETTER_DROP', `/var/tmp/dead.letter')
 
Only in sendmail-8.13.8-singlebounce/: debugout
Only in sendmail-8.13.8-singlebounce/: obj.Linux.2.6.12.3686-smp-0.1.0.i686
diff -ur sendmail-8.13.8-orig/sendmail/conf.c sendmail-8.13.8-singlebounce/sendmail/conf.c
--- sendmail-8.13.8-orig/sendmail/conf.c	2006-03-22 17:49:33.000000000 -0500
+++ sendmail-8.13.8-singlebounce/sendmail/conf.c	2006-10-23 19:21:12.000000000 -0400
@@ -6223,6 +6223,10 @@
 	/* increase key size for LDAP lookups, see conf.h */
 	"_FFR_MAXKEY",
 #endif /* _FFR_MAXKEY */
+#if _FFR_SINGLE_BOUNCE_ADDR
+	/* add new option SingleBounceAddr to be used to divert bounces */
+	"_FFR_SINGLE_BOUNCE_ADDR",
+#endif /* _FFR_SINGLE_BOUNCE_ADDR */
 #if _FFR_MAXNOOPCOMMANDS
 	/* runtime option for "MaxNOOPCommands" */
 	"_FFR_MAXNOOPCOMMANDS",
diff -ur sendmail-8.13.8-orig/sendmail/readcf.c sendmail-8.13.8-singlebounce/sendmail/readcf.c
--- sendmail-8.13.8-orig/sendmail/readcf.c	2006-03-02 14:17:09.000000000 -0500
+++ sendmail-8.13.8-singlebounce/sendmail/readcf.c	2006-10-23 19:19:44.000000000 -0400
@@ -2199,6 +2199,10 @@
 # define O_MEMRESOURCE	0xdb
 	{ "MemoryResource",	O_MEMRESOURCE,	OI_NONE },
 #endif /* _FFR_MEMSTAT */
+#if _FFR_SINGLE_BOUNCE_ADDR
+# define O_SINGLEBOUNCEADDR 0xe6
+	{ "SingleBounceAddr",	O_SINGLEBOUNCEADDR,	OI_NONE },
+#endif /* _FFR_SINGLE_BOUNCE_ADDR */
 #if _FFR_MAXNOOPCOMMANDS
 # define O_MAXNOOPCOMMANDS 0xdc
 	{ "MaxNOOPCommands",	O_MAXNOOPCOMMANDS,	OI_NONE },
@@ -3115,6 +3119,12 @@
 		DoubleBounceAddr = newstr(val);
 		break;
 
+#if _FFR_SINGLE_BOUNCE_ADDR
+	  case O_SINGLEBOUNCEADDR:
+	  	SingleBounceAddr = newstr(val);
+		break;
+
+#endif /* _FFR_SINGLE_BOUNCE_ADDR */
 	  case O_HSDIR:		/* persistent host status directory */
 		if (val[0] != '\0')
 		{
diff -ur sendmail-8.13.8-orig/sendmail/savemail.c sendmail-8.13.8-singlebounce/sendmail/savemail.c
--- sendmail-8.13.8-orig/sendmail/savemail.c	2006-04-17 21:31:33.000000000 -0400
+++ sendmail-8.13.8-singlebounce/sendmail/savemail.c	2006-10-23 20:48:17.000000000 -0400
@@ -232,20 +232,20 @@
 			**	joe@x, which gives a response, etc.  Also force
 			**	the mail to be delivered even if a version of
 			**	it has already been sent to the sender.
-			**
-			**  If this is a configuration or local software
-			**	error, send to the local postmaster as well,
-			**	since the originator can't do anything
-			**	about it anyway.  Note that this is a full
-			**	copy of the message (intentionally) so that
-			**	the Postmaster can forward things along.
 			*/
 
-			if (ExitStat == EX_CONFIG || ExitStat == EX_SOFTWARE)
-			{
-				(void) sendtolist("postmaster", NULLADDR,
-						  &e->e_errorqueue, 0, e);
+#if _FFR_SINGLE_BOUNCE_ADDR
+			expand(SingleBounceAddr, buf, sizeof buf, e);
+			if (buf && *buf)
+			{
+				if (tTd(6, 15))
+					sm_dprintf("SingleBounceAddr %s\n", buf);
+				(void) sendtolist(buf, NULLADDR,
+						  &q, 0, e);
+				e->e_errorqueue = q;
 			}
+			else
+#endif /* _FFR_SINGLE_BOUNCE_ADDR */
 			if (!emptyaddr(&e->e_from))
 			{
 				char from[TOBUFSIZE];
@@ -265,6 +265,21 @@
 			}
 
 			/*
+			**  If this is a configuration or local software
+			**	error, send to the local postmaster as well,
+			**	since the originator can't do anything
+			**	about it anyway.  Note that this is a full
+			**	copy of the message (intentionally) so that
+			**	the Postmaster can forward things along.
+			*/
+
+			if (ExitStat == EX_CONFIG || ExitStat == EX_SOFTWARE)
+			{
+				(void) sendtolist("postmaster", NULLADDR,
+						  &e->e_errorqueue, 0, e);
+			}
+
+			/*
 			**  Deliver a non-delivery report to the
 			**  Postmaster-designate (not necessarily
 			**  Postmaster).  This does not include the
diff -ur sendmail-8.13.8-orig/sendmail/sendmail.h sendmail-8.13.8-singlebounce/sendmail/sendmail.h
--- sendmail-8.13.8-orig/sendmail/sendmail.h	2006-05-22 21:32:07.000000000 -0400
+++ sendmail-8.13.8-singlebounce/sendmail/sendmail.h	2006-10-23 19:11:44.000000000 -0400
@@ -2286,6 +2286,9 @@
 EXTERN char	*DefUser;	/* default user to run as (from DefUid) */
 EXTERN char	*DefaultCharSet;	/* default character set for MIME */
 EXTERN char	*DoubleBounceAddr;	/* where to send double bounces */
+#if _FFR_SINGLE_BOUNCE_ADDR
+EXTERN char	*SingleBounceAddr;	/* where to send bounces other than to sender */
+#endif /* _FFR_SINGLE_BOUNCE_ADDR */
 EXTERN char	*ErrMsgFile;	/* file to prepend to all error messages */
 EXTERN char	*FallbackMX;	/* fall back MX host */
 EXTERN char	*FallbackSmartHost;	/* fall back smart host */
