Содержание
- Namespaces
- Configuration
- Hierarchy separators
- Namespace settings
- Shared Mailboxes
- Examples
- Mixed mbox and Maildir
- Backwards Compatibility: UW-IMAP
- Backwards Compatibility: Courier IMAP
- Namespaces¶
- Configuration¶
- Namespace types¶
- Hierarchy separators¶
- Namespace settings¶
- From userdb¶
- Dovecot Support for Shared Mailboxes¶
- Examples:В¶
- Mixed mbox and Maildir¶
- Backwards Compatibility: UW-IMAP¶
- Backwards Compatibility: Courier IMAP¶
- Per-user Namespace Location From SQL¶
- Mailbox settings¶
Namespaces
Dovecot supports fully configurable namespaces. Their original and primary purpose is to provide Namespace IMAP extension (RFC 2342) support, which allows giving IMAP clients hints about where to locate mailboxes and whether they’re private, shared or public. Unfortunately most IMAP clients don’t support this extension.
Dovecot namespaces can be used for several other purposes too:
- Changing the hierarchy separator
- Providing backwards compatibility when switching from another IMAP server
Provides support for public and shared mailboxes
Configuration
By default no namespaces are explicitly defined in dovecot.conf. In this situation Dovecot creates a private namespace automatically. This automatic namespace creation isn’t done when namespaces are defined, so if you intend to simply add a new namespace, be sure to also add the default private namespace.
There are 3 types of namespaces:
- private: Typically contains only user’s own private mailboxes.
shared: Contains other users’ shared mailboxes (v1.2+).
Hierarchy separators
Hierarchy separator specifies the character that is used to separate a parent mailbox from its child mailbox. For example if you have a mailbox «foo» with a child mailbox «bar», the full path to the child mailbox would be «foo/bar» if the separator was ‘/’. With a separator ‘.’ it would be «foo.bar».
By default the separator is the same as the mailbox list layout separator. This setting affects only how the separator is visible to clients, it doesn’t change the mailbox list layout separator. For example with Maildir++ layout the default separator is ‘.’ and if the separator was changed, the mailbox name in filesystem would still be called «.foo.bar». Currently it’s not possible to change the layout separator without modifying the source code. See also listescape plugin.
A commonly used separator is ‘/’. It probably causes the least amount of trouble with different IMAP clients.
You should use the same hierarchy separator for all namespaces. All list=yes namespaces must use the same separator, but if you find it necessary (e.g. for backwards compatibility namespaces) you may use different separators for list=no namespaces.
Namespace settings
- prefix: The namespace prefix how it’s visible in the NAMESPACE reply (if hidden=no) and mailbox list (if list=yes).
location: Mailbox location. The default is to use mail_location setting.
Examples
Mixed mbox and Maildir
If you have your INBOX as mbox in /var/mail/username and the rest of the mailboxes in Maildir format under
/Maildir, you can do this by creating two namespaces:
Without the list = no setting (or hidden=yes in v1.0) in the first namespace, clients see the «#mbox» namespace as a non-selectable mailbox named «#mbox» and having child mailboxes (ie. like a directory). The child mailboxes are all the mbox files in
Backwards Compatibility: UW-IMAP
When switching from UW-IMAP and you don’t want to give users full access to filesystem, you can create hidden namespaces which allow users to access their mails using their existing namespace settings in clients.
Backwards Compatibility: Courier IMAP
You can continue using the same INBOX. namespace as Courier:
Alternatively you can create the INBOX. as a compatibility name, so old clients can continue using it while new clients will use the empty prefix namespace:
None: Namespaces (последним исправлял пользователь TimoSirainen 2012-03-29 13:01:16)
Источник
Namespaces¶
Dovecot supports fully configurable namespaces. Their original and primary purpose is to provide Namespace IMAP extension (RFC 2342 ) support, which allows giving IMAP clients hints about where to locate mailboxes and whether they’re private, shared or public. Unfortunately most IMAP clients don’t support this extension.
Dovecot namespaces can be used for several other purposes too:
- Changing the hierarchy separator
- Providing backwards compatibility when switching from another IMAP server
- Provides support for public and shared mailboxes
- Allows having mails in multiple different locations with possibly different formats
Configuration¶
New in version v2.1.
There’s a default inbox namespace added in 10-mail.conf . If the configuration doesn’t explicitly specify a namespace (as was in v2.0 and older) a default namespace is created automatically.
The section name in namespaces (e.g. namespace sectionname < .. >is used only internally within configuration. It’s not required at all, but it allows you to update an existing namespace (like how 15-mailboxes.conf does) or have userdb override namespace settings for specific users namespace/sectionname/prefix=foo/ .
Namespace types¶
There are 3 types of namespaces:
- private: Typically contains only user’s own private mailboxes.
- shared: Contains other users’ shared mailboxes
- public: Contains public mailboxes
Hierarchy separators¶
Hierarchy separator specifies the character that is used to separate the parent mailbox from its child mailbox. For example if you have a mailbox foo with child mailbox bar , the full path to the child mailbox would be foo/bar with / as the separator, and foo.bar with . as the separator.
IMAP clients, Sieve scripts and many parts of Dovecot configuration use the configured separator when referring to mailboxes. This means that if you change the separator, you may break things.
However, changing the separator doesn’t change the on-disk “layout separator”.
/Maildir/.foo.bar/
/Maildir/.foo.bar/
/Maildir/.foo.bar/
/Maildir/.foo.bar/
mail_location | Layout sep | NS sep | Mailbox name | Directory |
maildir:
/Maildir |
. | . | foo.bar | |
maildir:
/Maildir |
. | / | foo.bar | |
maildir:
/Maildir:LAYOUT=fs |
/ | . | foo.bar | |
maildir:
/Maildir:LAYOUT=fs |
/ | / | foo.bar |
How the “namespace separator” changes only the “Mailbox name”, but doesn’t change the directory where the mails are stored. The “layout separator” can only be changed by changing the LAYOUT, which also affects the entire directory structure.
The layout separator also restricts the mailbox names. For example if the layout separator is . , you can’t just set separator to / and create a mailbox named foo.bar . If you need to do this, you can use listescape plugin to add escape the mailbox names as necessary.
A commonly used separator is / . It probably causes the least amount of trouble with different IMAP clients. The ^ separator is troublesome with Thunderbird. If has to be used, it needs to be escaped in configuration:
You should use the same hierarchy separator for all namespaces. All list=yes namespaces must use the same separator, but if you find it necessary (e.g. for backwards compatibility namespaces) you may use different separators for list=no namespaces.
Namespace settings¶
- type: See Namespace types
- separator: See Hierarchy separators
- prefix: The namespace prefix how it’s visible in the NAMESPACE reply (if hidden=no ) and mailbox list (if list=yes ). Mail user variables can be used.
- location: Mailbox location. The default is to use mail_location setting. Mail user variables can be used.
- inbox: yes , if this namespace contains the user’s INBOX. There is only one INBOX, so only one namespace can have inbox=yes .
- hidden: yes , if this namespace shouldn’t be listed in NAMESPACE reply.
- list: yes (default), if this namespace and its mailboxes should be listed by LIST command when the namespace prefix isn’t explicitly specified as a parameter. children means the namespace prefix list listed only if it has child mailboxes.
- subscriptions: yes (default) if this namespace should handle its own subscriptions. If no , then the first parent namespace with subscriptions=yes will handle it.
If it’s no for a namespace with prefix=foo/bar/, Dovecot first sees if there’s a prefix=foo/ namespace with subscriptions=yes and then a namespace with an empty prefix. If neither is found, an error is given.
- ignore_on_failure: Normally Dovecot fails if it can’t successfully create a namespace. Set this to yes to continue even if the namespace creation fails (e.g. public namespace points to inaccessible location).
- disabled: Set to yes to quickly disable this namespace. Especially useful when returned by a userdb lookup to give per-user namespaces.
- alias_for: If multiple namespaces point to the same location, they should be marked as aliases against one primary namespace. This avoids duplicating work for some commands (listing the same mailbox multiple times). The value for alias_for is the primary namespace’s prefix. Mail user variables can be used.
If the primary namespace has empty prefix, set alias_for= for the alias namespace. Or if primary has prefix=INBOX/, use alias_for=INBOX/.
- mailbox < .. >settings can be used to autocreate/autosubscribe mailboxes and set their SPECIAL-USE flags.
From userdb¶
To change namespace settings from userdb, you need to return namespace/ /setting=value . To create a namespace, make sure you first return namespace= [, ,…] and settings after this. Note that the namespace setting must list all the namespaces that are used — there’s currently no way to simply add a namespace.
Dovecot can support mailbox sharing in several different ways: Dovecot Shared Mailboxes
Examples:В¶
Mixed mbox and Maildir¶
If you have your INBOX as mbox in /var/mail/username and the rest of the mailboxes in Maildir format under
/Maildir , you can do this by creating two namespaces:
Without the list = no setting in the first namespace, clients would see the #mbox namespace as a non-selectable mailbox named #mbox but with child mailboxes (the mbox files in the
/mail directory ), ie. like a directory. So specifically with inbox = yes , having list = no is often desirable.
Backwards Compatibility: UW-IMAP¶
When switching from UW-IMAP and you don’t want to give users full access to filesystem, you can create hidden namespaces which allow users to access their mails using their existing namespace settings in clients.
Backwards Compatibility: Courier IMAP¶
Recommended: You can continue using the same INBOX. namespace as Courier:
Alternatively: Create the INBOX. as a compatibility name, so old clients can continue using it while new clients will use the empty prefix namespace:
The separator=/ allows the INBOX to have child mailboxes. Otherwise with separator=. it wouldn’t be possible to know if INBOX.foo means INBOX’s foo child or the root foo mailbox in INBOX. compatibility namespace. With separator=/ the difference is clear with INBOX/foo vs. INBOX.foo .
The alternative configuration is not recommended, as it may introduce there problems:
- Although clients may do LIST INBOX.* , they may still do LSUB * , resulting in mixed results.
- If clients used empty namespace with Courier, they now see the mailboxes with different names, resulting in redownloading of all mails (except INBOX).
- Some clients may have random errors auto-detecting the proper default folders (Sent, Drafts etc) if the client settings refer to old paths while the server lists new paths.
Per-user Namespace Location From SQL¶
You need to give the namespace a name, for example docs below:
Then you have an SQL table like:
Now if you want to set the namespace location from the Namespaces table, use something like:
If you follow some advice to separate your INBOX , shared/ and public/ namespaces by choosing INBOX/ as your prefix for the inboxes you will see, that you run into troubles with subscriptions. Thats, because there is no parent namespace for shared/ and public/ if you set subscriptions = no for those namespaces. If you set subscriptions = yes for shared/ and public/ you will see yourself in the situation, that all users share the same subscription files under the location of those mailboxes. One good solution is, to create a so called hidden subscription namespace with subscriptions turned on and setting subscriptions = no for the other namespaces:
Mailbox settings¶
New in version v2.1.
One can assign SPECIAL-USE RFC 6154 tags and specify, which mailboxes to create and/or subscribe to automatically.
The autocreated mailboxes are created lazily to disk only when accessed for the first time. The autosubscribed mailboxes aren’t written to subscriptions file, unless SUBSCRIBE command is explicitly used for them.
The mailbox section name specifies the mailbox name. If it has spaces, you can put it in quotes . The mailbox settings are:
- auto: Autocreate/subscribe mailbox?
- no: Neither
- create: Autocreate, but don’t autosubscribe
- subscribe: Autocreate and autosubscribe
- special_use: Space-separated list of SPECIAL-USE flags to use for the mailbox. There are no validity checks, so you could specify anything you want in here, but it’s not a good idea to use other than the standard ones specified in the RFC.
Due to a bug in Dovecot v2.2.30+ if special-use flags are used, SPECIAL-USE needs to be added to post-login CAPABILITY response as RFC 6154 mandates. You can do this with imap_capability = +SPECIAL-USE
New in version v2.2.20.
Automatically at user deinitialization expunge all mails in this mailbox whose saved-timestamp is older than (e.g. autoexpunge=30d). This removes the need for expire plugin if you don’t care that the expunging may not always happen in time.
- For IMAP and POP3 this happens after the client is already disconnected.
- For LMTP this happens when the user’s mail delivery is finished. Note that if there are multiple recipients this may delay delivering the mails to the other recipients.
- Also doveadm and other processes verify this, which may be unnecessary. So it may be better to explicitly enable this only inside protocol imap, pop3 and maybe lmtp. You can do this with
- mailbox_list_index=yes is highly recommended when using this setting, as it avoids actually opening the mailbox to see if anything needs to be expunged.
- autoexpunge_max_mails= :
New in version v2.2.25.
Mails are expunged until mail count is at autoexpunge_max_mails or below. After these messages are removed, autoexpunge will then try to expunge mails based on the autoexpunge setting.
Источник
I have a problem to convert mdbox to MailDir. Log from that process looks like:
/bin/dsync -Dv -u user@domian.com mirror maildir:/tmp/destination/mailboxes/user@domian.com
Debug: Loading modules from directory: /lib/dovecot
Debug: Module loaded: /lib/dovecot/lib01_acl_plugin.so
Debug: Loading modules from directory: /lib/dovecot/doveadm
Debug: Module loaded: /lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so
Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /lib/dovecot/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_lookup (this is usually intentional, so just ignore this message)
Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /lib/dovecot/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message)
Debug: Module loaded: /lib/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /lib/dovecot/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_list_backend (this is usually intentional, so just ignore this message)
doveadm(user@domian.com): Debug: Effective uid=503, gid=503, home=/var/mailboxes/%2Mu/%2.2Mu/%u
doveadm(user@domian.com): Debug: Home dir not found: /var/mailboxes/%2Mu/%2.2Mu/%u
doveadm(user@domian.com): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=mdbox:/var/mailboxes/64/b1/user@domian.com
doveadm(user@domian.com): Debug: fs: root=/var/mailboxes/64/b1/user@domian.com, index=, indexpvt=, control=, inbox=, alt=
doveadm(user@domian.com): Debug: acl: initializing backend with data: vfile
doveadm(user@domian.com): Debug: acl: acl username = user@domian.com
doveadm(user@domian.com): Debug: acl: owner = 1
doveadm(user@domian.com): Debug: acl vfile: Global ACLs disabled
doveadm(user@domian.com): Debug: Namespace : type=shared, prefix=shared/%u/, sep=/, inbox=no, hidden=no, list=children, subscriptions=yes location=mdbox:/var/mailboxes/%2Mu/%2.2Mu/%u
doveadm(user@domian.com): Debug: shared: root=/var/run/dovecot, index=, indexpvt=, control=, inbox=, alt=
doveadm(user@domian.com): Debug: acl: initializing backend with data: vfile
doveadm(user@domian.com): Debug: acl: acl username = user@domian.com
doveadm(user@domian.com): Debug: acl: owner = 0
doveadm(user@domian.com): Debug: acl vfile: Global ACLs disabled
doveadm(user@domian.com): Debug: acl vfile: file /var/mailboxes/64/b1/user@domian.com/mailboxes/INBOX/dbox-Mails/dovecot-acl not found
doveadm(user@domian.com): Debug: acl vfile: file /var/mailboxes/64/b1/user@domian.com/mailboxes/Drafts/dbox-Mails/dovecot-acl not found
doveadm(user@domian.com): Debug: acl vfile: file /var/mailboxes/64/b1/user@domian.com/mailboxes/Sent/dbox-Mails/dovecot-acl not found
doveadm(user@domian.com): Debug: acl vfile: file /var/mailboxes/64/b1/user@domian.com/mailboxes/Trash/dbox-Mails/dovecot-acl not found
doveadm(user@domian.com): Debug: Namespace : Using permissions from /var/mailboxes/64/b1/user@domian.com: mode=0700 gid=default
dsync(user@domian.com): Debug: Effective uid=503, gid=503, home=/var/mailboxes/%2Mu/%2.2Mu/%u
dsync(user@domian.com): Debug: Home dir not found: /var/mailboxes/%2Mu/%2.2Mu/%u
dsync(user@domian.com): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/tmp/destination/mailboxes/user@domian.com
dsync(user@domian.com): Debug: maildir++: root=/tmp/destination/mailboxes/user@domian.com, index=, indexpvt=, control=, inbox=/tmp/destination/mailboxes/user@domian.com, alt=
dsync(user@domian.com): Debug: Namespace : /tmp/destination/mailboxes/user@domian.com doesn't exist yet, using default permissions
dsync(user@domian.com): Debug: Namespace : Using permissions from /tmp/destination/mailboxes/user@domian.com: mode=0700 gid=default
dsync(user@domian.com): Debug: acl: initializing backend with data: vfile
dsync(user@domian.com): Debug: acl: acl username = user@domian.com
dsync(user@domian.com): Debug: acl: owner = 1
dsync(user@domian.com): Debug: acl vfile: Global ACLs disabled
dsync(user@domian.com): Debug: Namespace : type=shared, prefix=shared/%u/, sep=/, inbox=no, hidden=no, list=children, subscriptions=yes location=mdbox:/var/mailboxes/%2Mu/%2.2Mu/%u
dsync(user@domian.com): Debug: shared: root=/var/run/dovecot, index=, indexpvt=, control=, inbox=, alt=
dsync(user@domian.com): Debug: acl: initializing backend with data: vfile
dsync(user@domian.com): Debug: acl: acl username = user@domian.com
dsync(user@domian.com): Debug: acl: owner = 0
dsync(user@domian.com): Debug: acl vfile: Global ACLs disabled
dsync(user@domian.com): Error: User initialization failed: namespace configuration error: All list=yes namespaces must use the same separator
but when I will specify namespace to the inbox like
/bin/dsync -Dv -u user@domian.com mirror maildir:/tmp/destination/mailboxes/user@domian.com -n inbox
it throws different error:
doveadm(user@domian.com): Debug: Namespace : Using permissions from /var/mailboxes/64/b1/user@domian.com: mode=0700 gid=default
doveadm(user@domian.com): Fatal: execvp(maildir:/tmp/destination/mailboxes/user@domian.com) failed: No such file or directory
dsync-local(user@domian.com): Error: read(remote) failed: EOF (version not received
when /tmp/destination/mailboxes/user@domian.com
directory exists
and /bin/doveconf namespace
is
namespace {
disabled = no
hidden = no
ignore_on_failure = no
inbox = no
list = children
location = mdbox:/var/mailboxes/%%2Mu/%%2.2Mu/%%u
order = 0
prefix = shared/%%u/
separator = /
subscriptions = yes
type = shared
}
namespace inbox {
disabled = no
hidden = no
ignore_on_failure = no
inbox = yes
list = yes
location =
mailbox Drafts {
auto = subscribe
driver =
special_use = Drafts
}
mailbox INBOX {
auto = subscribe
driver =
special_use =
}
mailbox Junk {
auto = no
driver =
special_use = Junk
}
mailbox Sent {
auto = subscribe
driver =
special_use = Sent
}
mailbox "Sent Messages" {
auto = no
driver =
special_use = Sent
}
mailbox Trash {
auto = subscribe
driver =
special_use = Trash
}
order = 0
prefix =
separator =
subscriptions = yes
type = private
}
What I’m doing wrong in the process?
0
1
Связка Postfix+Dovecot+Mysql (виртуальные пользователи хранятся в базе mysql )
main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = posts.dracon753.ru
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_domains =
virtual_alias_maps = hash:/etc/postfix/aliases, proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot
dovecot.conf
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace private {
separator =
prefix = INBOX
inbox = yes
}
mail_privileged_group = mail
protocol imap {
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
protocol managesieve {
}
auth default {
mechanisms = plain login
passdb pam {
}
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb passwd {
}
userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
dict {
}
plugin {
}
root@posts:/home/test/rab/pravconfig#
В логах
ay 17 07:54:36 posts dovecot: Dovecot v1.2.15 starting up (core dumps disabled)
May 17 07:54:36 posts dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mail)
May 17 07:54:37 posts dovecot: auth(default): new auth connection: pid=2930
May 17 07:54:37 posts dovecot: auth(default): new auth connection: pid=2931
May 17 07:54:37 posts dovecot: auth(default): new auth connection: pid=2928
May 17 07:54:37 posts dovecot: auth(default): new auth connection: pid=2929
May 17 07:54:37 posts dovecot: auth(default): new auth connection: pid=2933
May 17 07:54:37 posts dovecot: auth(default): new auth connection: pid=2932
May 17 07:55:14 posts dovecot: dovecot: Killed with signal 15 (by pid=2944 uid=0 code=kill)
Из-за чего лезет эта гадость — posts dovecot: dovecot: Killed with signal 15 (by pid=2944 uid=0 code=kill)
On May 27, 2015, at 22:57 , Chris Ross <cross+dove...@distal.com> wrote: > On May 25, 2015, at 15:55 , a...@thecsillags.com wrote: >> When I set them up that way, I shared the target inbox (we'll call it >> f...@example.com) to be accessible by user b...@example.com. When I go into >> my email client, I'll see something like: shared/f...@example.com/INBOX as a >> folder. > > When you say "set them up that way", do you mean following the example > config at SharedMailboxes/Shared ? In that example, a mail_location is set > at the outer level, which I think I don't want to do, and overridden in the > shared namespace. I'm assuming I don't want either of those, or at least > that's what I'm going to try first. > > A question I have given your example above, is, did you set > mail_shared_explicit_inbox ? It's only briefly described what that effects, > so I'm not sure which setting (on or off) will cause the > shared/f...@example.com/INBOX you describe seeing. I assume on, so I've > turned it on. > >> The boxes don't have to be shared publicly if you use the "private" >> namespace. > > By "use the "private" namespace", do you mean specifying a separate > namespace block in the config, like the one is declared in the example at > http://wiki2.dovecot.org/SharedMailboxes/Shared ? If so, that's what I've > done. If there is a way to have a single namespace declared that's both > private and shared, I don't see that, so I have two as presented on that wiki > page.
Okay. Lots of trial and error and error, and I at least have some configuration that I think includes pieces about shared mailboxes and ACLs, and it's actually up and running. But, I'm not seeing the shared folder. I was getting a lot of errors about separators (namespace configuration error: All list=yes namespaces must use the same separator) and prefixes (namespace configuration error: list=yes requires prefix=/ not to start with separator), but have it working now. The namespace private block from the example at http://wiki2.dovecot.org/SharedMailboxes/Public caused many of those problems, and I didn't have a separator configured at all (ie, was still commented out) in my main namespace, so that apparently conflicted with the "separator = /" in the shared namespace. But, all that resolved. The config file I've added into conf.d/15-shared.conf is: namespace { type = shared separator = / prefix = shared/%%u/ location = maildir:/home/%%n/Maildir:INDEX=~/Maildir/shared/%%u:INDEXPVT=~/Maildir/shared/%%u subscriptions = no list = children } mail_shared_explicit_inbox = yes protocol imap { mail_plugins = $mail_plugins acl imap_acl } plugin { acl = vfile } This comes from the aforementioned wiki page. I ran the doveadm acl command you suggested (though my usernames have no domain part, like your example did have domain parts) Now, while dovecot is back to working, I don't see a shared folder anywhere. "doveadm mailbox list" lists the mailboxes for users, including the INBOX I've tried to configure an ACL to let me share. Clearly I'm missing a piece. Andy, or anyone else, if you see what I've missed, please let me know. I'm not seeing anything back from the server with my mail client under "Subscription List", so I can't choose to subscribe. Maybe I've turned off subscriptions somehow, and it's not auto-subscribing me? Or, maybe having "list=children", and I haven't set up the ACL correctly? I ran: sudo doveadm acl add -u childuser INBOX user=cross lookup read write write-seen write-deleted insert post expunge create delete admin After removing the domains from your example, that's about what you had. I can see the INBOX for childuser with "doveadm mailbox list -u childuser". Ahh. I think I may be on to something. I tried the "doveadm acl add" again, which seems to succeed, but "doveadm acl debug" then doesn't mention anything about me, or my access to childuser's INBOX. Running the "acl add" with "doveadm -D" shows: doveadm(childuser): Debug: acl: No acl_shared_dict setting - shared mailbox listing is disabled and later: doveadm(childuser): Debug: acl vfile: Global ACLs disabled The first of those looks like it might be a problem. Do you have an "acl_shared_dict" set up in your config anywhere, Andy? Thanks. Any help appreciated. - Chris
-
SS88
- Posts: 336
- Joined: Thu Nov 19, 2015 12:40 pm
[FIX] Initialization failed: namespace configuration error: inbox=yes namespace missing
If you receive this error (it also stops you from logging into your emails):
Code: Select all
Initialization failed: namespace configuration error: inbox=yes namespace missing
Open up /etc/dovecot/conf.d/15-mailboxes.conf and add in:
inbetween namespace inbox { }
-
b79
- Posts: 5
- Joined: Mon Dec 19, 2016 7:20 am
Re: [FIX] Initialization failed: namespace configuration error: inbox=yes namespace missing
Post
by b79 » Mon Dec 19, 2016 7:22 am
Hey! Thanks for posting this info.
It fixed my dovecot login issue. Seems to have started after yum updated a whole bunch of stuff.
-
jonn
- Posts: 72
- Joined: Sun Jun 08, 2014 12:18 pm
Re: [FIX] Initialization failed: namespace configuration error: inbox=yes namespace missing
Post
by jonn » Thu Dec 22, 2016 2:29 am
didnt fix mine, checked all my vestacp servers and they all dont have the file, it just got up a ran away.
fix..
viewtopic.php?t=13395
-
SS88
- Posts: 336
- Joined: Thu Nov 19, 2015 12:40 pm
Re: [FIX] Initialization failed: namespace configuration error: inbox=yes namespace missing
Post
by SS88 » Thu Dec 22, 2016 2:36 am
jonn wrote:didnt fix mine, checked all my vestacp servers and they all dont have the file, it just got up a ran away.
fix..
viewtopic.php?t=13395
It’s exactly the same fix?
-
gecube_ru
- Posts: 141
- Joined: Thu Jun 22, 2017 1:21 pm
Re: [FIX] Initialization failed: namespace configuration error: inbox=yes namespace missing
Post
by gecube_ru » Fri Nov 10, 2017 7:56 am
Thank you very much for the solution.
I’ve ran into the same issue after updating a lot of stuff with the yum program.
The symptom was that users couldn’t connect to IMAP service, but the server correctly receives/sends the e-mails.
-
dpeca
- VestaCP Team
- Posts: 469
- Joined: Wed Nov 25, 2015 7:30 pm
Re: [FIX] Initialization failed: namespace configuration error: inbox=yes namespace missing
Post
by dpeca » Fri Oct 26, 2018 2:50 pm
This error started today on latest Debian9 too.
Centos7 is also affected, if i’m right?
I’m gonna fix this.
уже который день пытаюсь поднять почтовый сервер на убунте сервер 9.04
поставил постфикс, довекот, прописал настройки, всё запускается без проблем, соединяюсь по telnet, отправляю письмо, но в логах и в папкеп пользователей писемн нет (права выставил, в конфигах прописано)
cat dovecot.log
dovecot: 2009-12-18 02:23:31 Info: dovecot v1.1.11 starting up (core dumps disabled)
dovecot: 2009-12-18 02:23:32 Info: auth-worker(default): mysql: Connected to 127.0.0.1 (mailserver)
cat mail.log
Dec 18 02:23:23 example postfix/master[7760]: daemon started -- version 2.5.5, configuration /etc/postfix
Dec 18 02:23:56 example postfix/smtpd[7823]: connect from example.com[127.0.0.1]
Dec 18 02:24:18 example postfix/smtpd[7823]: D5E3C1482F2: client=example.com[127.0.0.1]
Dec 18 02:24:25 example postfix/cleanup[7827]: D5E3C1482F2: message-id=<20091217202418.D5E3C1482F2@example.com>
Dec 18 02:24:25 example postfix/qmgr[7763]: D5E3C1482F2: from=<dmitry@example.com>, size=363, nrcpt=1 (queue active)
Dec 18 02:24:25 example deliver(dmitry@example.com): Fatal: postmaster_address setting not given
Dec 18 02:24:25 example postfix/pipe[7828]: D5E3C1482F2: to=<dmitry@example.com>, relay=dovecot, delay=16, delays=16/0.01/0/0.03, dsn=5.3.5, status=bounced (local configuration error)
Dec 18 02:24:25 example postfix/cleanup[7827]: CB4321482F9: message-id=<20091217202425.CB4321482F9@example.com>
Dec 18 02:24:25 example postfix/qmgr[7763]: CB4321482F9: from=<>, size=2058, nrcpt=1 (queue active)
Dec 18 02:24:25 example deliver(dmitry@example.com): Fatal: postmaster_address setting not given
Dec 18 02:24:25 example postfix/bounce[7830]: D5E3C1482F2: sender non-delivery notification: CB4321482F9
Dec 18 02:24:25 example postfix/qmgr[7763]: D5E3C1482F2: removed
Dec 18 02:24:25 example postfix/pipe[7828]: CB4321482F9: to=<dmitry@example.com>, relay=dovecot, delay=0.03, delays=0.01/0/0/0.01, dsn=5.3.5, status=bounced (local configuration error)
Dec 18 02:24:25 example postfix/qmgr[7763]: CB4321482F9: removed
Dec 18 02:24:27 example postfix/smtpd[7823]: disconnect from example.com[127.0.0.1]
вот мой postconf
alias_database = hash:/etc/aliases
вот ещё данные
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
home_mailbox = Maildir/
inet_interfaces = all
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot-postfix.conf -n -m "${EXTENSION}"
mailbox_size_limit = 0
mydestination = localhost
myhostname = example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key
smtpd_tls_mandatory_ciphers = medium, high
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf
virtual_gid_maps = static:5000
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:5000
cat hostname
example.com
cat hosts
127.0.0.1 example.com localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
и с бинда (он стартует без грехов):
cat example.com
$ORIGIN example.com.
$TTL 86400 ; 1 day
@ IN SOA localhost. root.localhost. (
2008041501 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS localhost.
@ IN A 192.168.0.1
подскажите куда копать, что с моим постфикосом не то…
Пользователь решил продолжить мысль 17 Декабря 2009, 12:14:32:
и ещё…
тут
mydestination = localhost
вместо
mydestination = example.com, localhost.com, , localhost
так сделал, потому что до этого выводилось в логах
Dec 18 03:33:59 example postfix/smtpd[3018]: connect from example.com[127.0.0.1]
слышал, что в mydestination не должно быть имени хоста, но не уверен правда ли это…
Dec 18 03:34:15 example postfix/trivial-rewrite[3021]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains
Dec 18 03:34:23 example postfix/smtpd[3018]: 967C71482F2: client=example.com[127.0.0.1]
Dec 18 03:34:28 example postfix/cleanup[3026]: 967C71482F2: message-id=<20091217213423.967C71482F2@example.com>
Dec 18 03:34:28 example postfix/qmgr[2965]: 967C71482F2: from=<dmitry@example.com>, size=361, nrcpt=1 (queue active)
Dec 18 03:34:28 example postfix/trivial-rewrite[3021]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains
Dec 18 03:34:28 example postfix/local[3028]: 967C71482F2: to=<dmitry@example.com>, relay=local, delay=13, delays=13/0.04/0/0.04, dsn=5.1.1, status=bounced (unknown user: "dmitry")
Dec 18 03:34:28 example postfix/cleanup[3026]: D796A1482F9: message-id=<20091217213428.D796A1482F9@example.com>
Dec 18 03:34:28 example postfix/qmgr[2965]: D796A1482F9: from=<>, size=2053, nrcpt=1 (queue active)
Dec 18 03:34:28 example postfix/trivial-rewrite[3021]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains
Dec 18 03:34:28 example postfix/bounce[3029]: 967C71482F2: sender non-delivery notification: D796A1482F9
Dec 18 03:34:28 example postfix/qmgr[2965]: 967C71482F2: removed
Dec 18 03:34:28 example postfix/local[3028]: D796A1482F9: to=<dmitry@example.com>, relay=local, delay=0.03, delays=0.02/0/0/0.01, dsn=5.1.1, status=bounced (unknown user: "dmitry")
Dec 18 03:34:28 example postfix/qmgr[2965]: D796A1482F9: removed
Dec 18 03:34:30 example postfix/smtpd[3018]: disconnect from example.com[127.0.0.1]
In a few words, please describe the issue that you’re experiencing:
Dovecot fails to authenticate due to duplicate namespaces. /etc/dovecot/conf.d/15-mailboxes.conf
should be removed, since the namespace is already declared in /etc/dovecot/dovecot.conf
.
What steps did you take when the issue occured?
- Attempt to login to mail server via RoundCube and external app
- RoundCube responds with «Connection to storage server failed», external app just fails
Expected behavior:
Authentication should succeed.
Operating system distribution and release:
Debian 9 64-bit
Which version of Hestia Control Panel is currently installed?
You can find this information in $HESTIA/conf/hestia.conf by running the following command:
grep VERSION $HESTIA/conf/hestia.conf
1.0.3
Which branch are you using?
release
Which of the following web server configurations are you using?
Apache + Nginx (default)
Which of the following server roles are installed on your server?
- Web Server (Apache + Nginx)
- DNS
- Mail (Dovecot + Exim)
- Mail (Exim only)
- MySQL (MariaDB)
- PostgreSQL
In order to better assist, please post any relevant log information below:
/var/log/dovecot.log
:
Jun 30 09:22:11 imap(<email snipped>): Error: User initialization failed: namespace configuration error: Duplicate namespace prefix: ""
Additional notes:
This is already fixed on my setup after some troubleshooting, just wanted to give you a heads-up.