diff --git a/exec/listserver.js b/exec/listserver.js
index bb95e09653a471f8b1ef976e2d7793695725ed55..e478069c2c2bb8921f12e313b441a7a5f70b5285 100644
--- a/exec/listserver.js
+++ b/exec/listserver.js
@@ -11,6 +11,11 @@ const user_list_ext = ".list.sub";
 
 log(LOG_INFO,"ListServer " + REVISION);
 
+//function log(level, msg)
+//{
+//js.global.log(level,"ListServer " + msg);
+//}
+
 js.auto_terminate=false;
 
 var ini_fname = file_cfgname(system.ctrl_dir, "listserver.ini");
@@ -78,7 +83,7 @@ if(mailbase.open()==false) {
 /* Inbound message from SMTP Server? */
 if(js.global.recipient_list_filename!=undefined) {	
 
-	log("reverse_path = " + reverse_path);
+	log(LOG_DEBUG,"reverse_path = " + reverse_path);
 	if(reverse_path=='' || reverse_path=='<>') {
 		log(LOG_WARNING,"No reverse path");
 		exit();
@@ -137,7 +142,7 @@ if(js.global.recipient_list_filename!=undefined) {
 			var list = list_array[l];
 /** DEBUG
 			for(var p in list)
-				log("list_array["+l+"]."+p+" = "+list[p]);
+				log(LOG_DEBUG,"list_array["+l+"]."+p+" = "+list[p]);
 **/
 			recipient=rcpt_list[r].To;
 			if(!recipient)	// for pre v3.15 compatibility
@@ -179,6 +184,7 @@ if(js.global.recipient_list_filename!=undefined) {
 	resp_hdr.from_net_type	= NET_INTERNET;
 	resp_hdr.from_agent		= AGENT_PROCESS;
 	resp_hdr.reply_id		= header.id;
+	resp_hdr.attr			= MSG_NOREPLY;
 
 	/* Write response to message */
 	if(mailbase.save_msg(resp_hdr, response.body.join('\r\n')))
@@ -199,9 +205,12 @@ for(var l in list_array) {
 
 	var list = list_array[l];
 
-	if(list.disabled)
+	if(list.disabled) {
+		log(LOG_INFO,format("%s: disabled", list.name));
 		continue;
+	}
 
+	log(LOG_INFO,format("Processing list: %s", list.name));
 	msgbase = new MsgBase(list.sub);
 	if(msgbase.open()==false) {
 		log(LOG_ERR,format("%s !ERROR %d (%s) opening msgbase: %s"
@@ -213,18 +222,11 @@ for(var l in list_array) {
 	/* Get subscriber list */
 	var user_list = get_user_list(list);
 	if(!user_list.length) {
+		log(LOG_INFO,format("%s has no subscribers", list.name));
 		delete msgbase;
 		continue;
 	}
 
-/***
-	if(!user_list.length) {
-		log(LOG_NOTICE,"No subscribers to list: " + list.name);
-		delete msgbase;
-		continue;
-	}
-***/
-
 	var ptr=NaN;
 	/* Get export message pointer */
 	/* Old way: */
@@ -347,6 +349,42 @@ for(var l in list_array) {
 	delete ini_file;
 }
 
+/* Process bounced messages here: */
+{
+	log(LOG_INFO,"Scanning for bounced e-mail messages");
+	var total_msgs = mailbase.total_msgs;
+	var num;
+
+	for(num=0;num<=total_msgs && !js.terminated; num++) {
+		hdr = mailbase.get_msg_header(
+			/* retrieve by offset? */	true,
+			/* message number */		num
+			);
+		if(hdr == null)
+			continue;
+		if(hdr.attr&MSG_DELETE)/* marked for deletion */
+			continue;
+		if(hdr.to_agent != AGENT_PROCESS)
+			continue;
+		for(var l in list_array) {
+
+			var list = list_array[l];
+
+			if(list.disabled)
+				continue;
+	
+		}
+
+		if(hdr.to == listserver_name || hdr.subject == "Delivery failure: Synchronet ListServer Response") {
+			log(LOG_INFO,format("Deleting bounce message #%u to %s", hdr.number, hdr.to));
+			if(!mailbase.remove_msg(/* by offset: */ true, num))
+				log(LOG_ERR,format("!ERROR %d (%s) removing message #%u to %s"
+					,mailbase.status, mailbase.error, hdr.number, hdr.to));
+		}
+	}
+	log(LOG_INFO,"Scanned for bounced e-mail messages");
+}
+
 /* clean-up */
 mailbase.close();