[Dovecot] Trouble with expire plugin
Gedalya
gedalya at gedalya.net
Thu Jan 3 01:44:46 EET 2013
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 at 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 = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
driver = prefetch
}
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
verbose_proctitle = yes
protocol lmtp {
mail_plugins = quota expire listescape sieve
}
protocol lda {
mail_plugins = quota expire listescape sieve
}
protocol imap {
mail_max_userip_connections = 25
mail_plugins = quota expire listescape autocreate imap_quota antispam
ssl_cert = </etc/dovecot/imap.xxxxxxx.com.crt
ssl_key = </etc/dovecot/imap.xxxxxxx.com.key
}
protocol sieve {
mail_max_userip_connections = 10
}
protocol pop3 {
mail_max_userip_connections = 10
mail_plugins = quota expire listescape
pop3_fast_size_lookups = yes
pop3_lock_session = no
pop3_no_flag_updates = yes
pop3_reuse_xuidl = yes
pop3_save_uidl = no
pop3_uidl_format = %08Xu%08Xv
ssl_cert = </etc/dovecot/pop.xxxxxxx.com.crt
ssl_key = </etc/dovecot/pop.xxxxxxx.com.key
}
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
}
}
More information about the dovecot
mailing list