[Dovecot] lazy_expunge and shared folders

Robert Schetterer rs at sys4.de
Tue May 20 12:10:01 UTC 2014


Am 20.05.2014 14:00, schrieb Florian:
> Hi,
> 
> since migration to Dovecot 2.2 I have troubles with lazy_expunge as soon as 
> a user shares a folder. The user the folder is shared to cannot login 
> anymore, dovecot logs Fatal: lazy_expunge: Unknown namespace: '.EXPUNGED/'
> 
> - When no folder is shared lazy_expunge is working fine, deleted mails are 
> moved to the expunged namespace and can be recovered without any problems.
> - Sharing folders works as long as I disable lazy_expunge.
> 
> I have used the config (with minor changes) with dovecot 2.0 for years 
> without any problem. Switching to dovecot 2.2.10 (atrps repository) or 
> 2.2.12 (dovecot enterprise repo) lazy_expunge and acl do not work together 
> anymore.
> 
> Is it a bug, a known limitation or is something wrong with my config?
> Any hints are welcome.
> 
> Thanks in advance,
> Florian
> 
> dovecot -n
> 
> # 2.2.12.12 (03196f188677): /etc/dovecot/dovecot.conf
> # OS: Linux 2.6.32-042stab085.20 x86_64 CentOS release 6.5 (Final) 
> auth_cache_negative_ttl = 10 mins
> auth_cache_size = 10 M
> auth_cache_ttl = 2 hours
> auth_failure_delay = 10 secs
> auth_mechanisms = plain login
> auth_socket_path = /var/run/dovecot/auth-userdb
> base_dir = /var/run/dovecot/
> disable_plaintext_auth = no
> first_valid_gid = 105
> first_valid_uid = 105
> hostname = ...
> imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags
> imap_idle_notify_interval = 10 mins
> last_valid_uid = 105
> listen = ...
> lmtp_save_to_detail_mailbox = yes
> login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
> mail_gid = vimap
> mail_home = /var/imap/spool/%1n/%n
> mail_location = mdbox:~/mdbox
> mail_plugins = " fts fts_lucene acl"
> mail_temp_dir = /var/imap/tmp
> mail_uid = vimap
> 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
> mbox_write_locks = fcntl
> mdbox_rotate_interval = 1 days
> namespace {
>   list = children
>   location = 
> mdbox:/var/imap/spool/%%1n/%%n/mdbox:INDEXPVT=/var/imap/spool/%1n/%n/mdbox/shared/%%u
>   prefix = User/%%u/
>   separator = /
>   subscriptions = no
>   type = shared
> }
> namespace expunged {
>   hidden = yes
>   list = no
>   location = mdbox:/var/imap/spool/%1n/%n/mdbox:MAILBOXDIR=expunged
>   prefix = .EXPUNGED/
>   separator = /
>   subscriptions = no
>   type = private
> }
> namespace inbox {
>   inbox = yes
>   location = mdbox:/var/imap/spool/%1n/%n/mdbox
>   mailbox Drafts {
>     auto = subscribe
>     special_use = \Drafts
>   }
>   mailbox Learn {
>     auto = subscribe
>   }
>   mailbox Learn/Ham {
>     auto = subscribe
>   }
>   mailbox Learn/Spam {
>     auto = subscribe
>   }
>   mailbox Sent {
>     auto = subscribe
>     special_use = \Sent
>   }
>   mailbox Spam {
>     auto = subscribe
>     special_use = \Junk
>   }
>   mailbox Trash {
>     auto = subscribe
>     special_use = \Trash
>   }
>   mailbox virtual/All {
>     special_use = \All
>   }
>   mailbox virtual/Flagged {
>     special_use = \Flagged
>   }
>   prefix = 
>   separator = /
>   type = private
> }
> passdb {
>   args = /etc/dovecot/master-users
>   driver = passwd-file
>   master = yes
> }
> passdb {
>   args = /etc/dovecot/dovecot-ldap.conf.ext
>   driver = ldap
> }
> passdb {
>   args = /etc/dovecot/extra-users
>   driver = passwd-file
> }
> plugin {
>   acl = vfile:/var/imap/global-acls:cache_secs=300
>   acl_shared_dict = file:/var/imap/shared-mailboxes/shared-mailboxes
>   fts = lucene
>   fts_autoindex = yes
>   fts_lucene = whitespace_chars=@.
>   lazy_expunge = .EXPUNGED/
>   lazy_expunge_only_last_instance = yes
>   recipient_delimiter = +
>   sieve = ~/.dovecot.sieve
>   sieve_dir = ~/sieve
>   sieve_max_actions = 32
>   sieve_max_redirects = 4
>   sieve_max_script_size = 1M
> }
> pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
> postmaster_address = postmaster at ...
> protocols = imap pop3 lmtp sieve
> service auth {
>   unix_listener /var/spool/postfix/private/auth {
>     group = postfix
>     mode = 0660
>     user = postfix
>   }
>   unix_listener auth-userdb {
>     group = vimap
>     mode = 0600
>     user = vimap
>   }
>   user = $default_internal_user
> }
> service imap-login {
>   process_min_avail = 4
>   service_count = 0
> }
> service imap {
>   process_limit = 1024
>   vsz_limit = 256 M
> }
> service lmtp {
>   inet_listener lmtp {
>     address = ...
>     port = 24
>   }
> }
> service managesieve-login {
>   inet_listener sieve {
>     port = 4190
>   }
>   inet_listener sieve_deprecated {
>     port = 2000
>   }
>   service_count = 1
>   vsz_limit = 64 M
> }
> service pop3-login {
>   inet_listener pop3s {
>     port = 995
>     ssl = yes
>   }
>   process_min_avail = 4
>   service_count = 0
> }
> service pop3 {
>   process_limit = 512
> }
> ssl_cert = </etc/dovecot/ssl/...
> ssl_key = </etc/dovecot/ssl/...
> userdb {
>   args = /etc/dovecot/dovecot-ldap.conf.ext
>   driver = ldap
> }
> userdb {
>   args = uid=vimap gid=vimap home=/var/imap/spool/%1n/%n
>   driver = static
> }
> protocol lda {
>   mail_plugins = " fts fts_lucene acl sieve"
> }
> protocol imap {
>   mail_max_userip_connections = 20
>   mail_plugins = " fts fts_lucene acl imap_acl"
> }
> protocol lmtp {
>   mail_plugins = " fts fts_lucene acl sieve"
> }
> protocol sieve {
>   mail_max_userip_connections = 10
>   managesieve_implementation_string = Dovecot Pigeonhole
>   managesieve_logout_format = bytes=%i/%o
>   managesieve_max_line_length = 65536
> }
> protocol pop3 {
>   mail_max_userip_connections = 20
> }
> 

"perhaps" related to this

http://wiki2.dovecot.org/Plugins/Lazyexpunge

...
Copy only the last instance (v2.2+)

If mail has multiple copies (via IMAP COPY), each copy is normally moved
to lazy expunge namespace when it's expunged. With v2.2+ you can set
plugin { lazy_expunge_only_last_instance = yes }  to copy only the last
instance and immediately expunge the others. This may be useful if you
want to provide a flat list of all expunged mails without duplicates in
your webmail. With many clients this means that the last instance is
always in the Trash mailbox.
...




Best Regards
MfG Robert Schetterer

-- 
[*] sys4 AG

http://sys4.de, +49 (89) 30 90 46 64
Franziskanerstraße 15, 81669 München

Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263
Vorstand: Patrick Ben Koetter, Marc Schiffbauer
Aufsichtsratsvorsitzender: Florian Kirstein


More information about the dovecot mailing list