diff --git a/exec/load/newsutil.js b/exec/load/newsutil.js
index 24d9a04c680db7ebaf62264c7d3e321762f691b0..4b4d64983973a0d2a50763cf33fd6cb0013fe1ab 100755
--- a/exec/load/newsutil.js
+++ b/exec/load/newsutil.js
@@ -14,6 +14,37 @@ function get_news_subject(hdr)
 	return hdr.subject;
 }
 
+function get_news_from(hdr)
+{
+	if(!hdr.from_net_type || !hdr.from_net_addr)	/* local message */
+		return format("\"%s\" <%s@%s>"
+			,hdr.from
+			,hdr.from.replace(/ /g,".").toLowerCase()
+			,system.inetaddr);
+	if(!hdr.from_net_addr.length)
+		return hdr.from;
+	if(hdr.from_net_addr.indexOf('@')!=-1)
+		return format("\"%s\" <%s>"
+			,hdr.from
+			,hdr.from_net_addr);
+	if(hdr.from_net_type == NET_FIDO)
+		return format("\"%s\" (%s) <%s>"
+			,hdr.from
+			,hdr.from_net_addr
+			,fidoaddr_to_emailaddr(hdr.from, hdr.from_net_addr));
+	if(hdr.from_net_type == NET_QWK)
+		return format("\"%s\" (%s) <%s!%s@%s>"
+			,hdr.from
+			,hdr.from_net_addr
+			,hdr.from_net_addr
+			,hdr.from.replace(/ /g,".")
+			,system.inetaddr);
+	return format("\"%s\" <%s@%s>"
+			,hdr.from
+			,hdr.from.replace(/ /g,".").toLowerCase()
+			,hdr.from_net_addr);
+}
+
 function write_news_header(hdr,writeln)
 {
 	/* Required header fields */
diff --git a/exec/nntpservice.js b/exec/nntpservice.js
index 7e0801c59ecbea679d601aece724c4d74bc00f85..bc15f3f4ac5f4d05d57d990e7f71274587fe2e55 100644
--- a/exec/nntpservice.js
+++ b/exec/nntpservice.js
@@ -562,7 +562,7 @@ while(client.socket.is_connected && !quit) {
 				writeln(format("%u\t%s\t%s\t%s\t%s\t%s\t%u\t%u\tXref:%s"
 					,i
 					,get_news_subject(hdr)
-					,hdr.from
+					,get_news_from(hdr)
 					,hdr.date
 					,hdr.id								// message-id
 					,hdr.reply_id ? hdr.reply_id : ''	// references
@@ -618,7 +618,7 @@ while(client.socket.is_connected && !quit) {
 						field=get_news_subject(hdr);
 						break;
 					case "from":
-						field=hdr.from;
+						field=get_news_from(hdr);
 						break;
 					case "reply-to":
 						field=hdr.replyto;
@@ -767,34 +767,7 @@ while(client.socket.is_connected && !quit) {
 
 			if(cmd[0].toUpperCase()!="BODY") {
 
-				if(!hdr.from_net_type || !hdr.from_net_addr)	/* local message */
-					writeln(format("From: \"%s\" <%s@%s>"
-						,hdr.from
-						,hdr.from.replace(/ /g,".").toLowerCase()
-						,system.inetaddr));
-				else if(!hdr.from_net_addr.length)
-					writeln(format("From: %s",hdr.from));
-				else if(hdr.from_net_addr.indexOf('@')!=-1)
-					writeln(format("From: \"%s\" <%s>"
-						,hdr.from
-						,hdr.from_net_addr));
-				else if(hdr.from_net_type == NET_FIDO)
-					writeln(format("From: \"%s\" (%s) <%s>"
-						,hdr.from
-						,hdr.from_net_addr
-						,fidoaddr_to_emailaddr(hdr.from, hdr.from_net_addr)));
-				else if(hdr.from_net_type == NET_QWK)
-					writeln(format("From: \"%s\" (%s) <%s!%s@%s>"
-						,hdr.from
-						,hdr.from_net_addr
-						,hdr.from_net_addr
-						,hdr.from.replace(/ /g,".")
-						,system.inetaddr));
-				else
-					writeln(format("From: \"%s\" <%s@%s>"
-						,hdr.from
-						,hdr.from.replace(/ /g,".").toLowerCase()
-						,hdr.from_net_addr));
+				writeln("From: " + get_news_from(hdr));
 
 				if(hdr.path==undefined)
 					hdr.path="not-for-mail";