diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index c8c95f6e6894e5b57fdd98f7775dcacef8e84451..933891ef7b4afe343178f0f418d71d133805d23f 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -2358,6 +2358,10 @@ static void smtp_thread(void* arg)
 						if(!mailproc_match[i])
 							continue;
 
+						if(mailproc_list[i].from!=NULL 
+							&& !findstr_in_list(sender_addr, mailproc_list[i].from))
+							continue;
+
 						if(!mailproc_list[i].passthru)
 							msg_handled=TRUE;
 
@@ -3315,8 +3319,6 @@ static void smtp_thread(void* arg)
 					continue;
 				if(!chk_ar(&scfg,mailproc_list[i].ar,&relay_user))
 					continue;
-				if(mailproc_list[i].from!=NULL && !findstr_in_list(p, mailproc_list[i].from))
-					continue;
 				if(mailproc_list[i].to!=NULL) {
 					for(j=0;mailproc_list[i].to[j]!=NULL;j++) {
 						if(stricmp(p,mailproc_list[i].to[j])==0) {