SA-Exim seems to be dead (2006)

This commit is contained in:
2025-12-18 04:32:46 +01:00
parent 3df13746aa
commit f7aa855c57
3 changed files with 44 additions and 18 deletions

View File

@ -102,10 +102,11 @@ IGNORE= you cannot enable DANE without DNSSEC support or without TLS support
.endif .endif
.if ${PORT_OPTIONS:MSA_EXIM} || defined(FETCH_ALL) .if ${PORT_OPTIONS:MSA_EXIM} || defined(FETCH_ALL)
BROKEN= Unmaintained extension
MASTER_SITES+= http://marc.merlins.org/linux/exim/files/:sa_exim \ MASTER_SITES+= http://marc.merlins.org/linux/exim/files/:sa_exim \
SF/sa-exim/sa-exim/${SA_EXIM_VERSION}:sa_exim SF/sa-exim/sa-exim/${SA_EXIM_VERSION}:sa_exim
DISTFILES+= sa-exim-${SA_EXIM_VERSION}.tar.gz:sa_exim DISTFILES+= sa-exim-${SA_EXIM_VERSION}.tar.gz:sa_exim
#EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.c EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.c
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.conf EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.conf
.endif .endif

View File

@ -1,6 +1,6 @@
--- Local/sa-exim.c.orig 2020-02-19 03:04:43 UTC --- Local/sa-exim.c.orig 2025-12-18 04:08:13.593344000 +0100
+++ Local/sa-exim.c +++ Local/sa-exim.c 2025-12-18 04:10:17.527828000 +0100
@@ -29,10 +29,7 @@ http://lists.merlins.org/lists/listinfo/sa-exim @@ -29,10 +29,7 @@
#include "sa-exim.h" #include "sa-exim.h"
/* Exim includes */ /* Exim includes */
@ -12,7 +12,7 @@
#ifdef DLOPEN_LOCAL_SCAN #ifdef DLOPEN_LOCAL_SCAN
@@ -409,6 +406,11 @@ int parsemlheader(char *buffer, FILE *readfh, char *he @@ -409,6 +406,11 @@
if (buffer[strlen(buffer)-1] == '\n') if (buffer[strlen(buffer)-1] == '\n')
{ {
buffer[strlen(buffer)-1]=0; buffer[strlen(buffer)-1]=0;
@ -24,7 +24,7 @@
} }
if (SAEximDebug > 5) if (SAEximDebug > 5)
{ {
@@ -515,6 +517,7 @@ int local_scan(volatile int fd, uschar **return_text) @@ -515,6 +517,7 @@
int pid; int pid;
int writefd[2]; int writefd[2];
int readfd[2]; int readfd[2];
@ -32,7 +32,18 @@
int i; int i;
/* These are the only values that we want working after the longjmp /* These are the only values that we want working after the longjmp
* The automatic ones can be clobbered, but we don't really care */ * The automatic ones can be clobbered, but we don't really care */
@@ -550,8 +553,9 @@ int local_scan(volatile int fd, uschar **return_text) @@ -536,8 +539,8 @@
time_t beforescan;
time_t afterscan;
time_t afterwait;
- time_t scantime=0;
- time_t fulltime=0;
+ int scantime=0;
+ int fulltime=0;
struct stat stbuf;
uschar *expand;
@@ -550,8 +553,9 @@
static char *SAspamcpath=SPAMC_LOCATION; static char *SAspamcpath=SPAMC_LOCATION;
static char *SAsafemesgidchars=SAFEMESGIDCHARS static char *SAsafemesgidchars=SAFEMESGIDCHARS
static char *SAspamcSockPath=NULL; static char *SAspamcSockPath=NULL;
@ -44,7 +55,7 @@
static char *SAEximRunCond="0"; static char *SAEximRunCond="0";
static char *SAEximRejCond="1"; static char *SAEximRejCond="1";
static int SAmaxbody=250*1024; static int SAmaxbody=250*1024;
@@ -602,6 +606,10 @@ int local_scan(volatile int fd, uschar **return_text) @@ -602,6 +606,10 @@
/* Do not put a %s in there, or you'll segfault */ /* Do not put a %s in there, or you'll segfault */
static char *SAmsgerror="Temporary local error while processing message, please contact postmaster"; static char *SAmsgerror="Temporary local error while processing message, please contact postmaster";
@ -55,7 +66,7 @@
/* New values we read from spamassassin */ /* New values we read from spamassassin */
char *xspamstatus=NULL; char *xspamstatus=NULL;
char *xspamflag=NULL; char *xspamflag=NULL;
@@ -712,6 +720,7 @@ int local_scan(volatile int fd, uschar **return_text) @@ -712,6 +720,7 @@
M_CHECKFORSTR(SAspamcSockPath); M_CHECKFORSTR(SAspamcSockPath);
M_CHECKFORSTR(SAspamcPort); M_CHECKFORSTR(SAspamcPort);
M_CHECKFORSTR(SAspamcHost); M_CHECKFORSTR(SAspamcHost);
@ -63,7 +74,7 @@
M_CHECKFORSTR(SAEximRunCond); M_CHECKFORSTR(SAEximRunCond);
M_CHECKFORSTR(SAEximRejCond); M_CHECKFORSTR(SAEximRejCond);
M_CHECKFORVAR(SAmaxbody, "%d"); M_CHECKFORVAR(SAmaxbody, "%d");
@@ -914,6 +923,22 @@ int local_scan(volatile int fd, uschar **return_text) @@ -914,6 +923,22 @@
ret=dup2(readfd[1],2); ret=dup2(readfd[1],2);
CHECKERR(ret,"dup2 stderr",__LINE__); CHECKERR(ret,"dup2 stderr",__LINE__);
@ -86,7 +97,7 @@
/* /*
* I could implement the spamc protocol and talk to spamd directly * I could implement the spamc protocol and talk to spamd directly
* instead of forking spamc, but considering the overhead spent * instead of forking spamc, but considering the overhead spent
@@ -924,17 +949,30 @@ int local_scan(volatile int fd, uschar **return_text) @@ -924,17 +949,30 @@
/* Ok, we cheat, spamc cares about how big the whole message is and /* Ok, we cheat, spamc cares about how big the whole message is and
* we only know about the body size, so I'll give an extra 16K * we only know about the body size, so I'll give an extra 16K
* to account for any headers that can accompany the message */ * to account for any headers that can accompany the message */
@ -122,7 +133,7 @@
} }
if (SAEximDebug > 8) if (SAEximDebug > 8)
@@ -1045,6 +1083,11 @@ int local_scan(volatile int fd, uschar **return_text) @@ -1045,6 +1083,11 @@
if (buffer[strlen(buffer)-1] == '\n') if (buffer[strlen(buffer)-1] == '\n')
{ {
buffer[strlen(buffer)-1]=0; buffer[strlen(buffer)-1]=0;
@ -134,7 +145,21 @@
} }
restart: restart:
if (SAEximDebug > 5) if (SAEximDebug > 5)
@@ -1218,7 +1261,7 @@ restart: @@ -1154,7 +1197,7 @@
{
if (SAEximDebug > 5)
{
- log_write(0, LOG_MAIN, "SA: Debug6: spamc read got newline, end of headers", buffer);
+ log_write(0, LOG_MAIN, "SA: Debug6: spamc read got newline, end of headers");
}
goto exit;
}
@@ -1214,11 +1257,11 @@
{
if (SAEximDebug > 8)
{
- log_write(0, LOG_MAIN, "SA: Debug9: Read body from SA; line %d (read %d)", line, strlen(buffer));
+ log_write(0, LOG_MAIN, "SA: Debug9: Read body from SA; line %d (read %zd)", line, strlen(buffer));
} }
stret=write(fd, buffer, strlen(buffer)); stret=write(fd, buffer, strlen(buffer));
@ -143,7 +168,7 @@
if (SAEximDebug > 8) if (SAEximDebug > 8)
{ {
log_write(0, LOG_MAIN, "SA: Debug9: Wrote to msg; line %d (wrote %d)", line, ret); log_write(0, LOG_MAIN, "SA: Debug9: Wrote to msg; line %d (wrote %d)", line, ret);
@@ -1229,18 +1272,20 @@ restart: @@ -1229,18 +1272,20 @@
} }
} }
@ -165,7 +190,7 @@
} }
fclose((FILE *)readfh); fclose((FILE *)readfh);
@@ -1331,6 +1376,9 @@ restart: @@ -1331,6 +1376,9 @@
if (dorej && doteergrube) if (dorej && doteergrube)
{ {
@ -175,7 +200,7 @@
/* By default, we'll only save temp bounces by message ID so /* By default, we'll only save temp bounces by message ID so
* that when the same message is submitted several times, we * that when the same message is submitted several times, we
* overwrite the same file on disk and not create a brand new * overwrite the same file on disk and not create a brand new
@@ -1353,20 +1401,8 @@ restart: @@ -1353,20 +1401,8 @@
for (i=0;i<SAteergrubetime/10;i++) for (i=0;i<SAteergrubetime/10;i++)
{ {
@ -194,7 +219,7 @@
- fprintf(smtp_out, str); - fprintf(smtp_out, str);
- ret=fflush(smtp_out); - ret=fflush(smtp_out);
+ smtp_printf("451-%s\r\n", FALSE, teergrubewaitstr); + smtp_printf("451-%s\r\n", FALSE, teergrubewaitstr);
+ ret=smtp_fflush(); + ret=smtp_fflush(TRUE);
if (ret != 0) if (ret != 0)
{ {
log_write(0, LOG_MAIN | LOG_REJECT, "SA: Action: teergrubed sender for %d secs until it closed the connection: %s (scanned in %d/%d secs | Message-Id: %s). %s", i*10, spamstatus, scantime, fulltime, safemesgid, mailinfo); log_write(0, LOG_MAIN | LOG_REJECT, "SA: Action: teergrubed sender for %d secs until it closed the connection: %s (scanned in %d/%d secs | Message-Id: %s). %s", i*10, spamstatus, scantime, fulltime, safemesgid, mailinfo);

View File

@ -121,7 +121,7 @@ PROXY_DESC= Enable Experimental Proxy Protocol
READLINE_DESC= Enable readline(3) library READLINE_DESC= Enable readline(3) library
REDIS_DESC= Enable redis lookups REDIS_DESC= Enable redis lookups
SASLAUTHD_DESC= Enable use of Cyrus SASL auth daemon SASLAUTHD_DESC= Enable use of Cyrus SASL auth daemon
SA_EXIM_DESC= Build with Spamassassin local scan SA_EXIM_DESC= Build with Spamassassin local scan (BROKEN)
SOCKS_DESC= Enable smtp transport via socks5 proxies SOCKS_DESC= Enable smtp transport via socks5 proxies
SPF_DESC= Enable Sender Policy Framework checking SPF_DESC= Enable Sender Policy Framework checking
SQLITE_DESC= Enable SQLite lookups SQLITE_DESC= Enable SQLite lookups