Hello,

I've recently upgraded to vpopmail 5.4.14 and qmailadmin 1.2.9 (from
5.4.3 and qmailadmin 1.2.0) and everything seemed to work fine. However
for newly created domains I get a error 500 when I create a new account
or modify an account. Everything works fine for domains created before
the upgrade.

Since I've made some modifications to user.c I've removed them and tried
a clean qmailadmin and now the error is gone. But since I need these
modifications I am now trying to make it work.

One thing I noticed it that vpopmail creates new domains with a
.vpasswd.lock like this:

--w-------    1 vpopmail vchkpw    0 Feb 26 20:59 .vpasswd.lock

while the old vpopmail added the user-read privilege:

-rw-------    1 vpopmail vchkpw    0 Feb 26 20:59 .vpasswd.lock

If the vpasswd is u+rw my modifed qmailadmin works perfectly! So somehow
my modifications seem to need the user-read privilege, but I have no
idea why.

Here are my modifications:

--- user.c.orig Sun Feb 12 21:14:45 2006
+++ user.c      Sun Feb 12 21:40:11 2006
@@ -48,6 +48,8 @@
 #include "vpopmail.h"
 #include "vauth.h"
 
+#define SPAM_COMMAND_FORWARD   "/usr/local/etc/mailfilter-spam"
+#define SPAM_COMMAND_LOCAL     "/usr/local/etc/mailfilter-inbox"
 
 #define HOOKS 1
 
@@ -497,7 +499,15 @@
     if(strcmp(spamvalue, "on") == 0) {
        snprintf(NewBuf, sizeof(NewBuf), "%s/.qmail", mypw->pw_dir);
        fs = fopen(NewBuf, "w+");
-       fprintf(fs, "%s\n", SPAM_COMMAND);
+
+       fprintf(fs, "%s", SPAM_COMMAND);
+       if (mypw->pw_gid & V_USER0) {
+          fprintf(fs, " %s", SPAM_COMMAND_FORWARD);
+       } else {
+          fprintf(fs, " %s", SPAM_COMMAND_LOCAL);
+       }
+       fprintf(fs, "\n");
+          
        fclose(fs);
     }
 #endif
@@ -971,7 +981,13 @@
       fprintf (fs, "# delete\n");
       emptydotqmail = 0;
     } else if (spam_check == 1) {
-      fprintf (fs, "%s\n", SPAM_COMMAND);
+      fprintf(fs, "%s", SPAM_COMMAND);
+      if (vpw->pw_gid & V_USER0) {
+         fprintf(fs, " %s", SPAM_COMMAND_FORWARD);
+      } else {
+         fprintf(fs, " %s", SPAM_COMMAND_LOCAL);
+      }
+      fprintf(fs, "\n");
       emptydotqmail = 0;
     } else {
       fprintf (fs, "%s/" MAILDIR "/\n", vpw->pw_dir);



So I am thinking the vpw->pw_gid and mypw->pw_gid are responsible for
the error (possbibly mypw because I wanted to use vpw there but it isn't
available)


Any help would be really appreciated
thanks,
Florian

Reply via email to