diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index ea4acb804b93857a2af2e883fb4ab450ca60d60b..d108607a6139241ef0fe2ce4674aefdc1f47c1a2 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -3716,8 +3716,17 @@ static void smtp_thread(void* arg) if(subnum!=INVALID_SUB) { /* Message Base */ uint reason; - if(relay_user.number==0) + if(relay_user.number==0) { memset(&relay_user,0,sizeof(relay_user)); + if(dnsbl_recvhdr || dnsbl_result.s_addr) { + lprintf(LOG_WARNING,"%04d %s %s !refusing to post message (on %s) from DNS-Blacklisted client: %s" + ,socket, client.protocol, client_id, scfg.sub[subnum]->sname, sender_addr); + sockprintf(socket,client.protocol,session,"550 Insufficient access"); + subnum = INVALID_SUB; + stats.msgs_refused++; + continue; + } + } if(!can_user_post(&scfg,subnum,&relay_user,&client,&reason)) { lprintf(LOG_WARNING,"%04d %s %s !%s (user #%u) cannot post on %s (reason: %u)"