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 <dean@arctic.org>
+
+	* ezmlm-reject now rejects all messages with X-Spam-Status: YES
+
 Tue Oct  1 17:59:16 2002  dean gaudet <dean@arctic.org>
 
 	* 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;
