Andreas Ntaflos
2009-Sep-15 15:59 UTC
[Dovecot] Expire plugin: wrong mailbox separators in database?
Hi all, I'm experimenting with the expire plugin and seem have run into a small problem. I am using Dovecot 1.2.4 on a test server. The config is taken mostly verbatim from the expire plugin wiki page [1], using MySQL as a database. See below for detailed output. Namespace "private" has "/" configured as mailbox separator: namespace private { separator = / prefix inbox = yes } The "expire =" section from dovecot.conf thus looks like this: plugin { expire = Trash 7 INBOX/Spam 8 INBOX/Spam/To-Discard 3 ... } Three mailboxes/folders are kept track of: Trash, INBOX/Spam and INBOX/Spam/Spam-To-Discard (this one holds messages that scored high enough to very unlikely be legitimate and should be deleted soon). But when a message is put into one of these folders the mailbox attribute of the expires table uses "." as mailbox separator: mysql> select * from expires; +-----------------+----------------------------+--------------+ | username | mailbox | expire_stamp | +-----------------+----------------------------+--------------+ | foo at example.org | INBOX.Spam.Spam-To-Discard | 1253114526 | | foo at example.org | INBOX.Spam | 1253114528 | +-----------------+----------------------------+--------------+ Consequently, expire-tool --test seems to choke on this: # dovecot --exec-mail ext /usr/local/libexec/dovecot/expire-tool --test Info: foo at example.org/INBOX.Spam.Spam-To-Discard: \ mailbox 'INBOX.Spam.Spam-To-Discard' removed from config Info: foo at example.org/INBOX.Spam: mailbox 'INBOX.Spam' \ removed from config When I manually update the mailbox attribute to use "/" as separator expire-tool seems to work correctly: # dovecot --exec-mail ext /usr/local/libexec/dovecot/expire-tool --test Info: foo at example.org/INBOX/Spam/Spam-To-Discard: stop, expire \ time in future: Wed Sep 16 17:22:06 2009 Using "." as separator in the "expire =" line doesn't work either: the expires table isn't written to at all when a message is put in one of the specified folders. Presumably because INBOX/Spam is the real mailbox but INBOX.Spam is monitored by the expire plugin and there is no INBOX.Spam to put in messages. So I believe this is not the expected behaviour? Or am I doing anything wrong? I'd rather not change the separator from "/" to "." in all the namespaces if that can be avoided. Thanks in advance, Andreas dovecot -n: ========= # 1.2.4: /usr/local/etc/dovecot.conf # OS: Linux 2.6.26-2-686 i686 Debian 5.0.2 log_timestamp: %Y-%m-%d %H:%M:%S protocols: managesieve imap imaps pop3 pop3s listen: 83.65.168.220 127.0.0.1 login_dir: /usr/local/var/run/dovecot/login login_executable(default): /usr/local/libexec/dovecot/imap-login login_executable(imap): /usr/local/libexec/dovecot/imap-login login_executable(pop3): /usr/local/libexec/dovecot/pop3-login login_executable(managesieve): /usr/local/libexec/dovecot/managesieve-login mail_access_groups: mail mail_privileged_group: mail mail_location: maildir:~/Maildir mail_drop_priv_before_exec: yes mail_executable(default): /usr/local/libexec/dovecot/imap mail_executable(imap): /usr/local/libexec/dovecot/imap mail_executable(pop3): /usr/local/libexec/dovecot/pop3 mail_executable(managesieve): /usr/local/libexec/dovecot/managesieve mail_plugins(default): autocreate acl expire mail_plugins(imap): autocreate acl expire mail_plugins(pop3): expire mail_plugins(managesieve): mail_plugin_dir(default): /usr/local/lib/dovecot/imap mail_plugin_dir(imap): /usr/local/lib/dovecot/imap mail_plugin_dir(pop3): /usr/local/lib/dovecot/pop3 mail_plugin_dir(managesieve): /usr/local/lib/dovecot/managesieve namespace: type: public separator: / prefix: Public/ location: maildir:/var/mail/public:CONTROL=~/Maildir/control/public:INDEX=~/Maildir/index/public list: yes namespace: type: private separator: / prefix: Backup/ location: maildir:~/Maildir-backup hidden: yes list: no namespace: type: private separator: / inbox: yes list: yes subscriptions: yes lda: log_path: info_log_path: auth_socket_path: /var/run/dovecot/auth-master postmaster_address: postmaster at mailtest0.rise-s.com mail_plugins: sieve acl expire auth default: mechanisms: plain login passdb: driver: pam passdb: driver: sql args: /etc/dovecot/dovecot-sql.conf userdb: driver: passwd userdb: driver: static args: uid=vmail gid=vmail home=/var/vmail/%Ld/%Ln allow_all_users=yes socket: type: listen client: path: /var/spool/postfix/private/auth mode: 432 user: postfix group: postfix master: path: /var/run/dovecot/auth-master mode: 384 user: vmail plugin: expire: Trash 7 INBOX/Spam 5 INBOX/Spam/Spam-To-Discard 3 expire_dict: proxy::expire sieve: ~/.dovecot.sieve sieve_dir: ~/sieve sieve_global_path: /etc/dovecot/sieve/default.sieve sieve_global_dir: /etc/dovecot/sieve/global/ sieve_before: /etc/dovecot/sieve/before/ autocreate: Trash autocreate2: Drafts autocreate3: Sent autocreate4: INBOX/Spam autocreate5: INBOX/Spam/Spam-To-Discard autosubscribe: Trash autosubscribe2: Drafts autosubscribe3: Sent autosubscribe4: INBOX/Spam autosubscribe5: INBOX/Spam/Spam-To-Discard acl: vfile:/etc/dovecot/acl dict: expire: mysql:/etc/dovecot/dovecot-dict-expire.conf /etc/dovecot/dovecot-dict-expire.conf: ==================================== connect = host=127.0.0.1 dbname=mailserver user=mailuser password=xxx map { pattern = shared/expire/$user/$mailbox table = expires value_field = expire_stamp fields { username = $user mailbox = $mailbox } } The expires table: CREATE TABLE expires ( username varchar(100) not null, mailbox varchar(255) not null, expire_stamp integer not null, primary key (username, mailbox) ); [1] http://wiki.dovecot.org/Plugins/Expire -- Andreas Ntaflos Vienna, Austria GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC 7E65 397C E2A8 090C A9B4 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: This is a digitally signed message part. URL: <http://dovecot.org/pipermail/dovecot/attachments/20090915/70fcae92/attachment-0002.bin>
Andreas Ntaflos
2009-Oct-01 18:55 UTC
[Dovecot] Expire plugin: wrong mailbox separators in database?
Hate to bump this, but is there nobody who uses the expire plugin and can confirm my observations? I'd love to use the expire plugin to delete old messages filed in spam folders but as it is now I can't get it to work with the wrong mailbox separators in the table entries. Andreas -- Andreas Ntaflos GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC 7E65 397C E2A8 090C A9B4 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part. URL: <http://dovecot.org/pipermail/dovecot/attachments/20091001/fa4f2b5b/attachment-0002.bin>
Eric Shubert
2009-Oct-01 19:13 UTC
[Dovecot] Expire plugin: wrong mailbox separators in database?
Andreas Ntaflos wrote:> Hate to bump this, but is there nobody who uses the expire plugin and > can confirm my observations? > > I'd love to use the expire plugin to delete old messages filed in spam > folders but as it is now I can't get it to work with the wrong mailbox > separators in the table entries. > > AndreasYour observations look reasonable to me. Looks like the expire plugin needs to be fixed so that other separator characters can be used. -- -Eric 'shubes'
Timo Sirainen
2009-Oct-16 01:10 UTC
[Dovecot] Expire plugin: wrong mailbox separators in database?
http://hg.dovecot.org/dovecot-1.2/rev/00757d350812 probably helps? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part URL: <http://dovecot.org/pipermail/dovecot/attachments/20091015/7d0d0967/attachment-0002.bin>