mailing list archives

meli community discussions

⚠️ if something does not work as intended when interracting with the mailing lists,
reach out Github mirror Gitea repo @epilys:matrix.org

E-mail headers
From: Timo Sirainen <tss@iki.fi>
To: imap-protocol@u.washington.edu
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: 1182783681.3768.187.camel@hurina permalink / raw / eml / mbox
Hand written, hopefully didn't leave errors:

1 namespace
* NAMESPACE (("" "/")) NIL (("news/" "."))
1 OK
2 list "" %
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\HasChildren) "/" "news"
2 OK
3 list "" news/%
* LIST () "." "news/comp"
* LIST () "." "news/alt"
3 OK
4 list "" news/comp.%
* LIST () "." "news/comp.mail"
4 OK

Is it valid for news/ to change the separator?

I guess many clients don't like it, but should I allow such
configuration anyway?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
URL: <http://mailman13.u.washington.edu/pipermail/imap-protocol/attachments/20070625/d32c355e/attachment.sig>
Reply
E-mail headers
From: mrc@CAC.Washington.EDU
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: alpine.OSX.0.99.0706250816170.1955@pangtzu.panda.com permalink / raw / eml / mbox
Simple answer: this is why we have the # convention for alternative 
namespaces, especially those which change the hierarchy delimiter.

What you have here is an ambiguity brought about by not using the # 
convention and listing a namespace at the root.  Both of these are bad 
things to do, and will undoubtably confuse clients.

Mixing hierarchy delimiters is definitely a no-no.  There is one, and only 
one, hierarchy delimiter in a name.  Thus, your second untagged response 
to command 2 is bad, since it lies and says that the delimiter for news is 
"/", and then commands 3 and 4 compound the issue.

You might have been able to get away with 3 and 4 had you not responded as 
you did in command 2.  In that case, "news/comp" and "news/alt" would 
actually be top-level names, with "/" being an ordinary character. 
Command 2 would not list "news" since there is no such name; and in any 
case it shouldn't list news since that's a separate namespace.

Let me emphasize this: only ONE namespace is listed in a LIST command 
command.  Namespaces are NOT the same as root level names.  By defining a 
separate namespace you declare those names to be OUTSIDE of the space 
listed in other namespaces!!!

In any case, I think that you should use the # convention, and keep your 
delimiters separate; and not come up with oddballs and hope that they 
work.

Here is the scenario that I think you should use:

1 namespace
* NAMESPACE (("" "/")) NIL (("#news." "."))
1 OK done
2 list "" %
* LIST (\HasNoChildren) "/" "INBOX"
2 OK done
3 LIST #news. %
* LIST (\NoSelect) "." "#news.comp"
* LIST (\NoSelect) "." "#news.alt"
3 OK done
4 list "" #news.comp.%
* LIST (\NoSelect) "." "news/comp.mail"
4 OK done


On Mon, 25 Jun 2007, Timo Sirainen wrote:
> Hand written, hopefully didn't leave errors:
> 
> 1 namespace
> * NAMESPACE (("" "/")) NIL (("news/" "."))
> 1 OK
> 2 list "" %
> * LIST (\HasNoChildren) "/" "INBOX"
> * LIST (\HasChildren) "/" "news"
> 2 OK
> 3 list "" news/%
> * LIST () "." "news/comp"
> * LIST () "." "news/alt"
> 3 OK
> 4 list "" news/comp.%
> * LIST () "." "news/comp.mail"
> 4 OK
> 
> Is it valid for news/ to change the separator?
> 
> I guess many clients don't like it, but should I allow such
> configuration anyway?

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.
Reply
E-mail headers
From: tss@iki.fi
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: 1182787190.3768.198.camel@hurina permalink / raw / eml / mbox
On Mon, 2007-06-25 at 08:29 -0700, Mark Crispin wrote:
> Simple answer: this is why we have the # convention for alternative 
> namespaces, especially those which change the hierarchy delimiter.

I find this # thing also a bit weird. The client can't know about those
namespaces without NAMESPACE command, and if it does then there's really
no need for # because it can find out the exact prefixes anyway. So why
should the client do anything differently if there's #?

> Let me emphasize this: only ONE namespace is listed in a LIST command 
> command.  Namespaces are NOT the same as root level names.  By defining a 
> separate namespace you declare those names to be OUTSIDE of the space 
> listed in other namespaces!!!

