diff --git a/exec/load/sbbsdefs.js b/exec/load/sbbsdefs.js
index 35f139f9a181b73e2c4ef72309d0c61068ced386..647de21927c5fef3d48e98497ade2d35a022028d 100644
--- a/exec/load/sbbsdefs.js
+++ b/exec/load/sbbsdefs.js
@@ -231,6 +231,7 @@ var   UQ_NOCOMMAS	=(1<<17);	/* Do not require commas in location		*/
 var   UQ_NONETMAIL	=(1<<18);	/* Don't ask for e-mail/netmail address		*/
 var   UQ_NOUPRLWR   =(1<<19);   /* Don't force upper/lower case strings		*/
 var   UQ_COLORTERM  =(1<<20);   /* Ask if new user has color terminal	    */
+var   UQ_DUPNETMAIL =(1<<21);	/* Don't allow duplicate netmail address    */
 					    		/********************************************/
 
 							    /********************************************/
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index 9b4c60ecbd31d16a97ed609641e2ef8df82a8f6e..75483bc5aa0afb856201044e08ae2864110e69fa 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -322,8 +322,11 @@ BOOL sbbs_t::newuser()
 		if(!online) return(FALSE);
 		while(!(cfg.uq&UQ_NONETMAIL) && online && text[EnterNetMailAddress][0]) {
 			bputs(text[EnterNetMailAddress]);
-			if(getstr(useron.netmail,LEN_NETMAIL,K_EDIT|K_AUTODEL|K_LINE|K_TRIM)
-				&& !trashcan(useron.netmail,"email"))
+			if(getstr(useron.netmail,LEN_NETMAIL,K_EDIT|K_AUTODEL|K_LINE|K_TRIM) < 1
+				|| trashcan(useron.netmail,"email")
+				|| ((cfg.uq & UQ_DUPNETMAIL) && userdatdupe(useron.number, U_NETMAIL, LEN_NETMAIL, useron.netmail)))
+				bputs(text[YouCantUseThatNetmail]);
+			else
 				break;
 		}
 		useron.misc&=~NETMAIL;
diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index 0dbc53725d69c282bf7da533a0cbc43ead5e3e30..3b122f064e3dadd0a3dedba757ba4b7175018c70 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -127,7 +127,7 @@
 #define UQ_NONETMAIL	(1L<<18)	/* Don't ask for e-mail/netmail address	*/
 #define UQ_NOUPRLWR		(1L<<19)	/* Don't force upper/lower case strings */
 #define UQ_COLORTERM	(1L<<20)	/* Ask if new user has color terminal	*/
-
+#define UQ_DUPNETMAIL	(1L<<21)	/* Don't allow duplicate e-mail address */
 
 									/* Different bits in sys_misc				*/
 #define SM_CLOSED		(1L<<0) 	/* System is clsoed to New Users			*/
diff --git a/src/sbbs3/scfg/scfgsys.c b/src/sbbs3/scfg/scfgsys.c
index 5f60a9b1faaeb8db4a20628c63d37fc401ea4efc..b8de4dde61b6035da657e28b10e712927eb288dc 100644
--- a/src/sbbs3/scfg/scfgsys.c
+++ b/src/sbbs3/scfg/scfgsys.c
@@ -1251,6 +1251,9 @@ void sys_cfg(void)
 								sprintf(opt[i++],"%-27.27s %-3.3s"
 									,"E-mail/NetMail Address"
 									,cfg.uq&UQ_NONETMAIL ? "No":"Yes");
+								sprintf(opt[i++],"%-27.27s %-3.3s"
+									,"Force Unique E-mail/NetMail Address"
+									,cfg.uq&UQ_DUPNETMAIL ? "Yes":"No");
 								sprintf(opt[i++],"%-27.27s %-3.3s"
 									,"Sex (Gender)"
 									,cfg.uq&UQ_SEX ? "Yes":"No");
@@ -1313,42 +1316,45 @@ void sys_cfg(void)
 										cfg.uq^=UQ_NONETMAIL;
 										break;
 									case 7:
-										cfg.uq^=UQ_SEX;
+										cfg.uq^=UQ_DUPNETMAIL;
 										break;
 									case 8:
