Hi,

On Wed, 29 Jan 2003 17:39:55 -0800 (Pacific Standard Time), Mark Crispin 
<[EMAIL PROTECTED]> wrote...
> On Wed, 30 Jan 2003, Timo Sirainen wrote:
> > I guess it would be possible to create GLOBAL-UIDVALIDITY which would
> > guarantee that guidval+uid would uniquely identify the message within
> > the user's all mails.
> >
> > Except how do you guarantee it's uniqueness? Think shared folders for
> > example. It would really have to be global among all users, which could
> > be pretty difficult to implement safely.
> 
> That's the real issue.  UIDVALIDITY is a 32-bit value, which is much too
> small for any globally-unique mechanism unless you have some sort of
> central UID issuing authority.  In the absense of such an authority, you
> need more bits.  I think that 48 bits is probably the minimum for global
> uniqueness for self-assigned UIDs, and 64 bits would be better.

Only clients which maintain mailbox state between sessions have problems
with ambiguous uids which may occur as the result of renaming a mailbox.
Clients which forget everything between sessions don't know any better.

That's the basic idea behind adding a mailbox-id (if you will).  The server
would have to implement a mechanism that ensured that all of its mailbox-ids
were unique.  When a mailbox is created, it is assigned a new mailbox-id
that stays with it across renames.  When the mailbox is deleted, its
mailbox-id is retired and never reused.  The mailbox-id would be used in
place of the mailbox-name when a disconnected client makes decisions about
whether or not its cache needs to be refreshed.  The definition, semantics
and usage of the current validity value would not change.  However, in
place of the requirement for the validity value to always grow for a given
mailbox name, it would have to grow for a given mailbox-id.  This may be
a much easier guarantee for a server to make.  The combination of the
mailbox-id, validity value and uid would form a global unique id for a
message without (as far as I can judge) significant change to the protocol.
All that would be necessary (famous last words) is one additional untagged
response to select and examine.  Implementing it; however, may very well
be a non-trivial task.

. select inbox
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]  
* 15 EXISTS
* 15 RECENT
* OK [MAILBOXID 1049]  
* OK [UIDVALIDITY 1043209731]  
* OK [UNSEEN 1]  
* OK [UIDNEXT 16]  
. OK [READ-WRITE] Completed

The big change is conceptual.  Rather than the name, the id would uniquely
identify a mailbox.  The name would only be used to identify the mailbox's
current location.  Sort of like giving the mailbox a social security number
which is probably not the best way to put it in this dayandage.

Regards,
Mark Keasling <[EMAIL PROTECTED]>

Reply via email to