diff --git a/src/sbbs3/atcodes.cpp b/src/sbbs3/atcodes.cpp
index bbef715a31032cc9138f89af2989ee2dfc6f5e63..e986ea7e95b4d61a8348bb98687e02388441be74 100644
--- a/src/sbbs3/atcodes.cpp
+++ b/src/sbbs3/atcodes.cpp
@@ -536,7 +536,7 @@ const char* sbbs_t::atcode(char* sp, char* str, size_t maxlen, long* pmode, bool
 
 	if(!strcmp(sp,"EMAILADDR"))
 		return(usermailaddr(&cfg, str
-			,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name));
+			,(cfg.inetmail_misc&NMAIL_ALIAS) || (useron.rest&FLAG('O')) ? useron.alias : useron.name));
 
 	if(strcmp(sp, "NETMAIL") == 0)
 		return useron.netmail;
diff --git a/src/sbbs3/js_user.c b/src/sbbs3/js_user.c
index fc3ab8c314c394c2e4747fa4d2f8eeee66f9d5e7..4ad482bd1075f33d68444518b64a7f933423f7f9 100644
--- a/src/sbbs3/js_user.c
+++ b/src/sbbs3/js_user.c
@@ -181,7 +181,7 @@ static JSBool js_user_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
 			break;
 		case USER_PROP_EMAIL:
 			s=usermailaddr(scfg, tmp
-				,scfg->inetmail_misc&NMAIL_ALIAS ? p->user->alias : p->user->name);
+				,(scfg->inetmail_misc&NMAIL_ALIAS) || (p->user->rest&FLAG('O')) ? p->user->alias : p->user->name);
 			break;
 		case USER_PROP_ADDRESS:
 			s=p->user->address;
diff --git a/src/sbbs3/netmail.cpp b/src/sbbs3/netmail.cpp
index dfd4ca7ae5c417ddb66dac15a89107f82ccd30c3..095c7bf26e1ab24e87be82783e69084264725551 100644
--- a/src/sbbs3/netmail.cpp
+++ b/src/sbbs3/netmail.cpp
@@ -154,7 +154,7 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode, smb_t* resm
 
 	truncsp(to);				/* Truncate off space */
 
-	SAFECOPY(from, cfg.netmail_misc&NMAIL_ALIAS ? useron.alias : useron.name);
+	SAFECOPY(from, (cfg.netmail_misc&NMAIL_ALIAS) || (useron.rest&FLAG('O')) ? useron.alias : useron.name);
 
 	/* Look-up in nodelist? */
 
@@ -620,7 +620,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 		smb_hfield(&msg,RECIPIENTNETADDR,strlen(to),to);
 
 		bprintf(text[NetMailing],name,to
-			,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name
+			,(cfg.inetmail_misc&NMAIL_ALIAS) || (useron.rest&FLAG('O')) ? useron.alias : useron.name
 			,cfg.sys_inetaddr); 
 	}
 
@@ -770,7 +770,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 		strcat(str,tmp); 
 	}
 	else
-		SAFECOPY(str,cfg.netmail_misc&NMAIL_ALIAS ? useron.alias : useron.name);
+		SAFECOPY(str,(cfg.netmail_misc&NMAIL_ALIAS) || (useron.rest&FLAG('O')) ? useron.alias : useron.name);
 	SAFECOPY(hdr.from,str);
 
 	SAFECOPY(hdr.to,to);
@@ -992,7 +992,7 @@ bool sbbs_t::inetmail(const char *into, const char *subj, long mode, smb_t* resm
 
 	/* Get this user's Internet mailing address */
 	usermailaddr(&cfg,your_addr
-		,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name);
+		,(cfg.inetmail_misc&NMAIL_ALIAS) || (useron.rest&FLAG('O')) ? useron.alias : useron.name);
 
 	if(rcpt_count > 1) { /* remove "self" from reply-all list */
 		int found = strListFind(rcpt_list, your_addr, /* case_sensitive */FALSE);
@@ -1141,7 +1141,7 @@ bool sbbs_t::inetmail(const char *into, const char *subj, long mode, smb_t* resm
 	if(rcpt_count > 1)
 		smb_hfield_str(&msg, RECIPIENTLIST, to_list);
 
-	smb_hfield_str(&msg,SENDER,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name);
+	smb_hfield_str(&msg,SENDER,(cfg.inetmail_misc&NMAIL_ALIAS) || (useron.rest&FLAG('O')) ? useron.alias : useron.name);
 
 	SAFEPRINTF(str,"%u",useron.number);
 	smb_hfield_str(&msg,SENDEREXT,str);
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index b0518765fbf925af44a59651859e30471ca087c9..9b4c60ecbd31d16a97ed609641e2ef8df82a8f6e 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -236,7 +236,7 @@ BOOL sbbs_t::newuser()
 		if(!useron.name[0])
 			SAFECOPY(useron.name,useron.alias);
 		else if(!(cfg.uq&UQ_DUPREAL) && userdatdupe(useron.number,U_NAME,LEN_NAME,useron.name) > 0)
-			useron.rest |= FLAG('O'); // Can't post using real name (it's a duplicate)
+			useron.rest |= FLAG('O'); // Can't post or send netmail using real name (it's a duplicate)
 		if(!online) return(FALSE);
 		if(!useron.handle[0])
 			SAFECOPY(useron.handle,useron.alias);
diff --git a/src/sbbs3/scfg/scfgnet.c b/src/sbbs3/scfg/scfgnet.c
index 149ed462054a8c64c3c65db432be2259d6074e17..53d4eaa13a211e232166072b4797cbade4c97098 100644
--- a/src/sbbs3/scfg/scfgnet.c
+++ b/src/sbbs3/scfg/scfgnet.c
@@ -506,6 +506,9 @@ void net_cfg()
 							"contain their alias as the `From User`, set this option to `Yes`. If you\n"
 							"want all NetMail to be sent using users' real names, set this option to\n"
 							"`No`.\n"
+							"\n"
+							"Users with the '`O`' restriction flag will always send netmail using\n"
+							"their alias (their real name is a duplicate of another user account)."
 						;
 						i=uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,0
 							,"Use Aliases in NetMail",uifcYesNoOpts);
@@ -752,6 +755,9 @@ void net_cfg()
 							"Internet E-mail contain their alias as the `From User`, set this option to\n"
 							"`Yes`. If you want all E-mail to be sent using users' real names, set this\n"
 							"option to `No`.\n"
+							"\n"
+							"Users with the '`O`' restriction flag will always send netmail using\n"
+							"their alias (their real name is a duplicate of another user account)."
 						;
 						i=uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,0
 							,"Use Aliases in Internet E-mail",uifcYesNoOpts);