Hi all,
Maybe someone here can help me with this problem, not sure if this is a configuration issue or an actual bug.
my daily cron job says:
#!/bin/sh doveadm expunge -A mailbox Junk savedbefore 14d doveadm expunge -A mailbox Trash savedbefore 30d doveadm expunge -A mailbox "Trash.*" savedbefore 30d
But it hasn't been deleting any messages in a long time, I'm not sure when it stopped working.
I've also noticed that it does delete matching rows in the expires database (expire_stamp < savedbefore days). Furthermore, rows are deleted even when running doveadm search, and regardless of the mailbox column, i.e. even when != the mailbox name being searched! Anyway why should doveadm search delete rows in the expires database?
The database is mysql.
---- dovecot -n ---- # 2.1.7: /etc/dovecot/dovecot.conf # OS: Linux 3.2.0-0.bpo.3-amd64 x86_64 Debian 6.0.6 auth_default_realm = xxxxxxx.com auth_mechanisms = plain login cram-md5 auth_verbose = yes auth_verbose_passwords = plain default_client_limit = 8096 dict { expire = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext } disable_plaintext_auth = no mail_gid = vmail mail_plugins = quota expire listescape mail_uid = vmail managesieve_sieve_capability = fileinto envelope encoded-character subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables mailbox date ihave namespace { inbox = yes location = prefix = separator = / type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { antispam_backend = pipe antispam_pipe_program = /usr/bin/ssh antispam_pipe_program_args = -l;spamd;-i;/etc/dovecot/sareport.key;mx1.xxxxxxx.com antispam_pipe_program_notspam_arg = revoke antispam_pipe_program_spam_arg = report antispam_pipe_tmpdir = /tmp antispam_spam = Junk antispam_trash_pattern_ignorecase = trash;Deleted * autocreate = Trash autocreate2 = Junk autocreate3 = Drafts autocreate4 = Sent autosubscribe = Trash autosubscribe2 = Junk autosubscribe3 = Drafts autosubscribe4 = Sent expire = Trash expire2 = Trash.* expire3 = Junk expire_dict = proxy::expire quota = dict:user::proxy::quota quota_rule = *:storage=2G quota_rule2 = Trash:storage=+250M quota_rule3 = Junk:ignore quota_warning = storage=99%% quota-warning 99 %u quota_warning2 = storage=95%% quota-warning 95 %u sieve = ~/.dovecot.sieve sieve_before = /var/local/lib/dovecot/sieve/global/fileinto-spam.sieve sieve_dir = ~/sieve sieve_extensions = -vacation -body -reject -enotify -environment -virustest -spamtest sieve_max_actions = 32 sieve_max_redirects = 4 sieve_max_script_size = 10K sieve_quota_max_scripts = 10 } postmaster_address = postmaster@xxxxxxx.com protocols = imap pop3 lmtp sieve service auth-worker { user = $default_internal_user } service auth { client_limit = 20480 unix_listener auth-userdb { group = root mode = 0600 user = vmail } } service dict { unix_listener dict { mode = 0600 user = vmail } } service imap-login { process_min_avail = 4 service_count = 0 vsz_limit = 128 M } service imap { process_limit = 10240 } service lmtp { inet_listener lmtp { address = 0.0.0.0 port = 7025 } } service managesieve-login { inet_listener sieve { port = 4190 } service_count = 0 vsz_limit = 128 M } service pop3-login { process_min_avail = 4 service_count = 0 vsz_limit = 128 M } service pop3 { process_limit = 4096 } service quota-warning { executable = script /usr/local/bin/quota-warning unix_listener quota-warning { user = vmail } user = vmail } ssl_cert =
in dovecot-sql.conf.ext I have: iterate_query = SELECT userid as user, domain FROM email where deleted=0
---- dovecot-dict-sql.conf.ext ---- connect = host=localhost dbname=email user=email map { pattern = priv/quota/storage table = quota username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota username_field = username value_field = messages } map { pattern = shared/expire/$user/$mailbox table = expires value_field = expire_stamp fields { username = $user mailbox = $mailbox } }