diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c
index 28aa4df78619df219b5bb6bb0762604a23cbc472..9e10e5ef5fefc004b17f1049891cfaad88de7ae5 100644
--- a/src/sbbs3/str_util.c
+++ b/src/sbbs3/str_util.c
@@ -342,11 +342,11 @@ char* DLLCALL ftn_msgid(sub_t *sub, smbmsg_t* msg)
 {
 	static char msgid[256];
 
-	if(msg->ftn_msgid!=NULL)
+	if(msg->ftn_msgid!=NULL && *msg->ftn_msgid!=0)
 		return(msg->ftn_msgid);
 
 	snprintf(msgid,sizeof(msgid)
-		,"%s %08lX %lu.%s %08lX\r"
+		,"%s %08lx %lu.%s %08lX\r"
 		,faddrtoa(&sub->faddr,NULL)
 		,msgid_serialno(msg)
 		,msg->idx.number
@@ -364,7 +364,7 @@ char* DLLCALL get_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg)
 {
 	static char msgid[256];
 
-	if(msg->id!=NULL)
+	if(msg->id!=NULL && *msg->id!=0)
 		return(msg->id);
 
 	if(subnum>=cfg->total_subs)