diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c
index ee55eccde2caf74b16104633cc423d66a6a78ece..51adcd4a8cde0a490b32bd5edbc2ec9e66d98c4d 100644
--- a/src/sbbs3/js_msgbase.c
+++ b/src/sbbs3/js_msgbase.c
@@ -374,36 +374,6 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm
 	return(TRUE);
 }
 
-BOOL get_msg_by_id(scfg_t* scfg, smb_t* smb, char* id, smbmsg_t* msg)
-{
-	ulong		n;
-	int			ret;
-
-	for(n=0;n<smb->status.last_msg;n++) {
-		memset(msg,0,sizeof(smbmsg_t));
-		msg->offset=n;
-		if(smb_getmsgidx(smb, msg)!=0)
-			break;
-
-		if(smb_lockmsghdr(smb,msg)!=0)
-			continue;
-
-		ret=smb_getmsghdr(smb,msg);
-
-		smb_unlockmsghdr(smb,msg); 
-
-		if(ret!=SMB_SUCCESS)
-			continue;
-
-		if(strcmp(get_msgid(scfg,smb->subnum,msg),id)==0)
-			return(TRUE);
-
-		smb_freemsgmem(msg);
-	}
-
-	return(FALSE);
-}
-
 BOOL msg_offset_by_id(scfg_t* scfg, smb_t* smb, char* id, ulong* offset)
 {
 	smbmsg_t msg;
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 513bafae5a8a69e3609a7269ba5d7b6b943eb44a..bcd83f95e855799f4fab2472e86c7c1b8bbb79fc 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -793,6 +793,7 @@ extern "C" {
 	DLLEXPORT ushort	DLLCALL subject_crc(char *subj);
 	DLLEXPORT char *	DLLCALL ftn_msgid(sub_t* sub, smbmsg_t* msg);
 	DLLEXPORT char *	DLLCALL get_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg);
+	DLLEXPORT BOOL		DLLCALL get_msg_by_id(scfg_t* scfg, smb_t* smb, char* id, smbmsg_t* msg);
 	DLLEXPORT char *	DLLCALL ultoac(ulong l,char *str);
 
 
diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c
index ff13347d8f86466d808475b78061e58768fedc02..d70267b3db06532eadbd05936532708bd7dba7e4 100644
--- a/src/sbbs3/str_util.c
+++ b/src/sbbs3/str_util.c
@@ -384,6 +384,38 @@ char* DLLCALL get_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg)
 
 	return(msgid);
 }
+/****************************************************************************/
+/* Retrieve a message by RFC822 message-ID									*/
+/****************************************************************************/
+BOOL DLLCALL get_msg_by_id(scfg_t* scfg, smb_t* smb, char* id, smbmsg_t* msg)
+{
+	ulong		n;
+	int			ret;
+
+	for(n=0;n<smb->status.last_msg;n++) {
+		memset(msg,0,sizeof(smbmsg_t));
+		msg->offset=n;
+		if(smb_getmsgidx(smb, msg)!=0)
+			break;
+
+		if(smb_lockmsghdr(smb,msg)!=0)
+			continue;
+
+		ret=smb_getmsghdr(smb,msg);
+
+		smb_unlockmsghdr(smb,msg); 
+
+		if(ret!=SMB_SUCCESS)
+			continue;
+
+		if(strcmp(get_msgid(scfg,smb->subnum,msg),id)==0)
+			return(TRUE);
+
+		smb_freemsgmem(msg);
+	}
+
+	return(FALSE);
+}
 
 /****************************************************************************/
 /* Returns string for 2 digit hex+ numbers up to 575						*/