[Dovecot] namespace hierarchy
Hi,
I'm migrating from Courier to Dovecot and would like to keep the original namespace and add two new ones on the new server.
There's only one namespace in Courier which is "INBOX." . The seperator is "."
In the new server I would like to have 3 namespaces (private, public, shared) and use "/" as separator. Is it possible to keep "INBOX." for private, so that the users mailboxes appear below the Inbox, but have public and shared on the same hierarchy-level like the Inbox?
When I set prefix to "INBOX/" for private I get the users mailboxes below the Inbox, like I have it Courier now. But then at least the public, probably also the shared namespace doesn't work any more. I get "unknown subscription namespace" when trying to subscribe to some of the folders.
My current configuration is: namespace: type: private separator: / inbox: yes list: yes subscriptions: yes namespace: type: public separator: / prefix: public/ location: maildir:/var/vmail/example.com/public list: yes namespace: type: shared separator: / prefix: shared/%%u/ location: maildir:%%h/Maildir list: yes
warm regards,
Tom
On 1.4.2012, at 10.28, Tom Fernandes wrote:
I'm migrating from Courier to Dovecot and would like to keep the original namespace and add two new ones on the new server.
There's only one namespace in Courier which is "INBOX." . The seperator is "."
In the new server I would like to have 3 namespaces (private, public, shared) and use "/" as separator. Is it possible to keep "INBOX." for private, so that the users mailboxes appear below the Inbox, but have public and shared on the same hierarchy-level like the Inbox?
When I set prefix to "INBOX/" for private I get the users mailboxes below the Inbox, like I have it Courier now. But then at least the public, probably also the shared namespace doesn't work any more. I get "unknown subscription namespace" when trying to subscribe to some of the folders.
If you have any subscriptions=no namespaces, you need a parent namespace that has subscriptions=yes. You could have e.g.:
namespace { prefix = INBOX/ list = no inbox = yes } namespace { prefix = list = no hidden = yes alias_for = INBOX/ }
So now the prefix="" is used for the subscriptions but nothing else really.
Anyway, INBOX/ isn't the same as INBOX. so if any client configs are using INBOX. as namespace prefix then they don't work with INBOX/.
Am 04.04.2012 03:47, schrieb Timo Sirainen:
On 1.4.2012, at 10.28, Tom Fernandes wrote:
In the new server I would like to have 3 namespaces (private, public, shared) and use "/" as separator. Is it possible to keep "INBOX." for private, so that the users mailboxes appear below the Inbox, but have public and shared on the same hierarchy-level like the Inbox?
If you have any subscriptions=no namespaces, you need a parent namespace that has subscriptions=yes. You could have e.g.:
namespace { prefix = INBOX/ list = no inbox = yes } namespace { prefix = list = no hidden = yes alias_for = INBOX/ }
So now the prefix="" is used for the subscriptions but nothing else really.
I tried this, but sadly with dovecot V2.1.1 it is not working.
Steps to reproduce:
- create empty mail directory
- create one folder (Allgemeines/Tabel) in public namespace with doveadm
- start mail-client (in my case thunderbird)
- try to subscribe to the new public folder
Error message in log: Apr 18 18:19:34 elablnmail02 dovecot: imap(ahelmcke): Warning: Subscriptions file /home/mail/user/ahelmcke/subscriptions: Removing invalid entry: Allgemeines/Tabel
doveconf -n:
# 2.1.1: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-220.7.1.el6.x86_64 x86_64 CentOS release 6.2 (Final) ext4 auth_master_user_separator = * first_valid_uid = 400 mail_gid = vmail mail_location = maildir:/home/mail/user/%u mail_uid = vmail mbox_write_locks = fcntl namespace Allgemeines { location = maildir:/home/mail/Allgemeines:INDEX=/home/mail/user/%u/SEEN.Allgemeines prefix = Allgemeines/ separator = / subscriptions = no type = public } namespace dummy { alias_for = INBOX/ hidden = yes list = no location = prefix = separator = / type = private } namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = INBOX/ separator = / type = private } passdb { args = /etc/dovecot/passwd.masterusers driver = passwd-file master = yes pass = yes } passdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } plugin { acl = vfile sieve = /var/lib/dovecot/sieve/%u.sieve sieve_global_dir = /var/lib/dovecot/sieve/global/ sieve_global_path = /var/lib/dovecot/sieve/default.sieve } protocols = imap lmtp service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 } } service imap-login { inet_listener imap { address = * } inet_listener imaps { address = * } } ssl = required ssl_cert =
Any ideas?
Greetings Andreas
On 18.4.2012, at 20.00, Andreas Helmcke wrote:
If you have any subscriptions=no namespaces, you need a parent namespace that has subscriptions=yes. You could have e.g.:
namespace { prefix = INBOX/ list = no inbox = yes } namespace { prefix = list = no hidden = yes alias_for = INBOX/ }
So now the prefix="" is used for the subscriptions but nothing else really.
I tried this, but sadly with dovecot V2.1.1 it is not working.
Oh, I hadn't thought of one problem: It's now using the same subscriptions file for both prefix="" and prefix=INBOX/ namespaces. This confuses it. So you need to place the prefix="" namespace somewhere else, for example:
namespace dummy { alias_for = INBOX/
location = maildir:/home/mail/user/%u/public
hidden = yes list = no location = prefix = separator = / type = private }
Am 04.04.2012 03:47, schrieb Timo Sirainen:
On 1.4.2012, at 10.28, Tom Fernandes wrote:
In the new server I would like to have 3 namespaces (private, public, shared) and use "/" as separator. Is it possible to keep "INBOX." for private, so that the users mailboxes appear below the Inbox, but have public and shared on the same hierarchy-level like the Inbox?
If you have any subscriptions=no namespaces, you need a parent namespace that has subscriptions=yes. You could have e.g.:
namespace { prefix = INBOX/ list = no inbox = yes } namespace { prefix = list = no hidden = yes alias_for = INBOX/ }
So now the prefix="" is used for the subscriptions but nothing else really.
I tried this, but sadly with dovecot V2.1.1 it is not working.
Steps to reproduce:
- create empty mail directory
- create one folder (Allgemeines/Tabel) in public namespace with doveadm
- start mail-client (in my case thunderbird)
- try to subscribe to the new public folder
Error message in log: Apr 18 18:19:34 elablnmail02 dovecot: imap(ahelmcke): Warning: Subscriptions file /home/mail/user/ahelmcke/subscriptions: Removing invalid entry: Allgemeines/Tabel
doveconf -n:
# 2.1.1: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-220.7.1.el6.x86_64 x86_64 CentOS release 6.2 (Final) ext4 auth_master_user_separator = * first_valid_uid = 400 mail_gid = vmail mail_location = maildir:/home/mail/user/%u mail_uid = vmail mbox_write_locks = fcntl namespace Allgemeines { location = maildir:/home/mail/Allgemeines:INDEX=/home/mail/user/%u/SEEN.Allgemeines prefix = Allgemeines/ separator = / subscriptions = no type = public } namespace dummy { alias_for = INBOX/ hidden = yes list = no location = prefix = separator = / type = private } namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = INBOX/ separator = / type = private } passdb { args = /etc/dovecot/passwd.masterusers driver = passwd-file master = yes pass = yes } passdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } plugin { acl = vfile sieve = /var/lib/dovecot/sieve/%u.sieve sieve_global_dir = /var/lib/dovecot/sieve/global/ sieve_global_path = /var/lib/dovecot/sieve/default.sieve } protocols = imap lmtp service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 } } service imap-login { inet_listener imap { address = * } inet_listener imaps { address = * } } ssl = required ssl_cert =
Any ideas?
Greetings Andreas
participants (4)
-
Andreas Helmcke
-
Andreas Helmcke
-
Timo Sirainen
-
Tom Fernandes