[Dovecot] expire plugin no delete 1.2.1 / 1.2.2

Robert Schetterer robert at schetterer.org
Fri Jul 31 18:21:19 EEST 2009


Robert Schetterer schrieb:
> Robert Schetterer schrieb:
>> Timo Sirainen schrieb:
>>> On Thu, 2009-07-23 at 23:42 +0200, Robert Schetterer wrote:
>>>> Hi Timo,
>>>> all of my tests fail
>>>> with expire plugin, mail simply not get deleted
>>>> i cant find any stuff in the logs why it does not or should not  work.
>>> Try with 1.2.2 and check the mails' save dates now that you have the
>>> FETCH X-SAVEDATE command available.
>>>
>> Hi Timo, upgraded
>> last night and tested
>> X-SAVEDATE is now available, before it was not
>> so lets wait and see, if it now works, i will report
>>
> Hi Timo, still mails get not deleted
> i just did a new test
> 
> 
> 
> mysql> select mailbox, from_unixtime(expire_stamp), username from
> expireplugin;
> +---------+-----------------------------+-----------------------+
> | mailbox | from_unixtime(expire_stamp) | username              |
> +---------+-----------------------------+-----------------------+
> | Trash   | 2009-07-31 14:18:47         | robert at schetterer.com |
> +---------+-----------------------------+-----------------------+
> 1 row in set (0.00 sec)
> 
> 2 select Trash
> * FLAGS (\Answered \Flagged \Deleted \Seen \Draft nonjunk Junk)
> * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft nonjunk
> Junk \*)] Flags permitted.
> * 1 EXISTS
> * 0 RECENT
> * OK [UIDVALIDITY 1240758078] UIDs valid
> * OK [UIDNEXT 85] Predicted next UID
> * OK [HIGHESTMODSEQ 109]
> 2 OK [READ-WRITE] Select completed.
> 3 fetch 1:* (internaldate x-savedate)
> * 1 FETCH (INTERNALDATE "30-Jul-2009 14:18:26 +0200" X-SAVEDATE
> "30-Jul-2009 14:18:47 +0200")
> 3 OK Fetch completed.
> 
> /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf --exec-mail ext
> /usr/lib/dovecot/expire-tool.sh --test
> Info: Loading modules from directory: /usr/lib/dovecot/modules/imap
> Info: Module loaded: /usr/lib/dovecot/modules/imap/lib01_acl_plugin.so
> Info: Module loaded: /usr/lib/dovecot/modules/imap/lib10_quota_plugin.so
> Info: Module loaded:
> /usr/lib/dovecot/modules/imap/lib20_autocreate_plugin.so
> Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_expire_plugin.so
> Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_fts_plugin.so
> Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_virtual_plugin.so
> Info: Module loaded: /usr/lib/dovecot/modules/imap/lib21_fts_squat_plugin.so
> Info: Quota root: name= backend=dict args=:proxy::quotadict
> Info: Quota warning: bytes=0 (95%) messages=0
> command=/usr/local/bin/quota-warning.sh 95
> Info: Quota warning: bytes=0 (80%) messages=0
> command=/usr/local/bin/quota-warning.sh 80
> Info: expire: pattern=Trash type=expunge secs=86400
> Info: robert at schetterer.com/Trash: stop, expire time in future: Fri Jul
> 31 14:18:47 2009
> 
> /usr/lib/dovecot/expire-tool.sh
> 
> #!/bin/bash
> MAIL_PLUGINS=${MAIL_PLUGINS//imap_quota/}
> MAIL_PLUGINS=${MAIL_PLUGINS//mail_log/}
> MAIL_PLUGINS=${MAIL_PLUGINS//imap_acl/}
> #MAIL_PLUGINS=${MAIL_PLUGINS//virtual/}
> exec ${0%.sh} "$@
> 
> i still speculate the problem might be in the virtual plugin
> but anyway if its load or not by the script mails dont get deleted
> 
> additional i integrated userdb_home userdb_mail
> in password_query but this also did not helped
> ( so perhaps some config stuff helps for debug )
> 
> password_query = SELECT username as user, password, \
> 1001 as userdb_uid, \
> 1001 as userdb_gid, \
> "/usr/local/virtual/%u/" AS userdb_home, \
> "maildir:/usr/local/virtual/%u/" AS userdb_mail \
> FROM mailbox WHERE username = '%u' AND active = '1' AND (imap_allowed =
> '1' or '%Ls' = 'pop3')
> 
> user_query = SELECT concat('/usr/local/virtual/', maildir) AS home, \
> concat('*:bytes=', mailbox.quota) AS quota_rule, \
> #when saving to Trash mailbox the user gets additional 50MB
> "Trash:storage=50240" AS quota_rule2, \
> #when saving to Sent mailbox the user gets additional 50MB
> "Sent:storage=50240" AS quota_rule3, \
> #when saving to Drafts mailbox the user gets additional 50MB
> "Drafts:storage=50240" AS quota_rule4, \
> #when saving to Templates mailbox the user gets additional 50MB
> "Templates:storage=50240" AS quota_rule5, \
> #when saving to Junk mailbox the user gets additional 50MB
> "Junk:storage=50240" AS quota_rule6, \
> #ignore quota on shared
> #"shared:ignore" AS quota_rule7, \
> concat('maildir:/usr/local/virtual/', maildir) AS mail, \
> CASE '%s' WHEN 'pop3' THEN NULL ELSE 'yes' END AS namespace_1_inbox, \
> CASE '%s' WHEN 'pop3' THEN 'yes' ELSE NULL END AS namespace_2_inbox, \
> 1001 AS uid, 1001 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
> 
> namespace private {
>   separator = /
>   prefix = ""
>   location =
> maildir:/usr/local/virtual/%d/%u/:CONTROL=/usr/local/virtual/%d/%u/:INDEX=/usr/local/virtual/%d/%u/:INBOX=/usr/local/virtual/%d/%u/
>   list = yes
>   hidden = no
>   subscriptions = yes
> }
> 
> namespace private {
>   prefix = "virtual/"
>   separator = /
>   location = virtual:/etc/dovecot/virtual:LAYOUT=maildir++
>   hidden = yes
>   list = no
>   subscriptions= no
> }
> 
> namespace private {
>   prefix = "RealMails/"
>   separator = /
>   list = no
>   hidden = yes
>   location =
> maildir:/usr/local/virtual/%d/%u/:CONTROL=/usr/local/virtual/%d/%u/:INDEX=/usr/local/virtual/%d/%u/:INBOX=/usr/local/virtual/%d/%u/
> }
> 
> 
> mail_location =
> maildir:/usr/local/virtual/%d/%u/:CONTROL=/usr/local/virtual/%d/%u/:INDEX=/usr/local/virtual/%d/%u/:INBOX=/usr/local/virtual/%d/%u/
> 
> expire = Trash 1
> expire_dict = proxy::expire
> 
> 
> didnt include any logs cause i couldnt find any special
> but perhaps you know what to look for
> 
> 
Hi Timo,
so now its clear, the mail
did not got deleted if i now do

/usr/sbin/dovecot -c /etc/dovecot/dovecot.conf --exec-mail ext
/usr/lib/dovecot/expire-tool.sh --test
Info: Loading modules from directory: /usr/lib/dovecot/modules/imap
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib01_acl_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib10_quota_plugin.so
Info: Module loaded:
/usr/lib/dovecot/modules/imap/lib20_autocreate_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_expire_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_fts_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib21_fts_squat_plugin.so
Info: Quota root: name= backend=dict args=:proxy::quotadict
Info: Quota warning: bytes=0 (95%) messages=0
command=/usr/local/bin/quota-warning.sh 95
Info: Quota warning: bytes=0 (80%) messages=0
command=/usr/local/bin/quota-warning.sh 80
Info: expire: pattern=Trash type=expunge secs=86400
Info: auth input:
home=/usr/local/virtual/schetterer.com/robert at schetterer.com/
Info: auth input: quota_rule=*:bytes=10240000
Info: auth input: quota_rule2=Trash:storage=50240
Info: auth input: quota_rule3=Sent:storage=50240
Info: auth input: quota_rule4=Drafts:storage=50240
Info: auth input: quota_rule5=Templates:storage=50240
Info: auth input: quota_rule6=Junk:storage=50240
Info: auth input:
mail=maildir:/usr/local/virtual/schetterer.com/robert at schetterer.com/
Info: auth input: namespace_1_inbox=yes
Info: auth input: uid=1001
Info: auth input: gid=1001
Info: dict quota: user=robert at schetterer.com, uri=proxy::quotadict,
noenforcing=0
Info: Namespace: type=private, prefix=, sep=/, inbox=yes, hidden=no,
list=yes, subscriptions=yes
Info: maildir:
data=/usr/local/virtual//root/:CONTROL=/usr/local/virtual//root/:INDEX=/usr/local/virtual//root/:INBOX=/usr/local/virtual//root/
Info: maildir++: root=/usr/local/virtual//root, index=, control=,
inbox=/usr/local/virtual//root
Info: acl: initializing backend with data: vfile
Info: acl: acl username = robert at schetterer.com
Info: acl: owner = 1
Info: acl vfile: Global ACL directory: (null)
Info: Namespace: type=private, prefix=virtual/, sep=/, inbox=no,
hidden=yes, list=no, subscriptions=no
Error: Namespace 'virtual/': Unknown mail storage driver virtual
Info: User lookup failed: robert at schetterer.com

so it seems a problem with virtual
 changed this

#!/bin/bash
MAIL_PLUGINS=${MAIL_PLUGINS//imap_quota/}
MAIL_PLUGINS=${MAIL_PLUGINS//mail_log/}
MAIL_PLUGINS=${MAIL_PLUGINS//imap_acl/}
#MAIL_PLUGINS=${MAIL_PLUGINS//virtual/} <<<<
exec ${0%.sh} "$@"

usr/sbin/dovecot -c /etc/dovecot/dovecot.conf --exec-mail ext
/usr/lib/dovecot/expire-tool.sh --test
Info: Loading modules from directory: /usr/lib/dovecot/modules/imap
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib01_acl_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib10_quota_plugin.so
Info: Module loaded:
/usr/lib/dovecot/modules/imap/lib20_autocreate_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_expire_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_fts_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_virtual_plugin.so
Info: Module loaded: /usr/lib/dovecot/modules/imap/lib21_fts_squat_plugin.so
Info: Quota root: name= backend=dict args=:proxy::quotadict
Info: Quota warning: bytes=0 (95%) messages=0
command=/usr/local/bin/quota-warning.sh 95
Info: Quota warning: bytes=0 (80%) messages=0
command=/usr/local/bin/quota-warning.sh 80
Info: expire: pattern=Trash type=expunge secs=86400
Info: auth input:
home=/usr/local/virtual/schetterer.com/robert at schetterer.com/
Info: auth input: quota_rule=*:bytes=10240000
Info: auth input: quota_rule2=Trash:storage=50240
Info: auth input: quota_rule3=Sent:storage=50240
Info: auth input: quota_rule4=Drafts:storage=50240
Info: auth input: quota_rule5=Templates:storage=50240
Info: auth input: quota_rule6=Junk:storage=50240
Info: auth input:
mail=maildir:/usr/local/virtual/schetterer.com/robert at schetterer.com/
Info: auth input: namespace_1_inbox=yes
Info: auth input: uid=1001
Info: auth input: gid=1001
Info: dict quota: user=robert at schetterer.com, uri=proxy::quotadict,
noenforcing=0
Info: Namespace: type=private, prefix=, sep=/, inbox=yes, hidden=no,
list=yes, subscriptions=yes
Info: maildir:
data=/usr/local/virtual//root/:CONTROL=/usr/local/virtual//root/:INDEX=/usr/local/virtual//root/:INBOX=/usr/local/virtual//root/
Info: maildir++: root=/usr/local/virtual//root, index=, control=,
inbox=/usr/local/virtual//root
Info: acl: initializing backend with data: vfile
Info: acl: acl username = robert at schetterer.com
Info: acl: owner = 1
Info: acl vfile: Global ACL directory: (null)
Info: Namespace: type=private, prefix=virtual/, sep=/, inbox=no,
hidden=yes, list=no, subscriptions=no
Info: virtual: data=/etc/dovecot/virtual:LAYOUT=maildir++
Info: maildir++: root=/etc/dovecot/virtual, index=, control=, inbox=
Info: acl: initializing backend with data: vfile
Info: acl: acl username = robert at schetterer.com
Info: acl: owner = 1
Info: acl vfile: Global ACL directory: (null)
Info: Namespace: type=private, prefix=RealMails/, sep=/, inbox=no,
hidden=yes, list=no, subscriptions=yes
Info: maildir:
data=/usr/local/virtual//root/:CONTROL=/usr/local/virtual//root/:INDEX=/usr/local/virtual//root/:INBOX=/usr/local/virtual//root/
Info: maildir++: root=/usr/local/virtual//root, index=, control=,
inbox=/usr/local/virtual//root
Info: acl: initializing backend with data: vfile
Info: acl: acl username = robert at schetterer.com
Info: acl: owner = 1
Info: acl vfile: Global ACL directory: (null)
Info: Namespace: type=shared, prefix=shared/%u/, sep=/, inbox=no,
hidden=no, list=children, subscriptions=no
Info: shared: root=, index=, control=, inbox=
Info: Namespace : Using permissions from /usr/local/virtual//root:
mode=0700 gid=-1
Info: acl vfile: file /usr/local/virtual//root/.Trash/dovecot-acl not found
Info: robert at schetterer.com/Trash: no messages left


-- 
Best Regards

MfG Robert Schetterer

Germany/Munich/Bavaria


More information about the dovecot mailing list