diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h
index d587e2f0476402015261443c750fbad755075ec9..633be8e44a271197c0a613c21f298f1629279c76 100644
--- a/src/smblib/smbdefs.h
+++ b/src/smblib/smbdefs.h
@@ -459,6 +459,7 @@ enum {
 	 SMB_HASH_SOURCE_BODY
 	,SMB_HASH_SOURCE_MSG_ID
 	,SMB_HASH_SOURCE_FTN_ID
+	,SMB_HASH_SOURCE_SUBJECT
 
 /* Add new ones here (max value of 31) */
 
diff --git a/src/smblib/smbhash.c b/src/smblib/smbhash.c
index bf6423c6499b761c2e61d274ee351f4e5117740f..2a87ff6157d0c4489f1b22f5803e614d9f0f8e24 100644
--- a/src/smblib/smbhash.c
+++ b/src/smblib/smbhash.c
@@ -264,6 +264,10 @@ hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* body, long source_mas
 		(hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_BODY, flags, body))!=NULL)
 		hashes[h++]=hash;
 
+	if(msg->subj!=NULL && (source_mask&(1<<SMB_HASH_SOURCE_SUBJECT)) &&
+		(hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_SUBJECT, flags, msg->subj))!=NULL)
+		hashes[h++]=hash;
+
 	return(hashes);
 }