Re: Shared mailboxes, users with dots and a bug in subscriptions

2022-05-16 Thread Tobias Stein
Hi,

Thanks for your support.

So a workaround would involve the migration from the flat to an hierarchical 
LAYOUT=fs, 
change the hierarchy separator to „/‟ and the namespace separator to a rarely 
used symbol 
like „§‟. Okay, that actually sounds like a nightmare to me.

> But this would not resolve the actual bug, that subscriptions
> are not split and persisted correctly.
> In the end i would just be forced to use :LAYOUT=fs
> to mitigate the bug, even if i like the flat layout. :-)

What do you think about accepting the miss-behaviour and fixing the splitting 
function in 
"subscription-file.c" ? :-D

Best regards
Tobias
--
Rockstable IT UG (haftungsbeschränkt)
Löhrstr. 19
04105 Leipzig

Sitz der Gesellschaft: Leipzig
Registergericht: Amtsgericht Leipzig, HRB 36289
Geschäftsführer: Tobias Stein
USt-IdNr.: DE324059204
https://www.rockstable.it/

Free Software Foundation Europe - Was ist Freie Software?
https://fsfe.org/freesoftware/freesoftware.de.html
Public Money? Public Code!
https://publiccode.eu/de/

Am Donnerstag, 28. Januar 2021, 16:06:46 CEST schrieb Aki Tuomi:
> > On 28/01/2021 16:55 Tobias Stein  wrote:
> > 
> > 
> > Hi Aki,
> > 
> > Thanks for your prompt reply! :-)
> > And because i classically forgot to attach
> > the dovecot-sysreport, i'll deliver it now. :-)
> > 
> > 
> > Yes, you're right. Setting :LAYOUT=fs would be a workaround.
> > I'd also have to migrate every
> > single mailbox to the new hierarchical layout.
> > The hierarchical separator list->sep would
> > indeed change to „/‟ and the subscriptions
> > would be split differently.
> > 
> > Please correct me when i'm wrong, but
> > the namespace/separator would have to be changed too,
> > to prevent splitting on another "wrong" position.
> > The current
> > shared/root@example com/testsubtest
> > would become to
> > shared  r...@example.comtestsubtest.
> > Which is also wrong because there is no user shared.
> > So the namespace separator could be set to again something
> > different (from „auth_username_chars‟ + "/+")
> > like „^°!§%&=?;:#¹²³‟ which all would be ugly.
> > And with namespace/sep set to „°‟ leading to the form
> > shared°r...@example.com°testsubtest.
> > 
> > But this would not resolve the actual bug, that subscriptions
> > are not split and persisted correctly.
> > In the end i would just be forced to use :LAYOUT=fs
> > to mitigate the bug, even if i like the flat layout. :-)
> > 
> > I think there should be a default, which is valid
> > for a common deployment with all features working.
> > Maildir++ for sure is a great choice for this,
> > but the implementation has a flaw:
> > a hard-coded „separator‟, which collides with
> > the DNS label delimiter, when storing subscriptions.
> > 

signature.asc
Description: This is a digitally signed message part.


Re: Shared mailboxes, users with dots and a bug in subscriptions

2021-01-28 Thread Aki Tuomi


> On 28/01/2021 16:55 Tobias Stein  wrote:
> 
>  
> Hi Aki,
> 
> Thanks for your prompt reply! :-)
> And because i classically forgot to attach
> the dovecot-sysreport, i'll deliver it now. :-)
> 
> 
> Yes, you're right. Setting :LAYOUT=fs would be a workaround.
> I'd also have to migrate every
> single mailbox to the new hierarchical layout.
> The hierarchical separator list->sep would
> indeed change to „/‟ and the subscriptions
> would be split differently.
> 
> Please correct me when i'm wrong, but
> the namespace/separator would have to be changed too,
> to prevent splitting on another "wrong" position.
> The current
> shared/root@example   com/testsubtest
> would become to
> sharedr...@example.comtestsubtest.
> Which is also wrong because there is no user shared.
> So the namespace separator could be set to again something
> different (from „auth_username_chars‟ + "/+")
> like „^°!§%&=?;:#¹²³‟ which all would be ugly.
> And with namespace/sep set to „°‟ leading to the form
> shared°r...@example.com°test  subtest.
> 
> But this would not resolve the actual bug, that subscriptions
> are not split and persisted correctly.
> In the end i would just be forced to use :LAYOUT=fs
> to mitigate the bug, even if i like the flat layout. :-)
> 
> I think there should be a default, which is valid
> for a common deployment with all features working.
> Maildir++ for sure is a great choice for this,
> but the implementation has a flaw:
> a hard-coded „separator‟, which collides with
> the DNS label delimiter, when storing subscriptions.
> 
> 
> Best Regards
> Tobias

You can also just change the namespace hierarchy separator to fix this:

namespace {
   separator = /
}

This will cause clients to redownload mails but requires no other changes.

Aki


Re: Shared mailboxes, users with dots and a bug in subscriptions

2021-01-28 Thread Tobias Stein
Hi Aki,

Thanks for your prompt reply! :-)
And because i classically forgot to attach
the dovecot-sysreport, i'll deliver it now. :-)