I've understood that many commonly used clients ignore namespaces and
only show what is visible with LIST "" *, so I'd want to keep it
possible to list contents of all namespaces with it.

Dovecot actually allows the admin to configure any kind of namespaces.
I'm currently just wondering what kind of configurations I should
prevent.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
URL: <http://mailman13.u.washington.edu/pipermail/imap-protocol/attachments/20070625/65a16add/attachment.sig>
Reply
E-mail headers
From: tss@iki.fi
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: 1182789432.3768.205.camel@hurina permalink / raw / eml / mbox
On Mon, 2007-06-25 at 18:59 +0300, Timo Sirainen wrote:
> > Let me emphasize this: only ONE namespace is listed in a LIST command 
> > command.  Namespaces are NOT the same as root level names.  By defining a 
> > separate namespace you declare those names to be OUTSIDE of the space 
> > listed in other namespaces!!!
> 
> I've understood that many commonly used clients ignore namespaces and
> only show what is visible with LIST "" *, so I'd want to keep it
> possible to list contents of all namespaces with it.

Another question about weird namespace configurations:

* NAMESPACE (("#mbox/" "/") ("#maildir." ".")) NIL NIL

If LIST "" % returns nothing, should LIST "" "" return something? Or
should some namespace always be assigned visible to root so LIST "" %
works?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
URL: <http://mailman13.u.washington.edu/pipermail/imap-protocol/attachments/20070625/d8a9d59b/attachment.sig>
Reply
E-mail headers
From: mrc@CAC.Washington.EDU
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: alpine.OSX.0.99.0706250913080.1955@pangtzu.panda.com permalink / raw / eml / mbox
On Mon, 25 Jun 2007, Timo Sirainen wrote:
> I find this # thing also a bit weird. The client can't know about those
> namespaces without NAMESPACE command, and if it does then there's really
> no need for # because it can find out the exact prefixes anyway. So why
> should the client do anything differently if there's #?

Without a breakout mechanism such as #, then you have the ambiguity 
problem that you reported in your earlier message.  How do you know that a 
name is in one namespace as opposed to some other one?

More importantly, what happens if the different namespaces have different 
hierarchy semantics; different delimiters, different ways of expressing 
root, etc.?  Maybe a particular namespace doesn't have hierarchy at all.

Netnews vs. the UNIX filesystem is an obvious example of two completely 
incompatible hierarchies.

I see no benefit to implementing an incompatible means of doing multiple 
namespaces, and HUGE demerits.  Anyone who finds themselves negatively 
impacted will put the blame directly on your server.  Don't do it.

Either have one namespace, with a single set of hierarchy semantics 
(meaning only ONE hierarchy delimiter) throughout, or do namespaces 
compatibly, following the namespace convention.

> I've understood that many commonly used clients ignore namespaces and
> only show what is visible with LIST "" *, so I'd want to keep it
> possible to list contents of all namespaces with it.

Does your server list all other users' mailboxes with that command (since 
after all a user may have a public access mailbox)?  Why not?

Does your server do an "ls -R /" for that command?  Why not?

Assuming that the user has a stupid client that does LIST "" * (a very bad 
thing to do), why do you think that she wants to download ten thousand 
newsgroup names each and every time the client is run?  Especially a user 
on a mobile device over EDGE.

There is always a line.  Drawing the line is difficult.

> Dovecot actually allows the admin to configure any kind of namespaces.
> I'm currently just wondering what kind of configurations I should
> prevent.

I don't think that LIST "" * should show anything other than the user's 
personal names.

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.
Reply
E-mail headers
From: mrc@CAC.Washington.EDU
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: alpine.OSX.0.99.0706250945200.1955@pangtzu.panda.com permalink / raw / eml / mbox
On Mon, 25 Jun 2007, Timo Sirainen wrote:
> Another question about weird namespace configurations:
> * NAMESPACE (("#mbox/" "/") ("#maildir." ".")) NIL NIL
>
> If LIST "" % returns nothing, should LIST "" "" return something? Or
> should some namespace always be assigned visible to root so LIST "" %
> works?

Since the empty namespace is the default namespace, LIST "" "" should 
return something.  INBOX is part of the default namespace, although it has 
special semantics (in particular, case-independency).

