[Imap-protocol] Namespace questions

Mark Crispin mrc+imap at panda.com
Wed May 19 12:33:52 PDT 2010

On Wed, 19 May 2010, Philip Guenther wrote:

> As much as I would like to agree, I cannot suggest that to Pete. When

> Sendmail sold an IMAP server for generic use, customer experience with the

> IMAP clients that exist in the marketplace convinced me that

> tag LIST "" *

> needs to cross namespace boundaries, at least for namespaces that may

> contain mailboxes that normal users may need to access.

You can not cross namespace boundaries with a * wildcard, much less
selectively cross namespace boundaries. Otherwise, it is not a namespace;
and it's certainly not a "*" wildcard if it selectively navigates the

"*" must report ALL names, and children, at that level. Namespaces
specifically exist not to do do that.

That doesn't mean that you can't/shouldn't have the functionality that you
intend. It just means that namespaces are not the proper tool for that

> The state of IMAP

> client implementations, at least a few years ago, was such that doing

> otherwise meant that entire hierarchies were *completely inaccessible*

> from common clients.

That may be a good thing. Consider a netnews namespace and a client that
does a full synchronize with all mailboxes.

> It sucked, but I changed our implementation to cross namespace boundaries

> and the complaints all went away.

It sounds to me that you should not have used namespaces. The fact that
namespaces provide "other user" and "shared mailbox" functionality does
not necessarily mean that you must use namespaces for those
functionalities if you have needs that are not served by namespaces.

A good way to think of the default namespace is of the set of mailboxes
that you want to be exposed to a client that acquires a list of mailboxes
tag LIST "" *
and can not access mailboxes in any other way. You must balance this set
against the very real possibility that the client will try to synchronize
every mailbox in the set.

For example, my new server has a default namespace that is a chimera of
the following other namespaces of the user's private mailboxes (the #mail/
namespace), the user's quarantine (the #qt/ namespace), and the mailboxes
that the user has published into the #public namespace.

It is also intended that in the future some, but not all, other #public
namespace names will also go into the default namespace.

So, in effect, I'm doing what you are doing but within the framework of
the default namespace. Namespaces are still being used to exile names
that should NOT be loaded with
tag LIST "" *

-- Mark --

Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.

More information about the Imap-protocol mailing list