> > 
> > Some body did a patch to do auto create of mailboxes but I have lost the
> > URL ... I have the patch somewhere if it is required.
> > 
> > --
> > Simon
> 
> We have a patch (for 2.0.16 +) that  provides the same
> functionality, in case a mail is posted to a user whose mailbox has not
> been created yet. This patch introduces a new boolean configuration
> option  called "createonpost" through which admins can activate or
> deactivate this feature. This functionality for the time being applies
> only for user.<username> folders and not for BB or Subfolders
> (It would be possible though by applying some additional checks 
> dependant on the mail service architecture, to address these cases too)


This patch ( attached) , only creates on login ..

its is from http://www.ispman.org/extras/

-- 
Simon


*** cyrus-imapd-2.0.11/imap/imapd.c	Fri Jan 19 11:37:28 2001
--- imap/imapd.c	Thu Feb  8 18:02:54 2001
***************
*** 2211,2217 ****
--- 2211,2224 ----
  {
      struct mailbox mailbox;
      char mailboxname[MAX_MAILBOX_NAME+1];
+     char add_name[MAX_MAILBOX_NAME+1];   /* I'm not happy about this buffer, but
+                                             since "INBOX." can be no bigger than
+                                             "user.*", it *should* be okay. */
+     char add_mailboxname[MAX_MAILBOX_NAME+1];
+     char *autofolders;
+     char *autofolder;
      int r = 0;
+     int r_tmp;
      double usage;
      int doclose = 0;
  
***************
*** 2231,2236 ****
--- 2238,2281 ----
  
      if (!r) {
  	r = mailbox_open_header(mailboxname, imapd_authstate, &mailbox);
+ 	if (r == IMAP_MAILBOX_NONEXISTENT &&
+ 	    !strncasecmp(name, "INBOX", 6) &&
+ 	    config_getint("autocreatequota", 0)) {   /* Autocreate INBOX */
+ 	    r = mboxlist_createmailbox(mailboxname, MAILBOX_FORMAT_NORMAL,
+ 				       NULL, 1, imapd_userid,
+ 				       imapd_authstate);
+ 	    if (!r) {
+ 		r = mailbox_open_header(mailboxname, imapd_authstate,
+ 					&mailbox);
+ 	    }
+ 	    r_tmp = r;   /* Save return value for later */
+ 
+ 	    if (!r) {
+ 		/* Deal with surreptitiously creating additional folders */
+ 		autofolders = strdup(config_getstring("autocreatefolders", ""));
+ 		autofolder = strtok(autofolders, " ");
+ 		while (autofolder != NULL) {
+ 		    add_name[0] = '\0';
+ 		    strcat(add_name, name);
+ 		    strcat(add_name, ".");
+ 		    strcat(add_name, autofolder);
+ 		    r = mboxname_tointernal(add_name, imapd_userid, add_mailboxname);
+ 		    if (!r) {
+ 			/* Throw away return because errors cannot be fatal and
+ 			   there's no way to report them.  syslog() maybe? */
+ 			(void)mboxlist_createmailbox(add_mailboxname,
+ 			                             MAILBOX_FORMAT_NORMAL,
+ 			                             NULL, 1, imapd_userid,
+ 			                             imapd_authstate);
+ 		    }
+ 		    /* I hope there are no intervening strtok()s */
+ 		    autofolder = strtok(NULL, " ");
+ 		}
+ 		free(autofolders);
+ 	    }
+ 
+ 	    r = r_tmp;   /* Replace ``original'' return value */
+ 	}
      }
  
      if (!r) {

Reply via email to