diff -Naur busybox.orig/networking/sendmail.c busybox/networking/sendmail.c
--- busybox.orig/networking/sendmail.c	2008-09-27 18:28:55 +0000
+++ busybox/networking/sendmail.c	2008-09-27 18:58:53 +0000
@@ -285,6 +285,8 @@
 {
 #if ENABLE_FEATURE_SENDMAIL_MAILX
 	llist_t *opt_attachments = NULL;
+	llist_t *opt_carboncopies = NULL;
+	char *opt_errors_to;
 #endif
 	char *opt_from, *opt_fullname;
 	const char *opt_user;
@@ -306,8 +308,10 @@
 		OPTS_F = 1 << 6,        // sendmail: sender name, overrides $NAME
 
 		OPTS_s = 1 << 7,        // sendmail: subject
-		OPTS_c = 1 << 8,        // sendmail: assumed charset
-		OPTS_a = 1 << 9,        // sendmail: attachment(s)
+		OPTS_c = 1 << 8,        // sendmail: carbon copy
+		OPTS_j = 1 << 9,        // sendmail: assumed charset
+		OPTS_a = 1 << 10,       // sendmail: attachment(s)
+		OPTS_e = 1 << 11,       // sendmail: errors-to address
 	};
 	const char *options;
 	unsigned opts;
@@ -323,9 +327,12 @@
 		// save initial stdin since body is piped!
 		xdup2(STDIN_FILENO, 3);
 		fp0 = fdopen(3, "r");
-		opt_complementary = "w+:a::";
-		options = "w:H:St" "N:f:F:" USE_FEATURE_SENDMAIL_MAILX("s:c:a:")
-		"X:V:vq:R:O:o:nmL:Iih:GC:B:b:A:"; // postfix compat only, ignored
+		opt_complementary = "w+:a::" USE_FEATURE_SENDMAIL_MAILX("c::");
+		options = "w:H:St" "N:f:F:" USE_FEATURE_SENDMAIL_MAILX("s:c:j:a:e:")
+			"X:V:vq:R:O:o:nmL:Iih:GC:B:b:A:" // postfix compat only, ignored
+			// r:Q:p:M:Dd are candidates from another man page. TODO?
+			"46E" // ssmtp introduces another quirks. TODO?: -a[upm] (user, pass, method) to be supported
+		;
 	} else {
 		// FETCHMAIL
 		opt_after_connect = NULL;
@@ -336,7 +343,7 @@
 		&timeout /* -w */, &opt_connect /* -H */,
 		NULL, &opt_from, &opt_fullname,
 #if ENABLE_FEATURE_SENDMAIL_MAILX
-		&opt_subject, &opt_charset, &opt_attachments,
+		&opt_subject, &opt_carboncopies, &opt_charset, &opt_attachments, &opt_errors_to,
 #endif
 		NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
 	);
@@ -428,14 +435,29 @@
 
 		// recipients specified as arguments
 		while (*argv) {
+			char *s = *argv;
 			// loose test on email address validity
-			if (strchr(sane(*argv), '@')) {
-				rcptto(sane(*argv));
-				llist_add_to_end(&headers, xasprintf("To: %s", *argv));
+			if (strchr(sane(s), '@')) {
+				rcptto(s);
+				// TODO: do we ever need to mangle the message?
+				llist_add_to_end(&headers, xasprintf("To: %s", s));
 			}
 			argv++;
 		}
 
+#if ENABLE_FEATURE_SENDMAIL_MAILX
+		// carbon copies recipients specified as -c arguments
+		for (l = opt_carboncopies; l; l = l->link) {
+			char *s = l->data;
+			// loose test on email address validity
+			if (strchr(sane(s), '@')) {
+				rcptto(s);
+				// TODO: do we ever need to mangle the message?
+				llist_add_to_end(&headers, xasprintf("Cc: %s", s));
+			}
+		}
+#endif
+
 		// if -t specified or no recipients specified -> read recipients from message
 		// i.e. scan stdin for To:, Cc:, Bcc: lines ...
 		// ... and then use the rest of stdin as message body
@@ -481,11 +503,11 @@
 		}
 
 		// put (possibly encoded) subject
-		if (opts & OPTS_c)
+		if (opts & OPTS_j)
 			sane((char *)opt_charset);
 		if (opts & OPTS_s) {
 			printf("Subject: ");
-			if (opts & OPTS_c) {
+			if (opts & OPTS_j) {
 				printf("=?%s?B?", opt_charset);
 				uuencode(NULL, opt_subject);
 				printf("?=");
@@ -505,6 +527,12 @@
 		if (opts & OPTS_N)
 			printf("Disposition-Notification-To: %s\r\n", opt_from);
 
+#if ENABLE_FEATURE_SENDMAIL_MAILX
+		// put errors recipient
+		if (opts & OPTS_e)
+			printf("Errors-To: %s\r\n", opt_errors_to);
+#endif
+
 		// make a random string -- it will delimit message parts
 		srand(monotonic_us());
 		boundary = xasprintf("%d-%d-%d", rand(), rand(), rand());
@@ -578,10 +606,10 @@
 			// put plain text respecting leading dots
 			while ((s = xmalloc_fgetline(fp0)) != NULL) {
 				// escape leading dots
-				// N.B. this feature is implied even if no -i switch given
+				// N.B. this feature is implied even if no -i (-oi) switch given
 				// N.B. we need to escape the leading dot regardless of
 				// whether it is single or not character on the line
-				if (/*(opts & OPTS_i) && */ '.' == s[0] /*&& '\0' == s[1] */)
+				if ('.' == s[0] /*&& '\0' == s[1] */)
 					printf(".");
 				// dump read line
 				printf("%s\r\n", s);
