There is no particular reason why you could not use this with unixhierarchysep, just substitute the "/" (slash) for the "."(period) in the substring function. Note that this was tested in 2.0.16, the exact location in index.c might be different in later versions. Also check the capitalization and spelling your imap clients use for the Trash folder name and adjust as appropriate.
The advantage of this hack over the infinite Trash quota is that overquota users are much more limited. With an infinite trash quota, many folks would soon learn that they could save as much as they wanted to permanently in their Trash folder. With my hack, you can copy to trash while over quota and fill it up as large as you want, but as long as the INBOX and all the subfolders in its quota root ( including Trash ) are overquota, then no new messages will be delivered and you will be unable to copy messages to anywhere other than Trash. Practically this means that only truly malicious users could/would abuse the system, users who legitimately want to get mail will have to go under quota to continue to receive messages.
I made one other change to the imap_err.et (ultimately to imap_err.c) to modify the over quota error message to read: "Mailbox is over quota. Delete some messages and empty Trash" This helps users identify what to do when overquota.
Truthfully, this is not a perfect implementation since it would allow over quota users to copy to any folder that contains the string ".Trash" in it (for example: INBOX.Trashme INBOX.Trashhold.save etc.) Someone with more C library experience could tell me what the appropriate string function to use is. I just have gotten too spoiled playing with strings in perl.
Hope this helps,
John
Christian Schulte wrote:
Am Mittwoch, 6. August 2003 01:12 schrieb John Wade:diff index.c index.c.org 1220,1228c1220 < /* next lines changed to allow copy to Trash when usr over quota */ < /* jwidera jwade 6/27/03 lets users "move to Trash" when over quota */ < < if ( strstr(name,".Trash") ) { < r = append_setup(&append_mailbox, name, MAILBOX_FORMAT_NORMAL, < imapd_userid, imapd_authstate, ACL_INSERT, -1); < } < else { < r = append_setup(&append_mailbox, name, MAILBOX_FORMAT_NORMAL, ---r = append_setup(&append_mailbox, name, MAILBOX_FORMAT_NORMAL,1230d1221 < }Does it support unixhierarchysep ? Can you tell me the difference to just setting an infinite quota on the trash folder ? What do you win with it ? I cannot see any improvement to what is possible with quota... If you would set an infinite quota on the trash folder, whouldn't that behave exactly the same ? --Christian