Einar Bordewich wrote:
> 
> With the mysql support for vpopmail, you only need to insert the user info
> into the vpopmail table, setting pw_dir to NULL. When mail arrives, or the
> user login through pop, the users maildir is created, and the pw_dir is
> updated with the new maildir info of the virtual user.
> 
> When login from sqwebmail, this will not initialize the creation of the
> users maildir, resulting in a "Premature end of script headers", and
> following error for the browser.  The same happens when login via IMAP. Of
> course sending a mail to the user, creates the maildir and gives a
> successful login with sqwebmail/courier-imap for the user.
> 
> Any solution to this?
> 
> vpopmail-4.9.8
> sqwebmail-1.2.5
> courier-imap-1.2
> mysql-3.22.32
> 
> I've just inserted 19757 users into the mysql table, and I could of course
> generate a welcome mail for all of these users/accounts. On the other hand,
> why bother to create the maildirs if only 10% of these accounts acctually
> will be used. They will not be allowed to pop in, but I could generate a
> welcom mail based on activation from a web page that the user had to visit
> before using sqwebmail.

You might want to check out the functionality of sqwebmail-1.2.5. I
tried
installing it yesterday and found that everything worked fine untill I
tried to read an email message, then I saw some strange error message
about the user being over quota, that's sqwebmail's quota.
sqwebmail-1.2.3 works fine and it's availble from the source forge ftp
directory of sqwebmail.

I've updated the vpopmail-4.9.9 to redo how user dirs are created. So
if you download the new version and use that, you'll have luck.

Then i've updated the sqwebmail authlib/preauthvchkpw.c code to use
this new code. Here is my code sample from that file:

        vget_assign(s,NULL,0,&uid, &gid);
        pw=vauth_getpw(usercopy, s);
        if ( pw!=NULL ) {
                if (pw->pw_dir == NULL || strlen(pw->pw_dir) == 0 ) {
                        make_user_dir(usercopy, s, uid, gid);
                        pw=vauth_getpw(usercopy, s);
                }
                vlogauth(pw, s, service);
        }
        free(usercopy);
        vclose();

You'll notice it does the check for a null or zero length directory
and calls make_user_dir to make it. 

It also calls the new vlogauth function to updated the lastlog table
so you'll know if they authenticated with sqwebmail. By default this
code is disabled. if you want it to log that you'll need to add
--enable-auth-log=y

Ken

Reply via email to