In your example, I see not particular benefit to having both #mbox/ and 
#maildir. .  One or the other should be the default namespace.  Actually, 
AFAICT, both types of names can be in the default namespace as long as you 
agree to use / as the hierarchy delimiter for maildir names; presumably 
these names correspond to UNIX filesystem objects and not something else.

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.
Reply
E-mail headers
From: tss@iki.fi
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: 1182953618.3768.338.camel@hurina permalink / raw / eml / mbox
On Mon, 2007-06-25 at 09:45 -0700, Mark Crispin wrote:
> On Mon, 25 Jun 2007, Timo Sirainen wrote:
> > I find this # thing also a bit weird. The client can't know about those
> > namespaces without NAMESPACE command, and if it does then there's really
> > no need for # because it can find out the exact prefixes anyway. So why
> > should the client do anything differently if there's #?
> 
> Without a breakout mechanism such as #, then you have the ambiguity 
> problem that you reported in your earlier message.  How do you know that a 
> name is in one namespace as opposed to some other one?
> 
> More importantly, what happens if the different namespaces have different 
> hierarchy semantics; different delimiters, different ways of expressing 
> root, etc.?  Maybe a particular namespace doesn't have hierarchy at all.

NAMESPACE reply returns the prefixes and you can compare those to the
mailbox name. How is a "foo/" prefix any more ambiguous than "#foo/"
prefix?

> > I've understood that many commonly used clients ignore namespaces and
> > only show what is visible with LIST "" *, so I'd want to keep it
> > possible to list contents of all namespaces with it.
> 
> Does your server list all other users' mailboxes with that command (since 
> after all a user may have a public access mailbox)?  Why not?

I was actually going to make it do that, once support for shared
mailboxes is finished.

> Does your server do an "ls -R /" for that command?  Why not?

If user's mailbox root directory is set to /, then yes..

> Assuming that the user has a stupid client that does LIST "" * (a very bad 
> thing to do), 

The "*" wasn't really my point. Let's try again:

I've understood that many commonly used clients ignore namespaces and
only show what is visible with LIST "" %, so I'd want to keep it
possible to list contents of all namespaces with it.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
URL: <http://mailman13.u.washington.edu/pipermail/imap-protocol/attachments/20070627/c4738a30/attachment.sig>
Reply
E-mail headers
From: mrc@CAC.Washington.EDU
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: alpine.OSX.0.99.0706270844570.6426@pangtzu.panda.com permalink / raw / eml / mbox
On Wed, 27 Jun 2007, Timo Sirainen wrote:
>> More importantly, what happens if the different namespaces have different
>> hierarchy semantics; different delimiters, different ways of expressing
>> root, etc.?  Maybe a particular namespace doesn't have hierarchy at all.
> NAMESPACE reply returns the prefixes and you can compare those to the
> mailbox name. How is a "foo/" prefix any more ambiguous than "#foo/"
> prefix?

That makes two false assumptions:
  (1) that there is such a thing as a string prefix matching (which, unlike
      the # breakout character, is documented nowhere) that has priority
      over other semantics.
  (2) NAMESPACE is implemented and used by both client and server.

Remember, NAMESPACE is an extension, and is optional to implement for both 
client and server.  If the server does not implement NAMESPACE, then you 
have a server which, for no apparent reason (since the only warning in the 
base specification about such things is with the # breakout), changes 
hierarchy semantics in a non-deterministic fashion.

Here's what you really missed, if the client does not implement NAMESPACE, 
the same thing happens: you have a server which, for no apparent reason, 
changes hierarchy semantics in a non-deterministic fashion!

More importantly, there is an additional false assumption, which is that a 
specification can always tell you what is permitted and what is forbidden. 
In any human endeavor, there is a HUGE grey area, impossible to itemize, 
of behaviors which are not explictly forbidden but nonetheless should not 
be done.  The razor for this grey area is something called "common sense".

>> Does your server list all other users' mailboxes with that command (since
>> after all a user may have a public access mailbox)?  Why not?
> I was actually going to make it do that, once support for shared
> mailboxes is finished.

Any server that automatically lists all other users' mailboxes by default 
has huge privacy problem.  The fact that another user's mailbox may be 
accessible does not necessarily mean that it should be listed, especially 
not by default in a LIST command that does not explicitly choose that 
other user.

I'm trying to understand your purpose in doing this: are you trying to 
drive people away from your server by adding harmful bugs?  I think that 
your server is valuable, if only to give maildir users an alternative to 
the broken Courier server, but it'll be difficult for me to recommend your 
server if it has this type of bug.

>> Does your server do an "ls -R /" for that command?  Why not?
> If user's mailbox root directory is set to /, then yes..

You miss the point.  If you are including other users' mailboxes and other 
namespaces by default in a default-namespace list, then you are 
effectively doing "ls -R /" for everybody, regardless of where their 
mailbox's root directory is set.

> I've understood that many commonly used clients ignore namespaces and
> only show what is visible with LIST "" %, so I'd want to keep it
> possible to list contents of all namespaces with it.

I am trying to tell you that that is NOT a very good idea; and this is 
from real-world experience.

If you do this, you are going to have a huge set of mailboxes listed, and 
many users will react with "what is all this junk in my account, I need to 
delete it."

This happens with stupid clients that implement NAMESPACE and then proceed 
to list all of those.  The user complaints are continuous and regular: 
they want to know how to delete these junk names from their account.

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.
Reply
E-mail headers
From: tss@iki.fi
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: 1182966301.3768.383.camel@hurina permalink / raw / eml / mbox
On Wed, 2007-06-27 at 09:31 -0700, Mark Crispin wrote:
> Here's what you really missed, if the client does not implement NAMESPACE, 
> the same thing happens: you have a server which, for no apparent reason, 
> changes hierarchy semantics in a non-deterministic fashion!

OK, I guess that makes some sense then if the client allows user to
request listing mailboxes under some name instead of finding them out
itself.

> >> Does your server list all other users' mailboxes with that command (since
> >> after all a user may have a public access mailbox)?  Why not?
> > I was actually going to make it do that, once support for shared
> > mailboxes is finished.
> 
> Any server that automatically lists all other users' mailboxes by default 
> has huge privacy problem.

