Hi,

On Sun, 12 May 2002 22:25:33 -0700 (PDT), Mark Crispin <[EMAIL PROTECTED]> 
wrote...
> Yes, I claim that it is possible.  It requires some creativity, but it is
> certainly possible.
> 
> There are many possible solutions, none of which stand out as more "right"
> than another.  It is certainly true that some IMAP extensions (ANNOTATE comes
> immediately to mind, but I worry that it has gone off the deep end) would make
> things a lot easier.  But it's still possible.
> 
> Rather than my suggesting a particular solution, try this exercise.  Suppose
> that it was an absolute requirement that the "restore from trash" operation
> put the message back precisely as it was, including the UID (to preclude one
> obvious kludge).  Let's also add an absolute requirement that it interoperate
> with a client that uses the DELETE/EXPUNGE model.  So you're really stuck with
> it.
> 
> How would you do it?  More importantly, how would you do it so that it works
> well?  How might you do it so that it works even better than a Trash mailbox/
> 
> Here's an observation that may help:
> 
> An IMAP mailbox can be used to store things other than messages.  It can also
> store all sorts of useful metadata as long as you make it look enough like a
> message to pacify the APPEND command on some servers.  Maybe you don't want to
> move messages to another mailbox called Trash.  But there may be other things
> what you may want to put in another mailbox dedicated for a purpose other than
> messages.

This is a very interesting idea.  A dedicated mailbox is already used for
client configuration data since the IMAP server is the only provider of
permanent storage that the client is authorized to access on behalf of
the user.  However, assuming that one client is keeping a reference to the
deleted message in its dedicated mailbox for trash rather than the real
message to reduce disk space usage, wouldn't keeping its trash synchronized
be difficult for users with a large number of mailboxes who also use the
DELETE/EXPUNGE model client deleting, undeleting and expunging the messages
out from under the dedicated mailbox client?  It appears that this kind of
implementation would not scale very well.  For example: what would happen
when the DELETE/EXPUNGE client deletes the dedicated mailbox.  Searching
the trash would also be difficult to implement.  Different clients would
have different messages in what they are calling the "Trash" since they'd
be using different dedicated mailboxes to store their information.

If this were done, rather than implemented by the client, it seems as though
it would better be done in the server, since the server should have first
hand access to the revelant details of all the messages which it is serving.
As the INBOX, a server maintained TRASH mailbox would then be consistent across
all clients without changing the current protocol.  Copy to TRASH might not
be permitted; but, a message would appear in the TRASH when its deleted flag
was set and leave the TRASH when the deleted flag is cleared.

I wish I had time for even more creativity.

Thanks,
Mark Keasling <[EMAIL PROTECTED]>

Reply via email to