Namespaces¶
Dovecot supports fully hierarchical namespaces, which can use different storage drivers. These different locations and drivers are presented to the client as a single tree.
Each namespace has:
prefix (usually empty or “INBOX.”)
namespace separator (usually ‘/’ or ‘.’)
0 or more folders
There must be one namespace where the case-insensitive folder named INBOX exists.
All visible namespaces must have the same separator.
Inside each namespace there is a list of folders, which form a sub-hierarchy.
Folder names¶
Each folder has a name. In configuration files and log files Dovecot almost
always uses the “virtual name”, which uses the configured namespace’s hierarchy
separator as well as the namespace prefix. Depending on the used LAYOUT in
mail_location
the internal folder name may be different. The
internal name is stored in databases (e.g. mailbox subscriptions), which allows
changing the namespace prefix or separator without having to change the
databases.
The folder names use UTF-8 character set internally. All folder names must be
valid UTF-8. With LAYOUT=fs
and LAYOUT=Maildir++
the folder names are
stored in filesystem paths as mUTF-7 (see IMAP RFC 3501) mainly for legacy
reasons. This can be changed by specifying the UTF8 parameter in
mail_location
.
Folder name lengths¶
Folder name length restrictions:
Maximum length of an individual folder name within a hierarchy is 255 bytes. For example with “a/b/c” hierarchy each of the a, b and c can be a maximum of 255 bytes.
The maximum folder path length is 4096 bytes.
v2.2.25 and older versions had an additional restriction of limiting the number of hierarchies to 16.
The maximum folder name lengths work correctly when folder names aren’t stored
in filesystem, i.e. LAYOUT=index
is used. Otherwise the OS adds its own
limitations to path name lengths and the full 4096 bytes can’t be used.
With LAYOUT=Maildir++
the path must fit to 254 bytes (due to OS
limitations).
Parent folders¶
A folder can have one or more parent folders that do not physically exist.
These are presented with \NoSelect
or \Nonexistent
attribute.
It’s possible to try to avoid creating these by using the NO-NOSELECT
option in mail_location
.