*** courier-0.43.2/courier/submit2.C.orig Thu May 15 09:14:53 2003 --- courier-0.43.2/courier/submit2.C Sat Oct 25 14:06:05 2003 *************** *** 45,52 **** --- 45,54 ---- static time_t queuetime, faxqueuetime, warntime; static unsigned batchsize=100; static int spamtrap_flag=0; + #define MAX_REPORTED_SPAMTRAP_RCPTS 16 + static char *spamtrap_rcpts[MAX_REPORTED_SPAMTRAP_RCPTS]; extern int verpflag; // *************** *** 218,226 **** ctlfile << flush; ++rcptcount; if (bofh_chkspamtrap(r)) { ! spamtrap_flag=1; } } // --- 220,235 ---- ctlfile << flush; ++rcptcount; if (bofh_chkspamtrap(r)) { ! if(spamtrap_flag < MAX_REPORTED_SPAMTRAP_RCPTS) ! { ! spamtrap_rcpts[spamtrap_flag] = (char*)courier_malloc(strlen(r)+1); ! /* Cpy in original addr (orig) if present, otherwise passed addr (r) */ ! if(spamtrap_rcpts[spamtrap_flag] != NULL) ! strcpy(spamtrap_rcpts[spamtrap_flag], (orig && orig[0] != '\0' ? orig : r)); ! spamtrap_flag++; ! } } } // *************** *** 826,834 **** --- 835,861 ---- } if (spamtrap_flag) { + int cnt; + cout << "550 Spam refused." << endl << flush; + + /* Log the spamtrap address(es) that caused the reject */ + clog_msg_start_info(); + clog_msg_str("SPAMTRAP triggered by: "); + + for(cnt = 0; cnt < spamtrap_flag; cnt++) + { + if(spamtrap_rcpts[cnt] != NULL) + { + clog_msg_str("'"); + clog_msg_str(spamtrap_rcpts[cnt]); + clog_msg_str("' "); + free(spamtrap_rcpts[cnt]); + } + } + clog_msg_send(); return (1); } if (rwrfcptr->rfcviolation & RFC2045_ERR8BITHEADER)