-										cfg.uq^=UQ_BIRTH;
+										cfg.uq^=UQ_SEX;
 										break;
 									case 9:
-										cfg.uq^=UQ_ADDRESS;
+										cfg.uq^=UQ_BIRTH;
 										break;
 									case 10:
-										cfg.uq^=UQ_LOCATION;
+										cfg.uq^=UQ_ADDRESS;
 										break;
 									case 11:
-										cfg.uq^=UQ_NOCOMMAS;
+										cfg.uq^=UQ_LOCATION;
 										break;
 									case 12:
-										cfg.uq^=UQ_PHONE;
+										cfg.uq^=UQ_NOCOMMAS;
 										break;
 									case 13:
-										cfg.uq^=UQ_NOEXASC;
+										cfg.uq^=UQ_PHONE;
 										break;
 									case 14:
-										cfg.uq^=UQ_XEDIT;
+										cfg.uq^=UQ_NOEXASC;
 										break;
 									case 15:
-										cfg.uq^=UQ_CMDSHELL;
+										cfg.uq^=UQ_XEDIT;
 										break;
 									case 16:
-										cfg.uq^=UQ_NODEF;
+										cfg.uq^=UQ_CMDSHELL;
 										break;
 									case 17:
+										cfg.uq^=UQ_NODEF;
+										break;
+									case 18:
 										cfg.uq^=UQ_COLORTERM;
 										break;
-								} 
+								}
 							}
 						break; 
-					} 
+					}
 				}
 				break;
 			case 11:	/* Advanced Options */
diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h
index 7b331e4673078ac4bbaa19817681579e7f4cb5f6..99c770c6335f10ae8adbec301c4a64c50d8ff40f 100644
--- a/src/sbbs3/text.h
+++ b/src/sbbs3/text.h
@@ -397,7 +397,7 @@ enum {
 	,WhichXtrnProg
 	,UserRunningXtrn
 	,RemoveNodeLockQ
-	,MinimumModemSpeed
+	,YouCantUseThatNetmail
 	,NoNodeAccess
 	,NodeLocked
 	,UnknownUser
diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c
index 8f83a7aabc73225cc55d50acc8b78a2897810943..1ee8817e515ea2cbed3bd894af04c67510672182 100644
--- a/src/sbbs3/text_defaults.c
+++ b/src/sbbs3/text_defaults.c
@@ -641,7 +641,8 @@ const char * const text_defaults[TOTAL_TEXT]={
 		"\x6e\x6f\x64\x65\x20\x25\x64\x2e\x0d\x0a\x0d\x0a\x54\x72\x79\x20\x61\x67\x61\x69\x6e\x20\x6c\x61\x74\x65\x72\x2e\x0d\x0a\x0d\x0a"
 		"" // 385 UserRunningXtrn
 	,"\x52\x65\x6d\x6f\x76\x65\x20\x6e\x6f\x64\x65\x20\x6c\x6f\x63\x6b" // 386 RemoveNodeLockQ
-	,"\x55\x4e\x55\x53\x45\x44\x33\x38\x37" // 387 MinimumModemSpeed
+	,"\x01\x6e\x59\x6f\x75\x20\x63\x61\x6e\x27\x74\x20\x75\x73\x65\x20\x74\x68\x61\x74\x20\x6d\x61\x69\x6c\x20\x61\x64\x64\x72\x65\x73"
+		"\x73\x20\x28\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6f\x72\x20\x69\x6e\x76\x61\x6c\x69\x64\x29\x2e\x0d\x0a" // 387 YouCantUseThatNetmail
 	,"\x59\x6f\x75\x20\x64\x6f\x20\x6e\x6f\x74\x20\x68\x61\x76\x65\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6e\x74\x20\x61\x63\x63\x65\x73"
 		"\x73\x20\x66\x6f\x72\x20\x74\x68\x69\x73\x20\x6e\x6f\x64\x65\x2e" // 388 NoNodeAccess
 	,"\x01\x6e\x01\x72\x01\x68\x0d\x0a\x53\x6f\x72\x72\x79\x2c\x20\x74\x68\x69\x73\x20\x6e\x6f\x64\x65\x20\x69\x73\x20\x74\x65\x6d\x70"