Index: ChangeLog.arctic.org =================================================================== RCS file: /home/src/cvsroot/ezmlm/ChangeLog.arctic.org,v retrieving revision 1.1 diff -u -r1.1 ChangeLog.arctic.org --- ChangeLog.arctic.org 2 Oct 2002 02:10:55 -0000 1.1 +++ ChangeLog.arctic.org 27 Sep 2005 19:09:23 -0000 @@ -1,3 +1,7 @@ +Tue Sep 27 12:09:03 2005 dean gaudet + + * ezmlm-reject now rejects all messages with X-Spam-Status: YES + Tue Oct 1 17:59:16 2002 dean gaudet * imported ezmlm-0.53 Index: errtxt.h =================================================================== RCS file: /home/src/cvsroot/ezmlm/errtxt.h,v retrieving revision 1.1 diff -u -r1.1 errtxt.h --- errtxt.h 2 Oct 2002 00:58:33 -0000 1.1 +++ errtxt.h 27 Sep 2005 18:52:00 -0000 @@ -78,6 +78,7 @@ #define ERR_BAD_TYPE "Sorry, I don't accept messages of MIME Content-Type '" #define ERR_BAD_PART "Sorry, a message part has an unacceptable MIME Content-Type: " #define ERR_JUNK "Precedence: junk - message ignored" +#define ERR_SPAM "X-Spam-Status: Yes - message ignored" /* ezmlm-manage unique */ #define ERR_SUB_NOP "target is already a subscriber" Index: ezmlm-reject.c =================================================================== RCS file: /home/src/cvsroot/ezmlm/ezmlm-reject.c,v retrieving revision 1.2 diff -u -r1.2 ezmlm-reject.c --- ezmlm-reject.c 2 Oct 2002 00:58:33 -0000 1.2 +++ ezmlm-reject.c 27 Sep 2005 19:06:42 -0000 @@ -64,6 +64,7 @@ stralloc boundary = {0}; stralloc precd = {0}; stralloc mydtline = {0}; +stralloc spamstatus = {0}; void die_nomem() { @@ -264,6 +265,7 @@ case 'S': if (!stralloc_catb(&subject,cp,len-1)) die_nomem(); break; case 'C': if (!stralloc_catb(&content,cp,len-1)) die_nomem(); break; case 'P': if (!stralloc_catb(&precd,cp,len-1)) die_nomem(); break; + case 'Z': if (!stralloc_catb(&spamstatus,cp,len-1)) die_nomem(); break; default: break; } } else { @@ -281,6 +283,9 @@ } else if (case_startb(cp,len,"precedence:")) { if (!stralloc_copyb(&precd,cp+11,len-12)) die_nomem(); linetype = 'P'; + } else if (case_startb(cp,len,"x-spam-status:")) { + if (!stralloc_copyb(&spamstatus,cp+14,len-15)) die_nomem(); + linetype = 'Z'; } else { if (flagforward && line.len == mydtline.len) { if (!byte_diff(line.s,line.len,mydtline.s)) @@ -294,6 +299,11 @@ (!case_diffb(precd.s + precd.len - 4,4,"junk") || !case_diffb(precd.s + precd.len - 4,4,"bulk"))) strerr_die1x(99,ERR_JUNK); /* ignore precedence junk/bulk */ + cp = spamstatus.s; + len = spamstatus.len; + while (len && ((*cp == ' ') || (*cp == '\t'))) { ++cp; --len; } + if (len >= 3 && !case_diffb(cp, 3, "yes")) + strerr_die1x(99,ERR_SPAM); cp = subject.s; len = subject.len; while (len && (cp[len-1] == ' ' || cp[len-1] == '\t')) --len;