Re: acl and lazy_expunge plugins are incompatible?
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.crav...@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(doveco...@csi.it): Debug: Quota grace: root=User quota bytes=576716800 (10%) Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: dict quota: user=paolo.crav...@csi.it, uri=file:/maildata1/home/csi.it/p/paolo.cravero/dovecot-quota, noenforcing=0 Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@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(doveco...@csi.it): Debug: acl: initializing backend with data: vfile Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: acl: acl username = paolo.crav...@csi.it Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: acl: owner = 1 Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: acl vfile: Global ACLs disabled Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@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
Re: acl and lazy_expunge plugins are incompatible?
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.0 +0300 --- ./src/plugins/lazy-expunge/lazy-expunge-plugin.c2014-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.crav...@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(doveco...@csi.it): Debug: Quota grace: root=User quota bytes=576716800 (10%) Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: dict quota: user=paolo.crav...@csi.it, uri=file:/maildata1/home/csi.it/p/paolo.cravero/dovecot-quota, noenforcing=0 Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@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(doveco...@csi.it): Debug: acl: initializing backend with data: vfile Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: acl: acl username = paolo.crav...@csi.it Mar 3 15:59:02 tst-msg03 dovecot: imap(doveco...@csi.it): Debug: acl: owner = 1 Mar 3 15:59:02 tst-msg03 dovecot: