[Dovecot] [SIEVE] Locking Errors with vnd.dovecot.duplicate Extension

Daniel Parthey d.parthey at metaways.de
Mon Jan 6 11:25:02 EET 2014


Hi,

we are running a 4 host setup which each hosts a director+mailbox which is mounted
via NFSv4 from a DRBD cluster.

* Dovecot upstream release 2.1.16
* Doveadm batch subcommand fix - http://hg.dovecot.org/dovecot-2.1/raw-rev/850b5d8bbcc9
* Pigeonhole release 0.3.4

Now we would like to remove duplicate Mails using the vnd.dovecot.duplicate extension
using a SIEVE script like this:

require ["vnd.dovecot.duplicate", "fileinto", "mailbox", "regex", "vacation", "variables"];

if duplicate {
     fileinto :create "Trash";
}

But as soon as we start delivering duplicate mails, we're sometimes getting locking
errors from the mailbox (which is responsible for the user) according to the director:

Dec 27 16:36:30 10.129.3.213 dovecot: lmtp(27975, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:33 10.129.3.213 dovecot: lmtp(27987, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:35 10.129.3.213 dovecot: lmtp(27994, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:36 10.129.3.213 dovecot: lmtp(28011, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:36 10.129.3.213 dovecot: lmtp(28013, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:38 10.129.3.213 dovecot: lmtp(28017, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:39 10.129.3.213 dovecot: lmtp(28025, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:42 10.129.3.213 dovecot: lmtp(28037, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs
Dec 27 16:36:43 10.129.3.213 dovecot: lmtp(27973, user001 at example.org): Error: Creating lock file for 
/mail/dovecot/example.org/user001/.dovecot.lda-dupes timed out in 20 secs

Configs and Error log is attached.

Any idea how to mitigate these locking issues?

Regards
Daniel
-------------- next part --------------
# 2.1.16: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-56-generic x86_64 Ubuntu 12.04.3 LTS 
auth_cache_negative_ttl = 0
auth_cache_size = 10 M
auth_cache_ttl = 1 mins
auth_verbose = yes
auth_verbose_passwords = sha1
deliver_log_format = mailbox: deliver: msgid=%m from=%f: %$
dict {
  quota = mysql:/etc/dovecot/conf.d/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
doveadm_password = secret
instance_name = dovecot-mailbox
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
login_greeting = Mailbox
login_log_format = mailbox: login: %$: %s
login_trusted_networks = 10.129.3.0/24
mail_debug = yes
mail_fsync = always
mail_gid = vmail
mail_home = /mail/dovecot/%d/%n
mail_location = mdbox:~/mail
mail_log_prefix = "mailbox: mail: %s(%u): <%{session}>: "
mail_plugins = quota stats
mail_privileged_group = vmail
mail_uid = vmail
managesieve_implementation_string = Sieve
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 vnd.dovecot.duplicate
mdbox_rotate_interval = 1 weeks
mdbox_rotate_size = 50 M
mmap_disable = yes
namespace {
  inbox = yes
  location = 
  mailbox Archives {
    special_use = \Archive
  }
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
  separator = /
  type = private
}
passdb {
  args = /etc/dovecot/conf.d/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  quota = dict:User quota::proxy::quota
  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
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
  sieve_extensions = +vnd.dovecot.duplicate
  stats_refresh = 30 secs
  stats_track_cmds = yes
}
protocols = imap pop3 lmtp sieve
service auth {
  unix_listener auth-userdb {
    group = dovecot
    user = dovecot
  }
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0660
  }
}
service doveadm {
  inet_listener doveadm-server {
    port = 19000
  }
}
service imap-login {
  inet_listener imap {
    port = 19143
  }
}
service imap-postlogin {
  executable = script-login /usr/local/bin/dovecot-postlogin
  user = $default_internal_user
}
service imap {
  executable = imap imap-postlogin
}
service lmtp {
  inet_listener lmtp-without-quota {
    address = *
    port = 19025
  }
  inet_listener lmtp {
    address = *
    port = 19024
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 19200
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 19110
  }
}
service pop3-postlogin {
  executable = script-login /usr/local/bin/dovecot-postlogin
  user = $default_internal_user
}
service pop3 {
  executable = pop3 pop3-postlogin
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning
  extra_groups = dovecot
  unix_listener quota-warning {
    user = vmail
  }
  user = vmail
}
service stats {
  fifo_listener stats-mail {
    mode = 0600
    user = vmail
  }
}
ssl = no
syslog_facility = local1
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot/conf.d/dovecot-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
  mail_plugins = quota stats imap_quota imap_stats
}
protocol lmtp {
  mail_plugins = quota stats sieve
}
-------------- next part --------------
# 2.1.16: /etc/dovecot-director/dovecot-director.conf
# OS: Linux 3.2.0-56-generic x86_64 Ubuntu 12.04.3 LTS 
auth_verbose = yes
auth_verbose_passwords = sha1
base_dir = /var/run/dovecot-director
deliver_log_format = director: deliver: msgid=%m from=%f: %$
director_doveadm_port = 20000
director_mail_servers = 10.129.3.193 10.129.3.192 10.129.3.191 10.129.3.190
director_servers = 10.129.3.193 10.129.3.192 10.129.3.191 10.129.3.190
director_user_expire = 2 days
disable_plaintext_auth = no
doveadm_password = secret
doveadm_proxy_port = 19000
instance_name = dovecot-director
lmtp_proxy = yes
login_greeting = Mail Balancer
login_log_format = director: login: %$: %s
login_trusted_networks = 10.129.3.0/24
mail_debug = yes
mail_fsync = always
mail_gid = vmail
mail_home = /mail/dovecot/%d/%n
mail_location = mdbox:~/mail
mail_log_prefix = "director: mail: %s(%u): <%{session}>: "
mail_max_userip_connections = 20
mail_privileged_group = vmail
mail_uid = vmail
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 vnd.dovecot.duplicate
mmap_disable = yes
passdb {
  args = /etc/dovecot-director/conf.d/dovecot-sql.conf.ext
  driver = sql
}
protocols = imap pop3 lmtp sieve
service auth {
  unix_listener auth-userdb {
    user = dovecot
  }
}
service director {
  fifo_listener login/proxy-notify {
    mode = 0666
  }
  inet_listener {
    port = 9090
  }
  unix_listener director-userdb {
    mode = 0600
  }
  unix_listener login/director {
    mode = 0666
  }
}
service doveadm {
  executable = doveadm-server director
  inet_listener doveadm-server {
    port = 20000
  }
}
service imap-login {
  executable = imap-login director
  inet_listener imap {
    port = 20143
  }
  inet_listener imaps {
    port = 20993
    ssl = yes
  }
}
service ipc {
  unix_listener ipc {
    user = dovecot
  }
}
service lmtp {
  inet_listener lmtp-without-quota {
    address = *
    port = 20025
  }
  inet_listener lmtp {
    address = *
    port = 20024
  }
}
service managesieve-login {
  executable = managesieve-login director
  inet_listener sieve {
    port = 20200
  }
}
service pop3-login {
  executable = pop3-login director
  inet_listener pop3 {
    port = 20110
  }
  inet_listener pop3s {
    port = 20995
    ssl = yes
  }
}
ssl_cert = </etc/certs/example.org.crt
ssl_key = </etc/certs/example.org.key
syslog_facility = local2
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot-director/conf.d/dovecot-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  auth_socket_path = director-userdb
}
protocol sieve {
  auth_socket_path = director-userdb
}
protocol doveadm {
  auth_socket_path = director-userdb
}
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dovecot-error.log
Type: text/x-log
Size: 32736 bytes
Desc: not available
URL: <http://dovecot.org/pipermail/dovecot/attachments/20140106/51cd48b9/attachment-0001.bin>


More information about the dovecot mailing list