That's controlled from the sqwebmail-config file, which is in the user's 
Maildir/.
Find attached a small patch written by Peter Penchev <[EMAIL PROTECTED]> which creates 
that file in usercreate time with the proper FROM: setting there.

I think the patch was designed for vpopmail-5.3.20, not sure if it will need adjusting 
for different versions.
Hope that helps!
-- 

Kiril Todorov   < -+- > +359 2 9712013
Bulgaria Online < -+- > http://home.online.bg

/* waiting... dreaming... wishing... */
--- vchkpw.c.orig       Tue Apr 29 14:24:51 2003
+++ vchkpw.c    Tue Apr 29 14:24:51 2003
@@ -377,7 +377,7 @@
   if ( vpw->pw_dir == NULL || vpw->pw_dir[0]==0 ) {
 
     /* if making a new directory failed log the error and exit */
-    if ( make_user_dir(vpw->pw_name, TheDomain, pw_uid, pw_gid)==NULL){
+    if ( make_user_dir(vpw->pw_name, TheDomain, vpw->pw_name, pw_uid, pw_gid)==NULL){
       snprintf(LogLine, LOG_LINE_SIZE, "%s: dir auto create failed [EMAIL 
PROTECTED]:%s", 
         VchkpwLogName, TheUser, TheDomain, IpAddr);
       vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass, 
--- vdelivermail.c.orig Sat Nov  2 22:34:39 2002
+++ vdelivermail.c      Sat Nov  2 22:35:20 2002
@@ -946,7 +946,7 @@
 
     /* If thier directory path is empty make them a new one */
     if ( vpw->pw_dir == NULL || vpw->pw_dir[0]==0 ) {
-        if ( make_user_dir(vpw->pw_name, TheDomain, 
+        if ( make_user_dir(vpw->pw_name, TheDomain, vpw->pw_name,
                TheDomainUid, TheDomainGid)==NULL){
             printf("Auto creation of maildir failed. vpopmail (#5.9.8)\n");
             vexit(100);
--- vpopmail.c.orig     Tue Apr 29 14:17:56 2003
+++ vpopmail.c  Tue Apr 29 14:18:01 2003
@@ -328,7 +328,7 @@
     }
   }
 
-  if ( (dir=make_user_dir(username, domain, uid, gid)) == NULL ) {
+  if ( (dir=make_user_dir(username, domain, gecos, uid, gid)) == NULL ) {
     if (verrori != 0 ) return(verrori);
     else return(VA_BAD_U_DIR);
   }
@@ -1453,16 +1453,45 @@
     return &pwent;
 }
 
+char *escape_spaces(const char *s)
+{
+  size_t i, len;
+  char *newstr;
+  
+  /* Count the spaces */
+  for (i = len = 0; s[i]; i++, len++)
+    if (s[i] == ' ')
+      len += 2;
+  /* Allocate */
+  newstr = malloc(len + 1);
+  if (newstr == NULL)
+    return (NULL);
+  /* Fill */
+  for (i = len = 0; s[i]; i++)
+    if (s[i] == ' ') {
+      newstr[len++] = '+';
+      newstr[len++] = '2';
+      newstr[len++] = '0';
+    } else {
+      newstr[len++] = s[i];
+    }
+  newstr[len] = '\0';
+  return (newstr);
+}
+
 /*
  * figure out where to put the user and
  * make the directories if needed
  */
-char *make_user_dir(char *username, char *domain, uid_t uid, gid_t gid)
+char *make_user_dir(char *username, char *domain, char *gecos,
+               uid_t uid, gid_t gid)
 {
  char *tmpstr;
  char *tmpbuf;
  char *tmpdir;
  struct vqpasswd *mypw;
+ char *fulladdr, *escaped;
+ FILE *cfg;
 
   verrori = 0;
   tmpbuf = malloc(MAX_BUFF);
@@ -1522,6 +1551,35 @@
     return(NULL);
   }
 
+  if ((cfg = fopen("sqwebmail-config", "wt")) == NULL) {
+    chdir(tmpbuf); free(tmpbuf); free(tmpdir);
+    printf("make_user_dir: error 8\n");
+    return(NULL);
+  }
+  if ((escaped = escape_spaces(username)) == NULL) {
+    fclose(cfg);
+    chdir(tmpbuf); free(tmpbuf); free(tmpdir);
+    printf("make_user_dir: error 9\n");
+    return(NULL);
+  }
+  if ((fulladdr = malloc(strlen(gecos) + strlen(username) + strlen(domain) + 10)) == 
NULL) {
+    fclose(cfg);
+    chdir(tmpbuf); free(tmpbuf); free(tmpdir);
+    printf("make_user_dir: error 9\n");
+    return(NULL);
+  }
+  sprintf(fulladdr, "\"%s <[EMAIL PROTECTED]>\"", gecos, username, domain);
+  if ((escaped = escape_spaces(fulladdr)) == NULL) {
+    fclose(cfg);
+    chdir(tmpbuf); free(tmpbuf); free(tmpdir);
+    printf("make_user_dir: error 10\n");
+    return(NULL);
+  }
+  free(fulladdr);
+  fprintf(cfg, "FROM=%s\n", escaped);
+  free(escaped);
+  fclose(cfg);
+  
   chdir("../..");
   r_chown(username, uid, gid);
 
--- vpopmail.h.orig     Tue Apr 29 14:21:06 2003
+++ vpopmail.h  Tue Apr 29 14:21:19 2003
@@ -128,7 +128,7 @@
 int update_file(char *, char *);
 int count_rcpthosts();
 int compile_morercpthosts();
-char *make_user_dir(char *username, char *domain, uid_t uid, gid_t gid);
+char *make_user_dir(char *username, char *domain, char *gecos, uid_t uid, gid_t gid);
 int r_mkdir(char *, uid_t uid, gid_t gid);
 struct vqpasswd *vgetent(FILE *);
 int pw_comp(char *, char *, char *, int);
--- vqmaillocal.c.orig  Tue Apr 29 14:24:51 2003
+++ vqmaillocal.c       Tue Apr 29 14:24:51 2003
@@ -895,7 +895,7 @@
       gid_t pw_gid;
 
        vget_assign(TheDomain,NULL,0,&pw_uid,&pw_gid);
-        if ( make_user_dir(vpw->pw_name, TheDomain, pw_uid, pw_gid)==NULL){
+        if ( make_user_dir(vpw->pw_name, TheDomain, vpw->pw_name, pw_uid, 
pw_gid)==NULL){
             printf("Auto creation of maildir failed. vpopmail (#5.9.8)\n");
             vexit(100);
         }

Reply via email to