diff -Naur busybox.orig/include/usage.h busybox/include/usage.h
--- busybox.orig/include/usage.h	2008-09-25 19:22:15 +0000
+++ busybox/include/usage.h	2008-09-25 19:38:20 +0000
@@ -3466,7 +3466,7 @@
 
 #define sendmail_trivial_usage \
        "[-w timeout] [-H [user:pass@]server[:port]] [-S]\n" \
-       "[-c charset] [-N type] [-i] [-s subject] [-a attach]... [-t] [-f sender] [rcpt]..."
+       "[-c charset] [-N type] [-o] [-i] [-s subject] [-a attach]... [-t] [-f sender] [rcpt]..."
 #define sendmail_full_usage "\n\n" \
        "Send an email\n" \
      "\nOptions:" \
@@ -3475,7 +3475,8 @@
      "\n	-S		Use openssl connection helper for secure servers" \
      "\n	-c charset	Assume charset for body and subject (utf-8)" \
      "\n	-N type		Request delivery notification. Type is ignored" \
-     "\n	-i		Ignore single dots in mail body. Implied" \
+     "\n	-o		Ignored" \
+     "\n	-i		Ignore single dots in mail body" \
      "\n	-s subject	Subject" \
      "\n	-a file		File to attach. May be multiple" \
      "\n	-t		Read recipients and subject from body" \
diff -Naur busybox.orig/networking/sendmail.c busybox/networking/sendmail.c
--- busybox.orig/networking/sendmail.c	2008-09-04 19:43:36 +0000
+++ busybox/networking/sendmail.c	2008-09-25 20:13:09 +0000
@@ -300,13 +300,13 @@
 
 		OPTS_c = 1 << 5,        // sendmail: assumed charset
 		OPTS_a = 1 << 6,        // sendmail: attachment(s)
-		OPTS_i = 1 << 7,        // sendmail: ignore lone dots in message body (implied)
+		OPTS_i = 1 << 7,        // sendmail: ignore lone dots in message body
 
 		OPTS_N = 1 << 8,        // sendmail: request notification
 		OPTS_f = 1 << 9,        // sendmail: sender address
 	};
 	const char *options;
-	int opts;
+	unsigned opts;
 
 	// init global variables
 	INIT_G();
@@ -319,9 +319,7 @@
 		// save initial stdin since body is piped!
 		xdup2(STDIN_FILENO, INITIAL_STDIN_FILENO);
 		opt_complementary = "w+:a::";
-		options = "w:H:St" "s:c:a:iN:f:";
-		// body is pseudo attachment read from stdin
-		llist_add_to_end(&opt_attachments, (char *)"-");
+		options = "w:H:St" "s:c:a:iN:f:o";
 	} else {
 		// FETCHMAIL
 		opt_after_connect = NULL;
@@ -336,9 +334,9 @@
 	argv += optind;
 
 	// connect to server
-	// host[:port] not specified ? -> use $HOSTNAME. no $HOSTNAME ? -> use localhost
+	// host[:port] not specified ? -> use $SMTPHOST. no $SMTPHOST ? -> use localhost
 	if (!(opts & OPT_H)) {
-		opt_connect = getenv("HOSTNAME");
+		opt_connect = getenv("SMTPHOST");
 		if (!opt_connect)
 			opt_connect = "127.0.0.1";
 	}
@@ -381,13 +379,11 @@
 		char *q;
 		llist_t *l;
 		llist_t *headers = NULL;
+		char *domain = safe_getdomainname();
 
 		// got no sender address? -> use username as a resort
 		if (!(opts & OPTS_f)) {
-			char *domain = safe_getdomainname();
 			opt_from = xasprintf("%s@%s", opt_user, domain);
-			if (ENABLE_FEATURE_CLEAN_UP)
-				free(domain);
 		}
 
 		// introduce to server
@@ -399,9 +395,12 @@
 		}
 
 		// we should start with modern EHLO
