diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 2432862919e2d32fd14ac26b69843636d6673103..df09298060284d7c3520bd396730f89b4a8390e4 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -781,6 +781,7 @@ extern "C" {
 	DLLEXPORT size_t	DLLCALL strip_invalid_attr(char *str);
 	DLLEXPORT ushort	DLLCALL subject_crc(char *subj);
 	DLLEXPORT char *	DLLCALL ftn_msgid(sub_t* sub, smbmsg_t* msg);
+	DLLEXPORT char *	DLLCALL gen_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg);
 
 	/* date_str.c */
 	DLLEXPORT char *	DLLCALL zonestr(short zone);
diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c
index 799a561f858bb16b9260ff642b46488a6cfcd176..ff2b3e9a1ae448979fa9b2863a082c617d94d53f 100644
--- a/src/sbbs3/str_util.c
+++ b/src/sbbs3/str_util.c
@@ -336,7 +336,7 @@ static ulong msgid_serialno(smbmsg_t* msg)
 }
 
 /****************************************************************************/
-/* Returns a FidoNet FTS-9 compliant message-ID								*/
+/* Returns a FidoNet (FTS-9) message-ID										*/
 /****************************************************************************/
 char* DLLCALL ftn_msgid(sub_t *sub, smbmsg_t* msg)
 {
@@ -354,6 +354,30 @@ char* DLLCALL ftn_msgid(sub_t *sub, smbmsg_t* msg)
 	return(msgid);
 }
 
+/****************************************************************************/
+/* Return a general purpose (RFC-822) message-ID							*/
+/****************************************************************************/
+char* DLLCALL gen_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg)
+{
+	static char msgid[256];
+
+	if(subnum>=cfg->total_subs)
+		snprintf(msgid,sizeof(msgid)
+			,"<%08lX.%lu@%s>"
+			,msg->idx.time
+			,msg->idx.number
+			,cfg->sys_inetaddr);
+	else
+		snprintf(msgid,sizeof(msgid)
+			,"<%08lX.%lu.%s@%s>"
+			,msg->idx.time
+			,msg->idx.number
+			,cfg->sub[subnum]->code
+			,cfg->sys_inetaddr);
+
+	return(msgid);
+}
+
 /****************************************************************************/
 /* Returns string for 2 digit hex+ numbers up to 575						*/
 /****************************************************************************/