Hello,
Dovecot does not fill expires table when moving messages to Trash or Junk folder. I looked all over mailing list and googled around and cannot find what could be wrong - pleas help :) Dict works for quota, so I presume connection to mysql is not a problem - mailuser has Select,Insert,Update,Delete privileges over quota and expires table (log below for deleting message) dovecot log does not show any problems, not even with mail_debug. doveadm -A works ____________________________________________________________________________ ________________________ dovecot -n # 2.2.6: /etc/dovecot/dovecot.conf # OS: Linux 3.10.17-gentoo x86_64 Gentoo Base System release 2.2 xfs auth_mechanisms = plain login dict { expire = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext } hostname = ****@****.**** listen = ************* login_greeting = ***** ready. mail_access_groups = vmail mail_attachment_dir = /data/vmail/attachments mail_attachment_fs = sis-queue /data/vmail/attachments/queue:posix mail_attachment_hash = %{sha256} mail_location = mdbox:/data/vmail/storage/%d/%n/:ALT=/data/vmail/altstorage/%d/%n/:INDEX=/da ta/vmail/indexes/%d/%n/ mail_plugins = " expire quota zlib mail_log notify" 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 mdbox_preallocate_space = yes mdbox_rotate_interval = 1 days namespace Unwanted { hidden = no inbox = no list = yes location = maildir:/data/vmail/unwanted/%d/%n/ mailbox Ham { auto = subscribe } mailbox Spam { auto = subscribe } prefix = Unwanted. separator = . subscriptions = yes type = private } namespace inbox { hidden = no inbox = yes list = yes location = mdbox:/data/vmail/storage/%d/%n/:ALT=/data/vmail/altstorage/%d/%n/:INDEX=/da ta/vmail/indexes/%d/%n/ mailbox Archives { auto = subscribe special_use = \Archive } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Folders { auto = subscribe } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } prefix = separator = . subscriptions = yes type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { expire = Trash 1 Trash.* 1 Junk 2 expire_dict = proxy::expire mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid from subject, size, vsize, flags quota = dict:User quota::proxy::quota quota_exceeded_message = Quota exceeded (mailbox is full) quota_grace = 10%% quota_rule = *:storage=1G quota_rule2 = Trash:storage=+100M quota_rule3 = Junk:ignore quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is full quota_status_success = DUNNO quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=85%% quota-warning 85 %u quota_warning3 = storage=70%% quota-warning 70 %u sieve = /data/vmail/sieve/%d/%n/.dovecot.sieve sieve_before = /data/vmail/sieve/before.sieve sieve_default = /data/vmail/sieve/default.sieve sieve_dir = /data/vmail/sieve/%d/%n/sieve sieve_global_dir = /data/vmail/sieve/ zlib_save = bz2 zlib_save_level = 9 } postmaster_address = postmas...@fingerprints.si protocols = imap sieve service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } } service dict { unix_listener dict { group = vmail mode = 0660 } } service managesieve-login { inet_listener sieve { port = 4190 } } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service quota-warning { executable = script /usr/bin/dovecot-quota-warning.sh unix_listener quota-warning { mode = 0666 user = vmail } user = vmail } ssl_cert = </etc/ssl/certs/san_*****.****-2048.crt ssl_key = </etc/ssl/private/san_*****.****-2048.key userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } protocol lda { mail_plugins = expire sieve zlib } protocol imap { mail_plugins = " expire quota zlib mail_log notify expire imap_quota quota" } protocol 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 } ____________________________________________________________________________ ________________________ dovecot-dict-sql.conf.ext connect = host=127.0.0.1 dbname=mailserver user=mailuser password=************************* 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 } } ____________________________________________________________________________ ________________________ dovecot-sql.conf.ext driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=************************* default_pass_scheme = PLAIN-MD5 iterate_query = SELECT email AS user FROM virtual_users password_query = SELECT email AS user, password, \ uid AS userdb_uid, gid AS userdb_gid, \ concat('*:bytes=', quota_bytes) AS userdb_quota_rule \ FROM virtual_users WHERE email = '%u' user_query = SELECT uid, gid, \ CONCAT('/data/vmail/storage/',CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBST RING_INDEX(email,'@',1))) AS home, \ CONCAT('*:bytes=', quota_bytes) AS quota_rule \ FROM virtual_users WHERE email = '%u' ____________________________________________________________________________ ________________________ MYSQL: +-----------+------------+-------------+------------+----------------+------ ---------------+------------------------------------------------------------ ----------------------------------+-------------+ | Host | Db | User | Table_name | Grantor | Timestamp | Table_priv | Column_priv | +-----------+------------+-------------+------------+----------------+------ ---------------+------------------------------------------------------------ ----------------------------------+-------------+ | 127.0.0.1 | mailserver | mailuser | quota | root@localhost | 2013-12-06 02:14:57 | Select,Insert,Update,Delete | | | 127.0.0.1 | mailserver | mailuser | expires | root@localhost | 2013-12-08 05:49:42 | Select,Insert,Update,Delete | | +-----------+------------+-------------+------------+----------------+------ ---------------+------------------------------------------------------------ ----------------------------------+-------------+ mysql> describe expires; +--------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+-------+ | username | varchar(75) | NO | PRI | NULL | | | mailbox | varchar(255) | NO | PRI | NULL | | | expire_stamp | int(11) | NO | | NULL | | +--------------+--------------+------+-----+---------+-------+ mysql> select * from expires; Empty set (0.00 sec) MYSQL LOG: 1 Query SELECT email AS user, password, uid AS userdb_uid, gid AS userdb_gid, concat('*:bytes=', quota_bytes) AS userdb_quota_rule FROM virtual_users WHERE email = '*********************' 2 Connect mailuser@************* on mailserver 2 Query BEGIN 1 Query SELECT uid, gid, CONCAT('/data/vmail/storage/',CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBST RING_INDEX(email,'@',1))) AS home, CONCAT('*:bytes=', quota_bytes) AS quota_rule FROM virtual_users WHERE email = '*********************' 2 Query UPDATE quota SET bytes=bytes-15989,messages=messages-1 WHERE username = '*********************' 2 Query COMMIT 2 Query SELECT bytes FROM quota WHERE username = '*********************' 2 Query SELECT messages FROM quota WHERE username = '*********************' 2 Query SELECT bytes FROM quota WHERE username = '*********************' 2 Query BEGIN 2 Query UPDATE quota SET bytes=bytes+16025,messages=messages+1 WHERE username = '*********************' 2 Query COMMIT 2 Query SELECT bytes FROM quota WHERE username = '*********************' 2 Query SELECT messages FROM quota WHERE username = '*********************'
smime.p7s
Description: S/MIME cryptographic signature