Not by default. I meant it lists all mailboxes where the mailbox owner
has given permission with ACLs (so filesystem permissions won't be
enough).

> > I've understood that many commonly used clients ignore namespaces and
> > only show what is visible with LIST "" %, so I'd want to keep it
> > possible to list contents of all namespaces with it.
> 
> I am trying to tell you that that is NOT a very good idea; and this is 
> from real-world experience.
> 
> If you do this, you are going to have a huge set of mailboxes listed, and 
> many users will react with "what is all this junk in my account, I need to 
> delete it."

I guess this all depends on what kinds of namespaces you have. Having a #news. namespace listed using LIST is bad, but I think having "shared mailboxes" namespace visible with LIST isn't.

Actually it looks like Cyrus is doing exactly what I was going to:

1 namespace
* NAMESPACE (("" "/")) (("Other Users/" "/")) (("Shared Folders/" "/"))
1 OK Completed
2 list "" *
* LIST (\Noinferiors) "/" "INBOX"
* LIST (\HasNoChildren) "/" "Other Users/foo/support"
2 OK Completed (0.000 secs 10 calls)

There you have a LIST that lists multiple namespaces. Do you consider
this bad as well?

> This happens with stupid clients that implement NAMESPACE and then proceed 
> to list all of those.  The user complaints are continuous and regular: 
> they want to know how to delete these junk names from their account.

I've actually no idea how I would implement NAMESPACE support for
clients in a way you consider good.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
URL: <http://mailman13.u.washington.edu/pipermail/imap-protocol/attachments/20070627/516f2395/attachment.sig>
Reply
E-mail headers
From: mrc@CAC.Washington.EDU
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: alpine.OSX.0.99.0706271146200.6426@pangtzu.panda.com permalink / raw / eml / mbox
On Wed, 27 Jun 2007, Timo Sirainen wrote:
>> Any server that automatically lists all other users' mailboxes by default
>> has huge privacy problem.
> Not by default. I meant it lists all mailboxes where the mailbox owner
> has given permission with ACLs (so filesystem permissions won't be
> enough).

That isn't enough.  Most organizations consider it to be a privacy and 
security violation to reveal the identities of other users.  There isn't 
any ACL that applies to the userid space.

> I guess this all depends on what kinds of namespaces you have. Having a 
> #news. namespace listed using LIST is bad, but I think having "shared 
> mailboxes" namespace visible with LIST isn't.

It should be visible only if you are listing the shared mailboxes 
namespace.

If you list the shared mailboxes namespace in a list of the default 
namespace, then you do not have a shared mailboxes namespace.  You have 
shared mailboxes in the default namespace.

Either implement a namespace or mash everything into the default 
namespace.  Don't do one and pretend that you are doing the other.

What's more, you're presuming that "shared mailboxes" is a small enough 
set of names that is reasonable to list by default.  Suppose this is a 
university, and every class list is in shared mailboxes.  What if your 
client is accessed over wireless, or from a third world country in which 
the user pays by the KB?

