On Sun, 2004-01-04 at 18:57, Pete Maclean wrote: > The only alternatives I see, given the particular constraints upon my > server, are to behave like the UW server and disallow multiple concurrent > selections or make a copy of every mailbox as it is selected. However, > implementing the latter would entail an amount of work and impose an > efficiency toll of such magnitude that I cannot see undertaking it. Adding > the former as an option is something I am considering.
Something I just thought about doing optionally: Mark the message expunged using some non-standard flag and expunge it later (maybe in some nightly run). Don't show expunge-marked messages to clients, unless they haven't been notified that it's been expunged. Don't do the real expunging unless the flag was set less than hour ago. That should make it highly unlikely that anyone hasn't been notified of the EXPUNGE yet. With mbox this could be done by adding a new header (X-IMAP-Expunged: timestamp). With maildir it could be done adding a new X flag to the file and checking it's ctime. Of course these work only with my IMAP server, but other software shouldn't get bothered about it. And of course, if other software expunge mails directly I still have to do some fallback handling. Fallback handling that I'm thinking about doing is to issue BYE whenever the expunged message is accessed, except possibly if only FLAGS are fetched, server could always return \Deleted for it. For STORE I could just ignore changes in expunged messages and return "* 123 FETCH (FLAGS (\Deleted))" for them. Maybe you could do something similiar.
signature.asc
Description: This is a digitally signed message part
