On Fri, 2010-01-15 at 08:39 -0500, James B. Byrne wrote: > I run cyrus-imapd under CentOS-4.8 (a RedHat el4 clone). I am > trying to discover if there is any way to purge a user's INBOX of > old and over-sized messages without affecting the contents of any > subfolders thereof. > > I have looked at impurge as the mechanism. However,my reading of the > man page, and of online discussions relating to this matter, > indicate that in order for impurge to remove any mail from the INBOX > then the -f switch has to be passed. But, I also gather that > whenever the -f switch is used then ALL subfolders of the target > directory are purged recursively as well. > > This strikes me as a rather odd combination of attributes but I > cannot see any way to prevent recursion if the -f switch is used. > What is the recommended way to purge mail from a user's INBOX only > using criteria such as age and size? > > Sincerely, >
I think you mean ipurge (not impurge) Even I had exactly the same issue .. I modified ipurge.c a bit so that it will expect a "-r" switch to recurse through subfolders along with "-f" else "-f" works only on the inbox I have a workaroud patch to ipurge.c I can share .. but *absolutely no guarantee* that it will work for you --- ipurge.c.default 2006-01-21 18:50:26.000000000 +0530 +++ ipurge.c 2006-01-21 18:50:34.000000000 +0530 @@ -85,6 +85,8 @@ int skipflagged = 0; int datemode = OFFSET_SENTDATE; int invertmatch = 0; +short int recurse =0; +short int done=0; /* for statistical purposes */ typedef struct mbox_stats_s { @@ -159,6 +161,9 @@ case 'i' : { invertmatch = 1; } break; + case 'r' : { + recurse = 1; + } break; case 'h': default: usage(argv[0]); } @@ -234,6 +239,10 @@ if (!strncasecmp(name,"INBOX",5) || mboxname_isusermailbox(name, 0)) return 0; } +if(!recurse){ + if(done) return(0); + done=1; + } +
---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html