Yes, you're right. Setting :LAYOUT=fs would be a workaround.
I'd also have to migrate every
single mailbox to the new hierarchical layout.
The hierarchical separator list->sep would
indeed change to „/‟ and the subscriptions
would be split differently.

Please correct me when i'm wrong, but
the namespace/separator would have to be changed too,
to prevent splitting on another "wrong" position.
The current
shared/root@example com/testsubtest
would become to
shared  r...@example.comtestsubtest.
Which is also wrong because there is no user shared.
So the namespace separator could be set to again something
different (from „auth_username_chars‟ + "/+")
like „^°!§%&=?;:#¹²³‟ which all would be ugly.
And with namespace/sep set to „°‟ leading to the form
shared°r...@example.com°testsubtest.

But this would not resolve the actual bug, that subscriptions
are not split and persisted correctly.
In the end i would just be forced to use :LAYOUT=fs
to mitigate the bug, even if i like the flat layout. :-)

I think there should be a default, which is valid
for a common deployment with all features working.
Maildir++ for sure is a great choice for this,
but the implementation has a flaw:
a hard-coded „separator‟, which collides with
the DNS label delimiter, when storing subscriptions.


Best Regards
Tobias

dovecot-sysreport-mx1-1611828216.tar.gz
Description: application/compressed-tar


Re: Shared mailboxes, users with dots and a bug in subscriptions

2021-01-28 Thread Aki Tuomi


> On 28/01/2021 15:15 Tobias Stein  wrote:
> 
>  
> Hi,
> 
> i'm running Dovecot 2.3.14.alpha0 with shared namespaces
> and stumbled across some errors messages logged,
> when the list of subscribed mailboxes is queried by a client.
> For every distinct account of in the list of subscriptions
> two corresponding lines are logged:
> 
> Jan 28 11:42:34 mx1 dovecot: auth: missing passwd file: 
> /etc/dovecot/private/example/users
> Jan 28 11:42:34 mx1 dovecot: auth: missing passwd file: 
> /etc/dovecot/private/example/users
> Jan 28 11:42:34 mx1 dovecot: auth: missing passwd file: 
> /etc/dovecot/private/example/users
> Jan 28 11:42:36 mx1 dovecot: 
> imap(example_u...@example.com)<3638>: Error: 
> mkdir(/var/run/dovecot/user-not-found/noc@example) failed: Permission denied 
> (euid=109(vmail) egid=118(vmail) missing +w perm: /var/run/dovecot, dir owned 
> by 0:0 mode=0755)
> Jan 28 11:42:36 mx1 dovecot: 
> imap(example_u...@example.com)<3638>: Error: 
> mkdir(/var/run/dovecot/user-not-found/info@example) failed: Permission denied 
> (euid=109(vmail) egid=118(vmail) missing +w perm: /var/run/dovecot, dir owned 
> by 0:0 mode=0755)
> Jan 28 11:42:36 mx1 dovecot: 
> imap(example_u...@example.com)<3638>: Error: 
> mkdir(/var/run/dovecot/user-not-found/root@example) failed: Permission denied 
> (euid=109(vmail) egid=118(vmail) missing +w perm: /var/run/dovecot, dir owned 
> by 0:0 mode=0755)
> 
> Similar messages are logged,
> when invalid entries are listed in '/var/lib/dovecot/db/shared-mailboxes',
> which i already pruned and haven't received them anymore since.
> 
> I think these errors are caused by an unintended behaviour
> when writing "~/Maildir/subscriptions",
> which looks (shortened) like this.
> 
> V 2
> 
> INBOX/INBOX
> shared/noc@examplecom/INBOX
> shared/info@example   com/INBOX
> shared/root@example   com/test
> shared/root@example   com/testtest_sub
> 
> The subscription-file.c
> explodes the name on every hierarchy separator ('.','\0') and
> inserts a TAB character. Unfortunately it also explodes on
> the DNS label delimiter „.‟. This should probably be fixed
> by passing a structure containing the required information
> to the formatter to distinguish mailboxes from domain-names.
> 
> Subscription in combination with multiple domains and
> shared mailboxes seems broken to me. Actually i can't even explain to me,
> why it is working in face of the errors. :-)
> 
> 
> Unfortunately in Maildir++ the separator dot is hard-coded.
> 
> There is a very old thread on this mailing list,
> that suggests using „auth_username_translation‟
> to replace dots with a different character,
> but this idea is getting worse the longer i think about it.
> 
> I absolutely dislike the idea to set LAYOUT=fs,
> namespace/separator = § to change the separators
> to split on, because this would mean to restructure the
> physical layout of all mailboxes (hierarchically) and
> mess around with lots of files.
> 
> 
> I attached a dovecot-sysreport to reproduce the behaviour.
> 
> /etc/dovecot/private/example.com/users looks like this:
> ###user:password:uid:gid:(gecos):home:(shell):extra_fields
> noc:{SSHA512}_hash_::
> info:{SSHA512}_hash_::
> root:{SSHA512}_hash_::
> 
> Please correct me if i'm wrong or
> point me to a workaround,
> but i think the layout code needs some love. :-)
> 
> 
> Best regards
> Tobias


You should probably add :LAYOUT=FS on your mail locations. This will change the 
folder naming into foo/bar/baz instead of .foo.bar.baz.

Aki