diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 69a8dc80269d79b727540629dea9ec1ebdf5f458..44e5672b2311d981d3027f96c07889ce02c98dd8 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -2247,6 +2247,19 @@ static void smtp_thread(void* arg) /* Do external JavaScript processing here? */ if(subnum!=INVALID_SUB) { /* Message Base */ + if(relay_user.number==0) + memset(&relay_user,0,sizeof(relay_user)); + + if(!chk_ar(&scfg,scfg.grp[scfg.sub[subnum]->grp]->ar, &relay_user) + || !chk_ar(&scfg,scfg.sub[subnum]->ar, &relay_user) + || !chk_ar(&scfg,scfg.sub[subnum]->post_ar, &relay_user)) { + lprintf(LOG_WARNING,"%04d !SMTP %s has insufficient access to post on %s" + ,socket, sender_addr, scfg.sub[subnum]->sname); + sockprintf(socket,"550 Insufficient access"); + subnum=INVALID_SUB; + continue; + } + if(rcpt_name[0]==0) strcpy(rcpt_name,"All"); smb_hfield_str(&msg, RECIPIENT, rcpt_name);