diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp
index a24e3b6f47930af9be633b0a2674690dba82d8a8..6afeb86e4562180db04ff6e04a9675584efff7ef 100644
--- a/src/sbbs3/email.cpp
+++ b/src/sbbs3/email.cpp
@@ -8,7 +8,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2011 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2012 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -89,10 +89,10 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode)
 		bputs(text[UnknownUser]);
 		return(false); 
 	}
-	if(l&NETMAIL && cfg.sys_misc&SM_FWDTONET) {
+	if((l&NETMAIL) && (cfg.sys_misc&SM_FWDTONET)) {
 		getuserrec(&cfg,usernumber,U_NETMAIL,LEN_NETMAIL,str);
 		bprintf(text[UserNetMail],str);
-		if(text[ForwardMailQ][0]==0 || yesno(text[ForwardMailQ])) /* Forward to netmail address */
+		if(usernumber==cfg.node_valuser || text[ForwardMailQ][0]==0 || yesno(text[ForwardMailQ])) /* Forward to netmail address */
 			return(netmail(str,subj,mode));
 	}
 	bprintf(text[Emailing],username(&cfg,usernumber,tmp),usernumber);
@@ -100,7 +100,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode)
 	nodesync();
 
 	sprintf(str,"%sfeedback.*", cfg.exec_dir);
-	if(usernumber==1 && useron.fbacks && fexist(str)) {
+	if(usernumber==cfg.node_valuser && useron.fbacks && fexist(str)) {
 		exec_bin("feedback",&main_csi);
 		if(main_csi.logic!=LOGIC_TRUE)
 			return(false); 
@@ -155,7 +155,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode)
 			if(x<cfg.total_prots)	/* This should be always */
 				protocol(cfg.prot[x],XFER_UPLOAD,str2,nulstr,true); 
 		}
-		sprintf(tmp,"%s%s",cfg.temp_dir,title);
+		safe_snprintf(tmp,sizeof(tmp),"%s%s",cfg.temp_dir,title);
 		if(!fexistcase(str2) && fexistcase(tmp))
 			mv(tmp,str2,0);
 		l=(long)flength(str2);
@@ -288,7 +288,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode)
 	sprintf(str,"%u",usernumber);
 	smb_hfield_str(&msg,RECIPIENTEXT,str);
 
-	strcpy(str,useron.alias);
+	SAFECOPY(str,useron.alias);
 	smb_hfield_str(&msg,SENDER,str);
 
 	sprintf(str,"%u",useron.number);
@@ -335,7 +335,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode)
 		logon_emails++;
 	user_sent_email(&cfg, &useron, 1, usernumber==1);
 	bprintf(text[Emailed],username(&cfg,usernumber,tmp),usernumber);
-	sprintf(str,"%s sent e-mail to %s #%d"
+	safe_snprintf(str,sizeof(str),"%s sent e-mail to %s #%d"
 		,useron.alias,username(&cfg,usernumber,tmp),usernumber);
 	logline("E+",str);
 	if(mode&WM_FILE && online==ON_REMOTE)
@@ -346,13 +346,13 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode)
 		getnodedat(i,&node,0);
 		if(node.useron==usernumber && !(node.misc&NODE_POFF)
 			&& (node.status==NODE_INUSE || node.status==NODE_QUIET)) {
-			sprintf(str,text[EmailNodeMsg],cfg.node_num,useron.alias);
+			safe_snprintf(str,sizeof(str)),text[EmailNodeMsg],cfg.node_num,useron.alias);
 			putnmsg(&cfg,i,str);
 			break; 
 		} 
 	}
 	if(i>cfg.sys_nodes) {	/* User wasn't online, so leave short msg */
-		sprintf(str,text[UserSentYouMail],useron.alias);
+		safe_snprintf(str,sizeof(str),text[UserSentYouMail],useron.alias);
 		putsmsg(&cfg,usernumber,str); 
 	}
 	return(true);