acl and lazy_expunge plugins are incompatible?
Giedrius Liubavičius
giedrius at liubavicius.lt
Fri Apr 24 13:19:45 UTC 2015
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>
More information about the dovecot
mailing list