diff --git a/src/sbbs3/chksmb.c b/src/sbbs3/chksmb.c
index 13d3774eb2afbb552ff412dccf825fafad99eebb..d2f310678103e3fcd211c887326428dd38045cd0 100644
--- a/src/sbbs3/chksmb.c
+++ b/src/sbbs3/chksmb.c
@@ -344,10 +344,10 @@ int main(int argc, char **argv)
 
 		if(!(smb.status.attr&SMB_EMAIL) && chkhash) {
 			/* Look-up the message hashes */
-			hashes=smb_msghashes(&msg,body,SMB_HASH_SOURCE_ALL);
+			hashes=smb_msghashes(&msg,body,SMB_HASH_SOURCE_DUPE);
 			if(hashes!=NULL 
 				&& hashes[0]!=NULL 
-				&& (i=smb_findhash(&smb,hashes,NULL,SMB_HASH_SOURCE_ALL,/* mark */TRUE ))
+				&& (i=smb_findhash(&smb,hashes,NULL,SMB_HASH_SOURCE_DUPE,/* mark */TRUE ))
 					!=SMB_SUCCESS) {
 				for(h=0;hashes[h]!=NULL;h++) {
 					if(hashes[h]->flags&SMB_HASH_MARKED)
diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp
index 17687dd6238328d4f6c4471571affef2dac3286a..d758ee258c7c9a03b61772ceba7b0747dcc7c42b 100644
--- a/src/sbbs3/postmsg.cpp
+++ b/src/sbbs3/postmsg.cpp
@@ -425,7 +425,7 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, client_t*
 	ushort	xlat=XLAT_NONE;
 	int 	i;
 	int		storage=SMB_SELFPACK;
-	long	dupechk_hashes=SMB_HASH_SOURCE_ALL;
+	long	dupechk_hashes=SMB_HASH_SOURCE_DUPE;
 
 	if(msg==NULL)
 		return(SMB_FAILURE);
diff --git a/src/sbbs3/qwktomsg.cpp b/src/sbbs3/qwktomsg.cpp
index ff6b8089cba215d1c4cabac975b285acd332263d..1cc4df9404db9149841cb08842341de610b181b6 100644
--- a/src/sbbs3/qwktomsg.cpp
+++ b/src/sbbs3/qwktomsg.cpp
@@ -221,7 +221,7 @@ bool sbbs_t::qwk_import_msg(FILE *qwk_fp, char *hdrblk, ulong blocks
 	uint16_t	net_type;
 	ushort		xlat=XLAT_NONE;
 	int			storage=SMB_SELFPACK;
-	long		dupechk_hashes=SMB_HASH_SOURCE_ALL;
+	long		dupechk_hashes=SMB_HASH_SOURCE_DUPE;
 
 	if(subnum!=INVALID_SUB
 		&& (hdrblk[0]=='*' || hdrblk[0]=='+' || cfg.sub[subnum]->misc&SUB_PONLY))
diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 3582106fe69943f199755f8abcad0aee66d73089..0e3ea2ecf9f194fd65a2ce10c7deae0fce448336 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -2236,7 +2236,7 @@ int fmsgtosmsg(uchar* fbuf, fmsghdr_t fmsghdr, uint user, uint subnum)
 	ushort	xlat=XLAT_NONE,net;
 	ulong	l,m,length,bodylen,taillen,crc;
 	ulong	save;
-	long	dupechk_hashes=SMB_HASH_SOURCE_ALL;
+	long	dupechk_hashes=SMB_HASH_SOURCE_DUPE;
 	faddr_t faddr,origaddr,destaddr;
 	smb_t*	smbfile;
 	char	fname[MAX_PATH+1];
diff --git a/src/sbbs3/smbutil.c b/src/sbbs3/smbutil.c
index 484b95cef23378f77622441cdd99e0c7c723bced..e3b349cdb09fd09905d0ac9555ced963b7b0b8cd 100644
--- a/src/sbbs3/smbutil.c
+++ b/src/sbbs3/smbutil.c
@@ -183,7 +183,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address,
 	int 		i;
 	ushort		agent=AGENT_SMBUTIL;
 	smbmsg_t	msg;
-	long		dupechk_hashes=SMB_HASH_SOURCE_ALL;
+	long		dupechk_hashes=SMB_HASH_SOURCE_DUPE;
 
 	/* Read message text from stream (file or stdin) */
 	msgtxtlen=0;
diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c
index c336419492d2ebd02f573e9fcbfe63f0e1f73525..93bc61d34e374ae17a85772efe583d9ef1ee0699 100644
--- a/src/smblib/smbadd.c
+++ b/src/smblib/smbadd.c
@@ -85,7 +85,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash
 		msg->hdr.number=smb->status.last_msg+1;
 		if(!(smb->status.attr&(SMB_EMAIL|SMB_NOHASH))) {
 
-			hashes=smb_msghashes(msg,body,SMB_HASH_SOURCE_ALL);
+			hashes=smb_msghashes(msg,body,SMB_HASH_SOURCE_DUPE);
 
 			if(smb_findhash(smb, hashes, &found, dupechk_hashes, /* mark? */FALSE)==SMB_SUCCESS) {
 				safe_snprintf(smb->last_error,sizeof(smb->last_error)
diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h
index 633be8e44a271197c0a613c21f298f1629279c76..6ee40f7dcda8450c81b5d65319a644868cfa0760 100644
--- a/src/smblib/smbdefs.h
+++ b/src/smblib/smbdefs.h
@@ -469,6 +469,7 @@ enum {
 #define SMB_HASH_SOURCE_MASK	0x1f
 #define SMB_HASH_SOURCE_NONE	0
 #define SMB_HASH_SOURCE_ALL		0xff
+#define SMB_HASH_SOURCE_DUPE	((1<<SMB_HASH_SOURCE_BODY)|(1<<SMB_HASH_SOURCE_MSG_ID)|(1<<SMB_HASH_SOURCE_FTN_ID))
 
 typedef struct _PACK {
 
diff --git a/src/smblib/smbhash.c b/src/smblib/smbhash.c
index 2a87ff6157d0c4489f1b22f5803e614d9f0f8e24..d75fde471c370741a253094e325773ba378ad95c 100644
--- a/src/smblib/smbhash.c
+++ b/src/smblib/smbhash.c
@@ -289,9 +289,9 @@ int SMBCALL smb_hashmsg(smb_t* smb, smbmsg_t* msg, const uchar* text, BOOL updat
 	if(smb->status.attr&(SMB_EMAIL|SMB_NOHASH))
 		return(SMB_SUCCESS);
 
-	hashes=smb_msghashes(msg,text,SMB_HASH_SOURCE_ALL);
+	hashes=smb_msghashes(msg,text,SMB_HASH_SOURCE_DUPE);
 
-	if(smb_findhash(smb, hashes, &found, SMB_HASH_SOURCE_ALL, update)==SMB_SUCCESS && !update) {
+	if(smb_findhash(smb, hashes, &found, SMB_HASH_SOURCE_DUPE, update)==SMB_SUCCESS && !update) {
 		retval=SMB_DUPE_MSG;
 		safe_snprintf(smb->last_error,sizeof(smb->last_error)
 			,"duplicate %s: %s found in message #%lu"