So far it's just on/off switch, but it's a start :)

Enjoy.

This is also going to be posted to the qmailadmin sourceforge project
within the hour.

The patch was made against qmailadmin 1.2.0 but I don't forsee any
difficulty with making against any other version.

Beware, if you're using the old method of --enable-spam-command this
patch removes that functionality (the spam command stuff for ./configure
is still there, but none of the functionality is)

Any pre-existing spam command'ed accounts should work fine, this is
simply a patch to go along with the spamc calling in vdelivermail that
Ken posted a few weeks ago.

-Jeremy

-- 
Jeremy Kitchen
Systems Administrator
[EMAIL PROTECTED]
Kitchen @ #qmail on EFNet - Join the party!
.....................
Inter7 Internet Technologies, Inc.
www.inter7.com
866.528.3530 toll free
847.492.0470 int'l
847.492.0632 fax
GNUPG key ID: 93BDD6CE
diff -urN qmailadmin-1.2.0-orig/template.c qmailadmin-1.2.0-spam/template.c
--- qmailadmin-1.2.0-orig/template.c	2004-01-25 18:41:07.000000000 -0600
+++ qmailadmin-1.2.0-spam/template.c	2004-03-18 13:19:21.000000000 -0600
@@ -729,6 +729,13 @@
     return;
   }
 
+  if ( newchar=='9') {
+    vpw = vauth_getpw(ActionUser, Domain);
+    if (vpw->pw_gid ^ NO_SPAMASSASSIN) {
+	printf("checked ");
+    }
+  }
+
   if (fs1 == NULL) {
     if (newchar=='0'){
       printf("checked ");
@@ -774,33 +781,6 @@
         }
       }
 
-      i = 0;
-      do {
-        if (newchar == '3' && (NTmpBuf[0] == '/' ||
-                               strstr(NTmpBuf, SPAM_COMMAND)!=NULL) ) {
-          printf("checked ");
-          return;
-        }
-        if ( newchar == '2' ) {
-          if (NTmpBuf[0]=='/') continue;
-          if (NTmpBuf[0]=='|') continue;
-          if ( i>0 ) printf(", ");
-          if (NTmpBuf[0]=='&') {
-            printf("%s", strtok(&NTmpBuf[1], "\n"));
-          } else {
-            printf("%s", NTmpBuf[0]);
-          } 
-          ++i;
-        }
-        /* Jeff Hedlund ([EMAIL PROTECTED]) 28 May 2003 */
-        /* i9: "checked" if spam filtering on */
-        if ( newchar == '9' && strstr(NTmpBuf, SPAM_COMMAND)!=NULL ) {
-           printf("checked ");
-           return;
-        }
-      } while(fgets(NTmpBuf,sizeof(NTmpBuf),fs1) != NULL );
-                   
-      
       return;
     } else {
 
diff -urN qmailadmin-1.2.0-orig/user.c qmailadmin-1.2.0-spam/user.c
--- qmailadmin-1.2.0-orig/user.c	2004-01-26 12:16:40.000000000 -0600
+++ qmailadmin-1.2.0-spam/user.c	2004-03-18 13:19:31.000000000 -0600
@@ -493,11 +493,10 @@
 
 #ifdef MODIFY_SPAM
     GetValue(TmpCGI, spamvalue, "spamcheck=", sizeof(spamvalue));
-    if(strcmp(spamvalue, "on") == 0) {
-       snprintf(NewBuf, sizeof(NewBuf), "%s/.qmail", mypw->pw_dir);
-       fs = fopen(NewBuf, "w+");
-       fprintf(fs, "%s\n", SPAM_COMMAND);
-       fclose(fs);
+    if(strcmp(spamvalue, "off") == 0) {
+    mypw = vauth_getpw(ActionUser, Domain);
+    mypw->pw_gid |= NO_SPAMASSASSIN;
+    vauth_setpw(mypw, Domain);
     }
 #endif
 
@@ -805,6 +804,7 @@
   }
 #endif
 
+
   GetValue(TmpCGI,Gecos, "gecos=", sizeof(Gecos));
   if ( strlen( Gecos ) != 0 ) {
     vpw = vauth_getpw(ActionUser, Domain); 
@@ -857,7 +857,15 @@
 
   /* get value of the spam filter box */
   GetValue(TmpCGI,box, "spamcheck=", sizeof(box));
-  if ( strcmp(box,"on") == 0 ) spam_check = 1;
+  if ( strcmp(box,"on") == 0 ) {
+    vpw = vauth_getpw(ActionUser, Domain);
+    vpw->pw_gid &= ~NO_SPAMASSASSIN;
+    vauth_setpw(vpw, Domain);
+  } else {
+    vpw = vauth_getpw(ActionUser, Domain);
+    vpw->pw_gid |= NO_SPAMASSASSIN;
+    vauth_setpw(vpw, Domain);
+  }
 
   /* get the value of the cforward radio button */
   GetValue(TmpCGI,box, "cforward=", sizeof(box));
@@ -870,13 +878,6 @@
     snprintf(NewBuf,sizeof(NewBuf),"%s/.qmail", vpw->pw_dir);
     unlink(NewBuf);
 
-    /* if the mail is to be checked for spam, rewrite the file with command */
-    if( spam_check == 1 ) {
-       fs = fopen(NewBuf, "w+");
-       fprintf(fs, "%s\n", SPAM_COMMAND);
-       fclose(fs);
-    }
-
     /* delete any vacation directory */
     snprintf(NewBuf,sizeof(NewBuf),"%s/vacation", vpw->pw_dir);
     vdelfiles(NewBuf);
@@ -924,12 +925,7 @@
     /* if they want to save a copy */
     GetValue(TmpCGI,box, "fsaved=", sizeof(box));
     if ( strcmp(box,"on") == 0 ) {
-      if( spam_check == 1 ) {
-        /* if spam check is enabled, that will save the message*/
-        fprintf(fs, "%s\n", SPAM_COMMAND);
-      } else {
-        fprintf(fs,"%s/Maildir/\n", vpw->pw_dir);
-      }
+      fprintf(fs,"%s/Maildir/\n", vpw->pw_dir);
     } 
     fclose(fs);
 
@@ -958,11 +954,7 @@
     fprintf(fs, "| %s/autorespond 86400 3 %s/vacation/message %s/vacation\n",
       AUTORESPOND_PATH, vpw->pw_dir, vpw->pw_dir );
 
-    /* save a copy for the user (if checking for spam, it will keep a copy)*/
-    if(spam_check==1)
-       fprintf(fs, "%s\n", SPAM_COMMAND);
-    else
-      fprintf(fs,"%s/Maildir/\n", vpw->pw_dir);
+     fprintf(fs,"%s/Maildir/\n", vpw->pw_dir);
     fclose(fs);
 
     /* set up the message file */

Reply via email to