[Dovecot] expire plugin no delete 1.2.1
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. My guess that there is a problem with virtual plugin and/or shared namespace. It shouldnt be a problem with acl starting the script over cron as root am i right ? do you have any idea why it fails, is there a way to ignore all unneeded shared or virtual namespaces ? should there be a entry in the log when expire time is reached and deletion is unsuccessfull ?
Best Regards
MfG Robert Schetterer
Germany/Munich/Bavaria
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.
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
-- Best Regards
MfG Robert Schetterer
Germany/Munich/Bavaria
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@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@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
-- Best Regards
MfG Robert Schetterer
Germany/Munich/Bavaria
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@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@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@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@schetterer.com/ Info: auth input: namespace_1_inbox=yes Info: auth input: uid=1001 Info: auth input: gid=1001 Info: dict quota: user=robert@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@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@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@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@schetterer.com/ Info: auth input: namespace_1_inbox=yes Info: auth input: uid=1001 Info: auth input: gid=1001 Info: dict quota: user=robert@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@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@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@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@schetterer.com/Trash: no messages left
-- Best Regards
MfG Robert Schetterer
Germany/Munich/Bavaria
On Fri, 2009-07-31 at 17:21 +0200, Robert Schetterer wrote:
Hi Timo, so now its clear, the mail did not got deleted if i now do
Info: robert@schetterer.com/Trash: no messages left
So, it worked? "no messages left" means if you didn't give --test it would have deleted all messages from the mailbox.
participants (2)
-
Robert Schetterer
-
Timo Sirainen