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]>
