X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fserv_smtp.c;h=b28ca2ef39a3ad434c582bf52aba193d1d4c2bc7;hb=e26a8dee20d1726b4995821f717f867f50fc5659;hp=cccb61bf68ae6df8d893cbac4b8fc4fd72b41ee0;hpb=f4693017e0e3eca231dad3b67cc4a6211f522343;p=citadel.git diff --git a/citadel/modules/smtp/serv_smtp.c b/citadel/modules/smtp/serv_smtp.c index cccb61bf6..b28ca2ef3 100644 --- a/citadel/modules/smtp/serv_smtp.c +++ b/citadel/modules/smtp/serv_smtp.c @@ -131,11 +131,11 @@ void smtp_greeting(int is_msa) */ if ( (config.c_rbl_at_greeting) && (sSMTP->is_msa == 0) ) { if (rbl_check(message_to_spammer)) { - if (CtdlThreadCheckStop()) + if (server_shutting_down) cprintf("421 %s\r\n", message_to_spammer); else cprintf("550 %s\r\n", message_to_spammer); - CC->kill_me = 1; + CC->kill_me = KILLME_SPAMMER; /* no need to free_recipients(valid), it's not allocated yet */ return; } @@ -144,10 +144,8 @@ void smtp_greeting(int is_msa) /* Otherwise we're either clean or we check later. */ if (CC->nologin==1) { - cprintf("500 Too many users are already online (maximum is %d)\r\n", - config.c_maxsessions - ); - CC->kill_me = 1; + cprintf("451 Too many connections are already open; please try again later.\r\n"); + CC->kill_me = KILLME_MAX_SESSIONS_EXCEEDED; /* no need to free_recipients(valid), it's not allocated yet */ return; } @@ -165,7 +163,7 @@ void smtp_greeting(int is_msa) void smtps_greeting(void) { CtdlModuleStartCryptoMsgs(NULL, NULL, NULL); #ifdef HAVE_OPENSSL - if (!CC->redirect_ssl) CC->kill_me = 1; /* kill session if no crypto */ + if (!CC->redirect_ssl) CC->kill_me = KILLME_NO_CRYPTO; /* kill session if no crypto */ #endif smtp_greeting(0); } @@ -183,10 +181,8 @@ void smtp_msa_greeting(void) { * LMTP is like SMTP but with some extra bonus footage added. */ void lmtp_greeting(void) { - citsmtp *sSMTP; smtp_greeting(0); - sSMTP = SMTP; SMTP->is_lmtp = 1; } @@ -217,7 +213,7 @@ void lmtp_unfiltered_greeting(void) { */ void smtp_auth_greeting(void) { cprintf("235 Hello, %s\r\n", CC->user.fullname); - CtdlLogPrintf(CTDL_NOTICE, "SMTP authenticated %s\n", CC->user.fullname); + syslog(LOG_NOTICE, "SMTP authenticated %s\n", CC->user.fullname); CC->internal_pgm = 0; CC->cs_flags &= ~CS_STEALTH; } @@ -302,7 +298,7 @@ void smtp_get_user(char *argbuf) { citsmtp *sSMTP = SMTP; CtdlDecodeBase64(username, argbuf, SIZ); - /* CtdlLogPrintf(CTDL_DEBUG, "Trying <%s>\n", username); */ + /* syslog(LOG_DEBUG, "Trying <%s>\n", username); */ if (CtdlLoginExistingUser(NULL, username) == login_ok) { CtdlEncodeBase64(buf, "Password:", 9, 0); cprintf("334 %s\r\n", buf); @@ -324,7 +320,7 @@ void smtp_get_pass(char *argbuf) { memset(password, 0, sizeof(password)); len = CtdlDecodeBase64(password, argbuf, SIZ); - /* CtdlLogPrintf(CTDL_DEBUG, "Trying <%s>\n", password); */ + /* syslog(LOG_DEBUG, "Trying <%s>\n", password); */ if (CtdlTryPassword(password, len) == pass_ok) { smtp_auth_greeting(); } @@ -584,7 +580,7 @@ void smtp_rcpt(char *argbuf) { && (!sSMTP->is_lmtp) ) { /* Don't RBL LMTP clients */ if (config.c_rbl_at_greeting == 0) { /* Don't RBL again if we already did it */ if (rbl_check(message_to_spammer)) { - if (CtdlThreadCheckStop()) + if (server_shutting_down) cprintf("421 %s\r\n", message_to_spammer); else cprintf("550 %s\r\n", message_to_spammer); @@ -695,7 +691,7 @@ void smtp_data(void) { return; } - CtdlLogPrintf(CTDL_DEBUG, "Converting message...\n"); + syslog(LOG_DEBUG, "Converting message...\n"); msg = convert_internet_message_buf(&body); /* If the user is locally authenticated, FORCE the From: header to @@ -785,20 +781,18 @@ void smtp_data(void) { cprintf("%s", result); } - /* Write something to the syslog (which may or may not be where the + /* Write something to the syslog(which may or may not be where the * rest of the Citadel logs are going; some sysadmins want LOG_MAIL). */ - if (enable_syslog) { - syslog((LOG_MAIL | LOG_INFO), - "%ld: from=<%s>, nrcpts=%d, relay=%s [%s], stat=%s", - msgnum, - sSMTP->from, - sSMTP->number_of_recipients, - CC->cs_host, - CC->cs_addr, - result - ); - } + syslog((LOG_MAIL | LOG_INFO), + "%ld: from=<%s>, nrcpts=%d, relay=%s [%s], stat=%s", + msgnum, + sSMTP->from, + sSMTP->number_of_recipients, + CC->cs_host, + CC->cs_addr, + result + ); /* Clean up */ CtdlFreeMessage(msg); @@ -836,17 +830,17 @@ void smtp_command_loop(void) { citsmtp *sSMTP = SMTP; if (sSMTP == NULL) { - CtdlLogPrintf(CTDL_EMERG, "Session SMTP data is null. WTF? We will crash now.\n"); + syslog(LOG_EMERG, "Session SMTP data is null. WTF? We will crash now.\n"); } time(&CC->lastcmd); memset(cmdbuf, 0, sizeof cmdbuf); /* Clear it, just in case */ if (client_getln(cmdbuf, sizeof cmdbuf) < 1) { - CtdlLogPrintf(CTDL_CRIT, "Client disconnected: ending session.\n"); - CC->kill_me = 1; + syslog(LOG_CRIT, "SMTP: client disconnected: ending session.\n"); + CC->kill_me = KILLME_CLIENT_DISCONNECTED; return; } - CtdlLogPrintf(CTDL_INFO, "SMTP server: %s\n", cmdbuf); + syslog(LOG_INFO, "SMTP server: %s\n", cmdbuf); while (strlen(cmdbuf) < 5) strcat(cmdbuf, " "); if (sSMTP->command_state == smtp_user) { @@ -895,7 +889,7 @@ void smtp_command_loop(void) { else if (!strncasecmp(cmdbuf, "QUIT", 4)) { cprintf("221 Goodbye...\r\n"); - CC->kill_me = 1; + CC->kill_me = KILLME_CLIENT_LOGGED_OUT; return; } @@ -937,7 +931,7 @@ void smtp_cleanup_function(void) { /* Don't do this stuff if this is not an SMTP session! */ if (CC->h_command_function != smtp_command_loop) return; - CtdlLogPrintf(CTDL_DEBUG, "Performing SMTP cleanup hook\n"); + syslog(LOG_DEBUG, "Performing SMTP cleanup hook\n"); free(SMTP); } @@ -993,6 +987,6 @@ CTDL_MODULE_INIT(smtp) CtdlRegisterSessionHook(smtp_cleanup_function, EVT_STOP); } - /* return our Subversion id for the Log */ + /* return our module name for the log */ return "smtp"; }