Think about the scaling implications!

> Actually it looks like Cyrus is doing exactly what I was going to:
>
> 1 namespace
> * NAMESPACE (("" "/")) (("Other Users/" "/")) (("Shared Folders/" "/"))
> 1 OK Completed
> 2 list "" *
> * LIST (\Noinferiors) "/" "INBOX"
> * LIST (\HasNoChildren) "/" "Other Users/foo/support"
> 2 OK Completed (0.000 secs 10 calls)

That is a design misfeature in Cyrus.  A server which does that doesn't 
have namespaces.  It's apparently just using the NAMESPACE extension to 
give a clue as to how to access those mailboxes in the default namespace.

> There you have a LIST that lists multiple namespaces. Do you consider
> this bad as well?

Yes, this is bad; although not as bad as mashing multiple namespaces with 
different hierarchy semantics together which is what you were talking 
about earlier.

The bad thing is that it means that I, as the user, can not create a 
personal hierarchy called "Other Users" or "Shared Folders" that have 
entirely different purposes.  For some reason, undisclosed to my client 
that does not do NAMESPACE, these name are stolen from me, and I as the 
user will be surprised when bad things happen.

>> This happens with stupid clients that implement NAMESPACE and then proceed
>> to list all of those.  The user complaints are continuous and regular:
>> they want to know how to delete these junk names from their account.
> I've actually no idea how I would implement NAMESPACE support for
> clients in a way you consider good.

The default namespace is the user's own mailboxes.

Using the # convention and/or some well-defined alternative leading 
character breakout (such as UNIX ~ and /), enable access to mailboxes that 
are other than the user's own.

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.
Reply
E-mail headers
From: tss@iki.fi
To: imap-protocol@localhost
Date: Fri, 08 Jun 2018 12:34:40 -0000
Message-ID: 1183397006.3768.686.camel@hurina permalink / raw / eml / mbox
On Wed, 2007-06-27 at 12:01 -0700, Mark Crispin wrote:
> On Wed, 27 Jun 2007, Timo Sirainen wrote:
> >> Any server that automatically lists all other users' mailboxes by default
> >> has huge privacy problem.
> > Not by default. I meant it lists all mailboxes where the mailbox owner
> > has given permission with ACLs (so filesystem permissions won't be
> > enough).
> 
> That isn't enough.  Most organizations consider it to be a privacy and 
> security violation to reveal the identities of other users.  There isn't 
> any ACL that applies to the userid space.

Only those users are visible to me who have shared a mailbox to me with
a +l ACL right.

> What's more, you're presuming that "shared mailboxes" is a small enough 
> set of names that is reasonable to list by default.  Suppose this is a 
> university, and every class list is in shared mailboxes.  What if your 
> client is accessed over wireless, or from a third world country in which 
> the user pays by the KB?

How's it any different from having a client show all of a separate
shared mailboxes namespace? Bad clients behave badly no matter what. :)

> > Actually it looks like Cyrus is doing exactly what I was going to:
> >
> > 1 namespace
> > * NAMESPACE (("" "/")) (("Other Users/" "/")) (("Shared Folders/" "/"))
> > 1 OK Completed
> > 2 list "" *
> > * LIST (\Noinferiors) "/" "INBOX"
> > * LIST (\HasNoChildren) "/" "Other Users/foo/support"
> > 2 OK Completed (0.000 secs 10 calls)
> 
> That is a design misfeature in Cyrus.  A server which does that doesn't 
> have namespaces.  It's apparently just using the NAMESPACE extension to 
> give a clue as to how to access those mailboxes in the default namespace.

Unfortunately this is the only way that works with all clients.

> > There you have a LIST that lists multiple namespaces. Do you consider
> > this bad as well?
> 
> Yes, this is bad; although not as bad as mashing multiple namespaces with 
> different hierarchy semantics together which is what you were talking 
> about earlier.
> 
> The bad thing is that it means that I, as the user, can not create a 
> personal hierarchy called "Other Users" or "Shared Folders" that have 
> entirely different purposes.  For some reason, undisclosed to my client 
> that does not do NAMESPACE, these name are stolen from me, and I as the 
> user will be surprised when bad things happen.

What if instead of calling it "Shared Folders" it was called "#shared"
but still listed with LIST?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
URL: <http://mailman13.u.washington.edu/pipermail/imap-protocol/attachments/20070702/06829562/attachment.sig>
Reply