From c5432af3ef02e8cd276a30b7e33e5bb3211eaffb Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 13 Jul 2002 10:17:38 +0000
Subject: [PATCH] Using CVS revision instead of hard-coded version string. Spam
 log entries now reflect the action taken (not always "REFUSED").

---
 src/sbbs3/mailsrvr.c | 51 ++++++++++++++++++++++++++------------------
 1 file changed, 30 insertions(+), 21 deletions(-)

diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 969a2d78d0..16608b50e0 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -67,7 +67,6 @@
 #include "crc32.h"
 
 /* Constants */
-#define MAIL_VERSION	"1.11"
 #define FORWARD			"forward:"
 #define NO_FORWARD		"local:"
 
@@ -95,6 +94,7 @@ static DWORD	thread_count=0;
 static BOOL		sendmail_running=FALSE;
 static DWORD	sockets=0;
 static BOOL		recycle_server=FALSE;
+static char		revision[16];
 
 typedef struct {
 	SOCKET			socket;
@@ -674,8 +674,8 @@ static void pop3_thread(void* arg)
 			break;
 		}
 
-		sockprintf(socket,"+OK Synchronet POP3 Server for %s v%s Ready"
-			,PLATFORM_DESC,MAIL_VERSION);
+		sockprintf(socket,"+OK Synchronet POP3 Server %s/%s Ready"
+			,revision,PLATFORM_DESC);
 
 		/* Requires USER command first */
 		for(i=3;i;i--) {
@@ -1168,7 +1168,7 @@ static BOOL chk_email_addr(SOCKET socket, char* p, char* host_name, char* host_i
 	lprintf("%04d !SMTP BLOCKED SOURCE: %s"
 		,socket, addr);
 	sprintf(tmp,"Blocked source e-mail address: %s", addr);
-	spamlog(&scfg, "SMTP", tmp, host_name, host_ip, to);
+	spamlog(&scfg, "SMTP", "REFUSED", tmp, host_name, host_ip, to);
 	sockprintf(socket, "554 Sender not allowed.");
 
 	return(FALSE);
@@ -1333,9 +1333,9 @@ static void smtp_thread(void* arg)
 	if(dnsbl_result.s_addr) {
 		lprintf("%04d SMTP BLACKLISTED SERVER on %s: %s [%s] = %s"
 			,socket, dnsbl, host_name, host_ip, inet_ntoa(dnsbl_result));
-		sprintf(str,"Listed on %s as %s", dnsbl, inet_ntoa(dnsbl_result));
-		spamlog(&scfg, "SMTP", str, host_name, host_ip, NULL);
 		if(startup->options&MAIL_OPT_DNSBL_REFUSE) {
+			sprintf(str,"Listed on %s as %s", dnsbl, inet_ntoa(dnsbl_result));
+			spamlog(&scfg, "SMTP", "REFUSED", str, host_name, host_ip, NULL);
 			sockprintf(socket
 				,"550 Mail from %s refused due to listing at %s"
 				,host_ip, dnsbl);
@@ -1380,8 +1380,8 @@ static void smtp_thread(void* arg)
 	sprintf(str,"SMTP: %s",host_ip);
 	status(str);
 
-	sockprintf(socket,"220 %s Synchronet SMTP Server for %s v%s Ready"
-		,scfg.sys_inetaddr,PLATFORM_DESC,MAIL_VERSION);
+	sockprintf(socket,"220 %s Synchronet SMTP Server %s/%s Ready"
+		,scfg.sys_inetaddr,revision,PLATFORM_DESC);
 	while(1) {
 		rd = sockreadline(socket, buf, sizeof(buf));
 		if(rd<1) 
@@ -1413,17 +1413,22 @@ static void smtp_thread(void* arg)
 
 				if(dnsbl_result.s_addr) {
 					if(startup->options&MAIL_OPT_DNSBL_IGNORE) {
-						/* pretend we received it */
-						sockprintf(socket,SMTP_OK);
 						lprintf("%04d SMTP IGNORED MAIL from blacklisted server"
 							,socket);
+						sprintf(str,"Listed on %s as %s", dnsbl, inet_ntoa(dnsbl_result));
+						spamlog(&scfg, "SMTP", "IGNORED", str, host_name, host_ip, NULL);
+						/* pretend we received it */
+						sockprintf(socket,SMTP_OK);
 						continue;
 					}
+					/* flag message as spam */
 					sprintf(str,"X-RBL: %s is listed on %s as %s"
 						,host_ip, dnsbl, inet_ntoa(dnsbl_result));
 					smb_hfield(&msg,RFC822HEADER,strlen(str),str);
 					lprintf("%04d SMTP FLAGGED MAIL from blacklisted server"
 						,socket);
+					sprintf(str,"Listed on %s as %s", dnsbl, inet_ntoa(dnsbl_result));
+					spamlog(&scfg, "SMTP", "FLAGGED", str, host_name, host_ip, NULL);
 				}
 
 				if(telegram==TRUE) {		/* Telegram */
@@ -1639,11 +1644,11 @@ static void smtp_thread(void* arg)
 
 					snprintf(hdrfield,sizeof(hdrfield),
 						"Received: from %s (%s [%s])\r\n"
-						"          by %s [%s] (Synchronet Mail Server for %s v%s) with %s\r\n"
+						"          by %s [%s] (Synchronet Mail Server %s/%s) with %s\r\n"
 						"          for %s; %s"
 						,host_name,hello_name,host_ip
 						,scfg.sys_inetaddr,inet_ntoa(server_addr.sin_addr)
-						,PLATFORM_DESC,MAIL_VERSION
+						,revision,PLATFORM_DESC
 						,esmtp ? "ESMTP" : "SMTP"
 						,rcpt_name,msgdate(msg.hdr.when_imported,date));
 					smb_hfield(&newmsg, RFC822HEADER, (ushort)strlen(hdrfield), hdrfield);
@@ -1726,7 +1731,7 @@ static void smtp_thread(void* arg)
 						,socket, p, reverse_path);
 					sprintf(tmp,"Blocked subject (%s) from: %s"
 						,p, reverse_path);
-					spamlog(&scfg, "SMTP", tmp, host_name, host_ip, rcpt_addr);
+					spamlog(&scfg, "SMTP", "REFUSED", tmp, host_name, host_ip, rcpt_addr);
 					sockprintf(socket, "554 Subject not allowed.");
 					break;
 				}
@@ -1979,7 +1984,7 @@ static void smtp_thread(void* arg)
 					,socket, MAX_RECIPIENTS);
 				sprintf(tmp,"Maximum recipient count (%d) from: %s"
 					,MAX_RECIPIENTS, reverse_path);
-				spamlog(&scfg, "SMTP", tmp, host_name, host_ip, rcpt_addr);
+				spamlog(&scfg, "SMTP", "REFUSED", tmp, host_name, host_ip, rcpt_addr);
 				sockprintf(socket, "552 Too many recipients");
 				continue;
 			}
@@ -1990,7 +1995,7 @@ static void smtp_thread(void* arg)
 					,socket, rcpt_addr, reverse_path);
 				sprintf(str,"Blocked recipient e-mail address from: %s"
 					,reverse_path);
-				spamlog(&scfg, "SMTP", str, host_name, host_ip, rcpt_addr);
+				spamlog(&scfg, "SMTP", "REFUSED", str, host_name, host_ip, rcpt_addr);
 				sockprintf(socket, "550 Unknown User:%s", buf+8);
 				continue;
 			}