-		if (250 != smtp_checkp("EHLO %s", sane(opt_from), -1)) {
-			smtp_checkp("HELO %s", opt_from, 250);
+		sane(domain);
+		if (250 != smtp_checkp("EHLO %s", domain, -1)) {
+			smtp_checkp("HELO %s", domain, 250);
 		}
+		if (ENABLE_FEATURE_CLEAN_UP)
+			free(domain);
 
 		// set sender
 		// NOTE: if password has not been specified
@@ -496,53 +495,73 @@
 		srand(monotonic_us());
 		boundary = xasprintf("%d-%d-%d", rand(), rand(), rand());
 
-		// put common headers and body start
-		printf(
-			"Message-ID: <%s>\r\n"
-			"Mime-Version: 1.0\r\n"
-			"%smultipart/mixed; boundary=\"%s\"\r\n"
-			, boundary
-			, "Content-Type: "
-			, boundary
-		);
-
-		// put body + attachment(s)
-		// N.B. all these weird things just to be tiny
-		// by reusing string patterns!
-		fmt =
-			"\r\n--%s\r\n"
-			"%stext/plain; charset=%s\r\n"
-			"%s%s\r\n"
-			"%s"
-		;
-		p = opt_charset;
-		q = (char *)"";
-		l = opt_attachments;
-		while (l) {
+		// put common headers
+//		printf("Message-ID: <%s>\r\n", boundary);
+
+		// have attachments? -> compose multipart MIME
+		if (opt_attachments) {
 			printf(
-				fmt
-				, boundary
+				"Mime-Version: 1.0\r\n"
+				"%smultipart/mixed; boundary=\"%s\"\r\n"
 				, "Content-Type: "
-				, p
-				, "Content-Disposition: inline"
-				, q
-				, "Content-Transfer-Encoding: base64\r\n"
+				, boundary
 			);
-			p = "";
+
+			// body is pseudo attachment read from stdin in first turn
+			llist_add_to(&opt_attachments, (char *)"-");
+
+			// put body + attachment(s)
+			// N.B. all these weird things just to be tiny
+			// by reusing string patterns!
 			fmt =
 				"\r\n--%s\r\n"
-				"%sapplication/octet-stream%s\r\n"
-				"%s; filename=\"%s\"\r\n"
+				"%stext/plain; charset=%s\r\n"
+				"%s%s\r\n"
 				"%s"
 			;
-			uuencode(l->data, NULL);
-			l = l->link;
-			if (l)
-				q = bb_get_last_path_component_strip(l->data);
-		}
+			p = opt_charset;
+			q = (char *)"";
+			l = opt_attachments;
+			while (l) {
+				printf(
+					fmt
+					, boundary
+					, "Content-Type: "
+					, p
+					, "Content-Disposition: inline"
+					, q
+					, "Content-Transfer-Encoding: base64\r\n"
+				);
+				p = "";
+				fmt =
+					"\r\n--%s\r\n"
+					"%sapplication/octet-stream%s\r\n"
+					"%s; filename=\"%s\"\r\n"
+					"%s"
+				;
+				uuencode(l->data, NULL);
+				l = l->link;
+				if (l)
+					q = bb_get_last_path_component_strip(l->data);
+			}
 
-		// put message terminator
-		printf("\r\n--%s--\r\n" "\r\n", boundary);
+			// put message terminator
+			printf("\r\n--%s--\r\n" "\r\n", boundary);
+
+		// no attachments? -> put plain text respecting single dots
+		} else {
+			char *s;
+			FILE *fp = fdopen(INITIAL_STDIN_FILENO, "r");
+			while ((s = xmalloc_fgetline(fp)) != NULL) {
+//			while ((s = xmalloc_reads(INITIAL_STDIN_FILENO, NULL, NULL)) != NULL) {
+				// escape leading dots
+				if ((opts & OPTS_i) && '.' == *s)
+					printf(".");
+				// dump read line
+				printf("%s\r\n", s);
+			}
+			fclose(fp);
+		}
 
 		// leave "put message" mode
 		smtp_check(".", 250);
