Hello list. Following two previous unanswered requests (http://www.dovecot.org/list/dovecot/2014-August/097449.html and http://www.dovecot.org/list/dovecot/2014-May/096261.html), I fell into the same problem: ACL and lazy_expunge plugins do not work together. I had lazy_expunge enabled working OK. Then I activated ACL plugin, and gave dovecot.2 visibily over paolo.cravero's Inbox: the IMAP connection fails on server-side. Relevant debug log is: Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: Quota grace: root=User quota bytes=576716800 (10%) Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: dict quota: user=paolo.cravero at csi.it, uri=file:/maildata1/home/csi.it/p/paolo.cravero/dovecot-quota, noenforcing=0 Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: fs: root=/maildata1/main/csi.it/p/paolo.cravero, index=/maildata1/indexes/csi.it/p/paolo.cravero, indexpvt=, control=, inbox=, alt=/maildata1/altstorage/csi.it/p/paolo.cravero Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: initializing backend with data: vfile Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: acl username = paolo.cravero at csi.it Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: owner = 1 Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl vfile: Global ACLs disabled Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Fatal: lazy_expunge: Unknown namespace: '.EXPUNGED/' Removing the lazy_expunge, ACLs do work as expected and I can add/remove/use them. Is there a known compatibility issue? Or there's something wrong in my config and someone else is running with both plugins enabled? Thanks, Paolo PS: output of dovecot -n: # 2.2.15: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-431.el6.x86_64 x86_64 Red Hat Enterprise Linux Server release 6.5 (Santiago) ext3 auth_mechanisms = plain login disable_plaintext_auth = no imap_client_workarounds = tb-extra-mailbox-sep lmtp_save_to_detail_mailbox = yes mail_attachment_dir = /maildata1/attachments mail_attachment_hash = %{sha256} mail_debug = yes mail_gid = 500 mail_location mdbox:/maildata1/main/%d/%1n/%n:ALT=/maildata1/altstorage/%d/%1n/%n:INDEX=/maildata1/indexes/%d/%1n/%n mail_plugins = quota mail_log notify lazy_expunge acl mail_uid = 500 managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave duplicate mbox_write_locks = fcntl mdbox_rotate_size = 50 M namespace { hidden = no list = yes location mdbox:/maildata1/main/%d/%1n/%n:INDEX=/maildata1/indexes/%d/%1n/%n:MAILBOXDIR=expunged prefix = .EXPUNGED/ subscriptions = no } namespace { list = children location mdbox:/maildata1/main/%%d/%%1n/%%n:ALT=/maildata1/altstorage/%%d/%%1n/%%n:INDEX=/maildata1/indexes/%%d/%%1n/%%n prefix = user/%%u/ separator = / type = shared } namespace inbox { inbox = yes location mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } prefix type = private } passdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } plugin { acl = vfile acl_shared_dict = file:/maildata1/db/shared-mailboxes.db lazy_expunge = .EXPUNGED/ mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename flag_change append mail_log_fields = uid box msgid size flags vsize quota = dict:User quota::file:%h/dovecot-quota quota_grace = 10%% quota_rule = *:storage=10G quota_rule2 = Trash:storage=+100M quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u } protocols = imap pop3 lmtp sieve service auth { unix_listener auth-userdb { group = vmail user = vmail } } service lmtp { inet_listener lmtp { address = 10.102.42.114 port = 24 } process_min_avail = 2 user = vmail } ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem userdb { args = /etc/dovecot/dovecot-ldap.conf.ext driver = ldap } protocol lmtp { mail_plugins = quota mail_log notify lazy_expunge acl sieve } protocol lda { mail_plugins = quota mail_log notify lazy_expunge acl sieve } protocol imap { mail_plugins = quota mail_log notify lazy_expunge acl imap_quota imap_acl }
Hello. Before going into deep testing of 2.2.16 (clean install tbd), I would like to know if someone is using succesfully both ACL and Lazy_expunge plugins. Perhaps I had a config error? Thanks, Paolo> Il 3 marzo 2015 alle 16.36 Paolo Cravero <paolo.cravero at csi.it> ha > scritto: > > > Hello list. > Following two previous unanswered requests > (http://www.dovecot.org/list/dovecot/2014-August/097449.html and > http://www.dovecot.org/list/dovecot/2014-May/096261.html), I fell into the > same problem: ACL and lazy_expunge plugins do not work together. > > I had lazy_expunge enabled working OK. Then I activated ACL plugin, and > gave > dovecot.2 visibily over paolo.cravero's Inbox: the IMAP connection fails > on > server-side. Relevant debug log is: > > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: Quota > grace: root=User quota bytes=576716800 (10%) > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: dict > quota: user=paolo.cravero at csi.it, > uri=file:/maildata1/home/csi.it/p/paolo.cravero/dovecot-quota, > noenforcing=0 > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: fs: > root=/maildata1/main/csi.it/p/paolo.cravero, > index=/maildata1/indexes/csi.it/p/paolo.cravero, indexpvt=, control=, > inbox=, alt=/maildata1/altstorage/csi.it/p/paolo.cravero > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: > initializing backend with data: vfile > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: acl > username = paolo.cravero at csi.it > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: > owner > = 1 > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl > vfile: > Global ACLs disabled > Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Fatal: > lazy_expunge: Unknown namespace: '.EXPUNGED/' > > > Removing the lazy_expunge, ACLs do work as expected and I can > add/remove/use > them. > > > Is there a known compatibility issue? Or there's something wrong in my > config and someone else is running with both plugins enabled? > > Thanks, > Paolo > > PS: output of dovecot -n: > > # 2.2.15: /etc/dovecot/dovecot.conf > # OS: Linux 2.6.32-431.el6.x86_64 x86_64 Red Hat Enterprise Linux Server > release 6.5 (Santiago) ext3 > auth_mechanisms = plain login > disable_plaintext_auth = no > imap_client_workarounds = tb-extra-mailbox-sep > lmtp_save_to_detail_mailbox = yes > mail_attachment_dir = /maildata1/attachments > mail_attachment_hash = %{sha256} > mail_debug = yes > mail_gid = 500 > mail_location > mdbox:/maildata1/main/%d/%1n/%n:ALT=/maildata1/altstorage/%d/%1n/%n:INDEX=/maildata1/indexes/%d/%1n/%n > mail_plugins = quota mail_log notify lazy_expunge acl > mail_uid = 500 > managesieve_notify_capability = mailto > managesieve_sieve_capability = fileinto reject envelope encoded-character > vacation subaddress comparator-i;ascii-numeric relational regex imap4flags > copy include variables body enotify environment mailbox date ihave > duplicate > mbox_write_locks = fcntl > mdbox_rotate_size = 50 M > namespace { > hidden = no > list = yes > location > mdbox:/maildata1/main/%d/%1n/%n:INDEX=/maildata1/indexes/%d/%1n/%n:MAILBOXDIR=expunged > prefix = .EXPUNGED/ > subscriptions = no > } > namespace { > list = children > location > mdbox:/maildata1/main/%%d/%%1n/%%n:ALT=/maildata1/altstorage/%%d/%%1n/%%n:INDEX=/maildata1/indexes/%%d/%%1n/%%n > prefix = user/%%u/ > separator = / > type = shared > } > namespace inbox { > inbox = yes > location > mailbox Drafts { > auto = subscribe > special_use = \Drafts > } > mailbox Junk { > auto = subscribe > special_use = \Junk > } > mailbox Sent { > auto = subscribe > special_use = \Sent > } > mailbox "Sent Messages" { > special_use = \Sent > } > mailbox Trash { > auto = subscribe > special_use = \Trash > } > prefix > type = private > } > passdb { > args = /etc/dovecot/dovecot-ldap.conf.ext > driver = ldap > } > plugin { > acl = vfile > acl_shared_dict = file:/maildata1/db/shared-mailboxes.db > lazy_expunge = .EXPUNGED/ > mail_log_events = delete undelete expunge copy mailbox_delete > mailbox_rename flag_change append > mail_log_fields = uid box msgid size flags vsize > quota = dict:User quota::file:%h/dovecot-quota > quota_grace = 10%% > quota_rule = *:storage=10G > quota_rule2 = Trash:storage=+100M > quota_warning = storage=95%% quota-warning 95 %u > quota_warning2 = storage=80%% quota-warning 80 %u > } > protocols = imap pop3 lmtp sieve > service auth { > unix_listener auth-userdb { > group = vmail > user = vmail > } > } > service lmtp { > inet_listener lmtp { > address = 10.102.42.114 > port = 24 > } > process_min_avail = 2 > user = vmail > } > ssl_cert = </etc/pki/dovecot/certs/dovecot.pem > ssl_key = </etc/pki/dovecot/private/dovecot.pem > userdb { > args = /etc/dovecot/dovecot-ldap.conf.ext > driver = ldap > } > protocol lmtp { > mail_plugins = quota mail_log notify lazy_expunge acl sieve > } > protocol lda { > mail_plugins = quota mail_log notify lazy_expunge acl sieve > } > protocol imap { > mail_plugins = quota mail_log notify lazy_expunge acl imap_quota imap_acl > }>
Hello, as i've already sent it few times: it works....... but with minor patching (dirty patch bellow) Keep in mind, that for using this patch to work, you should add *lazy_expunge_ignore_namespace_not_found* parameter to your configuration. My own configuration below:> plugin { > lazy_expunge = .EXPUNGED/ > lazy_expunge_ignore_namespace_not_found = TRUE > }Patch:> diff -C3 -d -p -r -xMakefile -x.deps -x.libs -x.lo -x.o > ../dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c > ./src/plugins/lazy-expunge/lazy-expunge-plugin.c > *** ../dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c > 2014-04-15 18:11:56.000000000 +0300 > --- ./src/plugins/lazy-expunge/lazy-expunge-plugin.c 2014-06-28 > 19:05:59.269530965 +0300 > *************** struct lazy_expunge_mail_user { > *** 34,39 **** > --- 34,40 ---- > struct mail_namespace *lazy_ns; > const char *env; > bool copy_only_last_instance; > + bool ignore_namespace_notfound; > }; > > struct lazy_expunge_mailbox_list { > *************** lazy_expunge_mail_namespaces_created(str > *** 420,428 **** > if (luser == NULL) > return; > > luser->lazy_ns = mail_namespace_find_prefix(namespaces, > luser->env); > ! if (luser->lazy_ns == NULL) > ! i_fatal("lazy_expunge: Unknown namespace: '%s'", > luser->env); > mail_namespace_ref(luser->lazy_ns); > > /* we don't want to override this namespace's expunge > operation. */ > --- 421,447 ---- > if (luser == NULL) > return; > > + if (namespaces->user && namespaces->user->mail_debug){ > + struct mail_namespace *ns; > + int envl = strlen(luser->env); > + for(ns = namespaces; ns != NULL; ns=ns->next){ > + i_warning("LAZY_EXPUNGE[%u|%s]: p%u|%s[%u], u(%s;%s) > o(%s;%s)", > + envl, luser->env, > + ns->prefix_len, ns->prefix, ns->type, > + ns->user->username, ns->user->_home, > + ns->owner?ns->owner->username:NULL, > ns->owner?ns->owner->_home:NULL > + ); > + } > + i_warning("LAZY_EXPUNGE[%u|%s]: _________________________ > LIST ENDS __________________________", envl, luser->env); > + } > luser->lazy_ns = mail_namespace_find_prefix(namespaces, > luser->env); > ! if (luser->lazy_ns == NULL){ > ! if (luser->ignore_namespace_notfound){ > ! i_warning("lazy_expunge: Unknown namespace: '%s'", > luser->env); > ! return; > ! }else > ! i_fatal("lazy_expunge: Unknown namespace: '%s'", > luser->env); > ! } > mail_namespace_ref(luser->lazy_ns); > > /* we don't want to override this namespace's expunge > operation. */ > *************** static void lazy_expunge_mail_user_creat > *** 455,460 **** > --- 474,481 ---- > luser->env = env; > luser->copy_only_last_instance > mail_user_plugin_getenv(user, > "lazy_expunge_only_last_instance") != NULL; > + luser->ignore_namespace_notfound > + mail_user_plugin_getenv(user, > "lazy_expunge_ignore_namespace_not_found") != NULL; > > MODULE_CONTEXT_SET(user, > lazy_expunge_mail_user_module, luser); > } else if (user->mail_debug) {2015.04.24 10:59, Paolo Cravero ra??:> Hello. > > Before going into deep testing of 2.2.16 (clean install tbd), I would like > to know if someone is using succesfully both ACL and Lazy_expunge plugins. > Perhaps I had a config error? > > Thanks, > Paolo > >> Il 3 marzo 2015 alle 16.36 Paolo Cravero <paolo.cravero at csi.it> ha >> scritto: >> >> >> Hello list. >> Following two previous unanswered requests >> (http://www.dovecot.org/list/dovecot/2014-August/097449.html and >> http://www.dovecot.org/list/dovecot/2014-May/096261.html), I fell into the >> same problem: ACL and lazy_expunge plugins do not work together. >> >> I had lazy_expunge enabled working OK. Then I activated ACL plugin, and >> gave >> dovecot.2 visibily over paolo.cravero's Inbox: the IMAP connection fails >> on >> server-side. Relevant debug log is: >> >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: Quota >> grace: root=User quota bytes=576716800 (10%) >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: dict >> quota: user=paolo.cravero at csi.it, >> uri=file:/maildata1/home/csi.it/p/paolo.cravero/dovecot-quota, >> noenforcing=0 >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: fs: >> root=/maildata1/main/csi.it/p/paolo.cravero, >> index=/maildata1/indexes/csi.it/p/paolo.cravero, indexpvt=, control=, >> inbox=, alt=/maildata1/altstorage/csi.it/p/paolo.cravero >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: >> initializing backend with data: vfile >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: acl >> username = paolo.cravero at csi.it >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl: >> owner >> = 1 >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Debug: acl >> vfile: >> Global ACLs disabled >> Mar 3 15:59:02 tst-msg03 dovecot: imap(dovecot.2 at csi.it): Fatal: >> lazy_expunge: Unknown namespace: '.EXPUNGED/' >> >> >> Removing the lazy_expunge, ACLs do work as expected and I can >> add/remove/use >> them. >> >> >> Is there a known compatibility issue? Or there's something wrong in my >> config and someone else is running with both plugins enabled? >> >> Thanks, >> Paolo >> >> PS: output of dovecot -n: >> >> # 2.2.15: /etc/dovecot/dovecot.conf >> # OS: Linux 2.6.32-431.el6.x86_64 x86_64 Red Hat Enterprise Linux Server >> release 6.5 (Santiago) ext3 >> auth_mechanisms = plain login >> disable_plaintext_auth = no >> imap_client_workarounds = tb-extra-mailbox-sep >> lmtp_save_to_detail_mailbox = yes >> mail_attachment_dir = /maildata1/attachments >> mail_attachment_hash = %{sha256} >> mail_debug = yes >> mail_gid = 500 >> mail_location >> mdbox:/maildata1/main/%d/%1n/%n:ALT=/maildata1/altstorage/%d/%1n/%n:INDEX=/maildata1/indexes/%d/%1n/%n >> mail_plugins = quota mail_log notify lazy_expunge acl >> mail_uid = 500 >> managesieve_notify_capability = mailto >> managesieve_sieve_capability = fileinto reject envelope encoded-character >> vacation subaddress comparator-i;ascii-numeric relational regex imap4flags >> copy include variables body enotify environment mailbox date ihave >> duplicate >> mbox_write_locks = fcntl >> mdbox_rotate_size = 50 M >> namespace { >> hidden = no >> list = yes >> location >> mdbox:/maildata1/main/%d/%1n/%n:INDEX=/maildata1/indexes/%d/%1n/%n:MAILBOXDIR=expunged >> prefix = .EXPUNGED/ >> subscriptions = no >> } >> namespace { >> list = children >> location >> mdbox:/maildata1/main/%%d/%%1n/%%n:ALT=/maildata1/altstorage/%%d/%%1n/%%n:INDEX=/maildata1/indexes/%%d/%%1n/%%n >> prefix = user/%%u/ >> separator = / >> type = shared >> } >> namespace inbox { >> inbox = yes >> location >> mailbox Drafts { >> auto = subscribe >> special_use = \Drafts >> } >> mailbox Junk { >> auto = subscribe >> special_use = \Junk >> } >> mailbox Sent { >> auto = subscribe >> special_use = \Sent >> } >> mailbox "Sent Messages" { >> special_use = \Sent >> } >> mailbox Trash { >> auto = subscribe >> special_use = \Trash >> } >> prefix >> type = private >> } >> passdb { >> args = /etc/dovecot/dovecot-ldap.conf.ext >> driver = ldap >> } >> plugin { >> acl = vfile >> acl_shared_dict = file:/maildata1/db/shared-mailboxes.db >> lazy_expunge = .EXPUNGED/ >> mail_log_events = delete undelete expunge copy mailbox_delete >> mailbox_rename flag_change append >> mail_log_fields = uid box msgid size flags vsize >> quota = dict:User quota::file:%h/dovecot-quota >> quota_grace = 10%% >> quota_rule = *:storage=10G >> quota_rule2 = Trash:storage=+100M >> quota_warning = storage=95%% quota-warning 95 %u >> quota_warning2 = storage=80%% quota-warning 80 %u >> } >> protocols = imap pop3 lmtp sieve >> service auth { >> unix_listener auth-userdb { >> group = vmail >> user = vmail >> } >> } >> service lmtp { >> inet_listener lmtp { >> address = 10.102.42.114 >> port = 24 >> } >> process_min_avail = 2 >> user = vmail >> } >> ssl_cert = </etc/pki/dovecot/certs/dovecot.pem >> ssl_key = </etc/pki/dovecot/private/dovecot.pem >> userdb { >> args = /etc/dovecot/dovecot-ldap.conf.ext >> driver = ldap >> } >> protocol lmtp { >> mail_plugins = quota mail_log notify lazy_expunge acl sieve >> } >> protocol lda { >> mail_plugins = quota mail_log notify lazy_expunge acl sieve >> } >> protocol imap { >> mail_plugins = quota mail_log notify lazy_expunge acl imap_quota imap_acl >> }-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 181 bytes Desc: OpenPGP digital signature URL: <http://dovecot.org/pipermail/dovecot/attachments/20150424/2d252420/attachment.sig>