@@ -2032,7 +2037,7 @@ static void smtp_thread(void* arg)
 							,socket, reverse_path, host_ip, p);
 						sprintf(tmp,"Relay attempt from: %s to: %s"
 							,reverse_path, p);
-						spamlog(&scfg, "SMTP", tmp, host_name, host_ip, rcpt_addr);
+						spamlog(&scfg, "SMTP", "REFUSED", tmp, host_name, host_ip, rcpt_addr);
 						if(startup->options&MAIL_OPT_ALLOW_RELAY)
 							sockprintf(socket, "553 Relaying through this server "
 							"requires authentication.  "
@@ -2756,9 +2761,11 @@ const char* DLLCALL mail_ver(void)
 
 	DESCRIBE_COMPILER(compiler);
 
-	sprintf(ver,"Synchronet Mail Server v%s%s  SMBLIB v%s  "
+	sscanf("$Revision$" + 11, "%s", revision);
+
+	sprintf(ver,"Synchronet Mail Server %s%s  SMBLIB %s  "
 		"Compiled %s %s with %s"
-		,MAIL_VERSION
+		,revision
 #ifdef _DEBUG
 		," Debug"
 #else
@@ -2792,6 +2799,8 @@ void DLLCALL mail_server(void* arg)
 	smtp_t*			smtp;
 	struct timeval	tv;
 
+	mail_ver();
+
 	startup=(mail_startup_t*)arg;
 
     if(startup==NULL) {
@@ -2829,8 +2838,8 @@ void DLLCALL mail_server(void* arg)
 		signal(SIGPIPE,SIG_IGN);
 #endif
 
-		lprintf("Synchronet Mail Server Version %s%s"
-			,MAIL_VERSION
+		lprintf("Synchronet Mail Server %s%s"
+			,revision
 #ifdef _DEBUG
 			," Debug"
 #else
@@ -2842,7 +2851,7 @@ void DLLCALL mail_server(void* arg)
 
 		lprintf("Compiled %s %s with %s", __DATE__, __TIME__, compiler);
 
-		lprintf("SMBLIB v%s (format %x.%02x)",smb_lib_ver(),smb_ver()>>8,smb_ver()&0xff);
+		lprintf("SMBLIB %s (format %x.%02x)",smb_lib_ver(),smb_ver()>>8,smb_ver()&0xff);
 
 		srand(time(NULL));
 
-- 
GitLab