Hi! I'm using dovecot-1.1.5 and trying to make the expire plugin work. What I've configured in dovecot.conf is the following: protocol imap,pop3,lda { mail_plugins = [...] expire } dict { expire = db:/var/dovecot/expire/expire.db } plugin { expire = spamassassin/SPAM 2 spamassassin/HAM 2 expire_dict = proxy::expire } I have a sieve rule, to copy certain messages to my "spamassassin/SPAM" folder. Then I want to expire those messages after 2 days (I think I've configured that under the plugin{} section in dovecot.conf). So the actual message saving is done by the dovecot's deliver, but I have the plugin loaded under the "protocol lda {}" section too. So I thought now I just have to wait 2 days, and run the expire-tool, and then it will expire the messages. Now I have three messages dated back to 10.25, but running the expire-tool outputs nothing. # dovecot --exec-mail ext /usr/local/libexec/dovecot/expire-tool --test Nothing in the logfiles, and nothing on the console. I have the /var/dovecot/expire directory: # ls -la /var/dovecot/expire/ total 1640 drwx------ 2 root wheel 512 Oct 26 19:47:53 2008 ./ drwxr-x--- 3 root wheel 512 Oct 27 07:57:42 2008 ../ -rw------- 1 root wheel 24576 Oct 27 13:00:01 2008 __db.001 -rw------- 1 root wheel 57344 Oct 27 13:00:01 2008 __db.002 -rw------- 1 root wheel 270336 Oct 27 13:00:01 2008 __db.003 -rw------- 1 root wheel 98304 Oct 27 13:00:01 2008 __db.004 -rw------- 1 root wheel 49152 Oct 27 13:00:01 2008 __db.005 -rw------- 1 root wheel 32768 Oct 26 19:47:37 2008 expire.db -rw------- 1 root wheel 10485760 Oct 27 14:22:08 2008 log.0000000001 It contains the familiar BDB files, so I think it works, although the expire.db's modify time is yesterday, but deliver saved some messages also today to the spamassassin/SPAM folder. What could be the problem? Am I missing something? Thanks! Daniel -- LEVAI Daniel PGP key ID = 0x4AC0A4B1 Key fingerprint = D037 03B9 C12D D338 4412 2D83 1373 917A 4AC0 A4B1
Hi! Anybody has this working? I mean, at least somebody has to use this expire plugin with BDB, no? :D I think, maybe the problem is withing the plugin { expire = } setting; to be honest, I'm a little confused with this. I have a maildir layout like this: [..some dirs..]/$USER/Maildir/ Under the above directory, there are the users' subdirectories. So the subdirectory in question (spamassassin/SPAM), is "[..somedirs..]/$USER/Maildir/.spamassassin.SPAM/" # ls -1a [..somedirs..]/$USER/Maildir/.spamassassin.SPAM/ ./ ../ cur/ dovecot-uidlist dovecot.index dovecot.index.cache dovecot.index.log maildirfolder new/ tmp/ According to the WIKI page, I must write this to my dovecot.conf: plugin { expire = spamassassin/SPAM 1 expire_dict = proxy::expire } That is, if I want to expire the emails under the spamassassin/SPAM directory, after 1 day. Is this correct? I'm asking this because with this setup, the expire-tool does nothing... nothing in the logs either. I've experimented with "expire = spamassassin.SPAM" and "expire=spamassassin/SPAM/*" too, but no luck. Could someone send me some working dovecot.conf, and setup, so I can diff it against mine? Or maybe just a little tossing in the right direction would be enough. Thanks in advance! Daniel L?VAI D?niel wrote:> Hi! > > I'm using dovecot-1.1.5 and trying to make the expire plugin work. > What I've configured in dovecot.conf is the following: > > protocol imap,pop3,lda { > mail_plugins = [...] expire > } > > dict { > expire = db:/var/dovecot/expire/expire.db > } > > > plugin { > expire = spamassassin/SPAM 2 spamassassin/HAM 2 > expire_dict = proxy::expire > } > > I have a sieve rule, to copy certain messages to my "spamassassin/SPAM" > folder. Then I want to expire those messages after 2 days (I think I've > configured that under the plugin{} section in dovecot.conf). > So the actual message saving is done by the dovecot's deliver, but I > have the plugin loaded under the "protocol lda {}" section too. > So I thought now I just have to wait 2 days, and run the expire-tool, > and then it will expire the messages. > Now I have three messages dated back to 10.25, but running the > expire-tool outputs nothing. > # dovecot --exec-mail ext /usr/local/libexec/dovecot/expire-tool --test > > Nothing in the logfiles, and nothing on the console. I have the > /var/dovecot/expire directory: > # ls -la /var/dovecot/expire/ > total 1640 > drwx------ 2 root wheel 512 Oct 26 19:47:53 2008 ./ > drwxr-x--- 3 root wheel 512 Oct 27 07:57:42 2008 ../ > -rw------- 1 root wheel 24576 Oct 27 13:00:01 2008 __db.001 > -rw------- 1 root wheel 57344 Oct 27 13:00:01 2008 __db.002 > -rw------- 1 root wheel 270336 Oct 27 13:00:01 2008 __db.003 > -rw------- 1 root wheel 98304 Oct 27 13:00:01 2008 __db.004 > -rw------- 1 root wheel 49152 Oct 27 13:00:01 2008 __db.005 > -rw------- 1 root wheel 32768 Oct 26 19:47:37 2008 expire.db > -rw------- 1 root wheel 10485760 Oct 27 14:22:08 2008 log.0000000001 > > It contains the familiar BDB files, so I think it works, although the > expire.db's modify time is yesterday, but deliver saved some messages > also today to the spamassassin/SPAM folder. > > What could be the problem? Am I missing something? > > Thanks! > > Daniel >-- LEVAI Daniel PGP key ID = 0x4AC0A4B1 Key fingerprint = D037 03B9 C12D D338 4412 2D83 1373 917A 4AC0 A4B1
On Monday 27 October 2008 14.26.50 L?VAI D?niel wrote:> Hi! > > I'm using dovecot-1.1.5 and trying to make the expire plugin work. > What I've configured in dovecot.conf is the following: > > protocol imap,pop3,lda { > mail_plugins = [...] expire > } > > dict { > expire = db:/var/dovecot/expire/expire.db > } > > > plugin { > expire = spamassassin/SPAM 2 spamassassin/HAM 2 > expire_dict = proxy::expire > } > > I have a sieve rule, to copy certain messages to my > "spamassassin/SPAM" folder. Then I want to expire those messages > after 2 days (I think I've configured that under the plugin{} section > in dovecot.conf). So the actual message saving is done by the > dovecot's deliver, but I have the plugin loaded under the "protocol > lda {}" section too. So I thought now I just have to wait 2 days, and > run the expire-tool, and then it will expire the messages. > Now I have three messages dated back to 10.25, but running the > expire-tool outputs nothing. > # dovecot --exec-mail ext /usr/local/libexec/dovecot/expire-tool > --test > > Nothing in the logfiles, and nothing on the console. I have the > /var/dovecot/expire directory: > # ls -la /var/dovecot/expire/ > total 1640 > drwx------ 2 root wheel 512 Oct 26 19:47:53 2008 ./ > drwxr-x--- 3 root wheel 512 Oct 27 07:57:42 2008 ../ > -rw------- 1 root wheel 24576 Oct 27 13:00:01 2008 __db.001 > -rw------- 1 root wheel 57344 Oct 27 13:00:01 2008 __db.002 > -rw------- 1 root wheel 270336 Oct 27 13:00:01 2008 __db.003 > -rw------- 1 root wheel 98304 Oct 27 13:00:01 2008 __db.004 > -rw------- 1 root wheel 49152 Oct 27 13:00:01 2008 __db.005 > -rw------- 1 root wheel 32768 Oct 26 19:47:37 2008 expire.db > -rw------- 1 root wheel 10485760 Oct 27 14:22:08 2008 > log.0000000001 > > It contains the familiar BDB files, so I think it works, although the > expire.db's modify time is yesterday, but deliver saved some messages > also today to the spamassassin/SPAM folder.I've got bitten by this: The wiki[1] reads: [...] - "%" works by matching any number of characters, but it stops at the hierarchy separator. Currently the separator is hardcoded to "/". [...] plugin { # Trash and its children 7d, Spam 30d expire = Trash 7 Trash/* 7 Spam 30 [...] That is not exactly true. The separator which is working (as told me by e-frog, and as can be seen in the Maildir/ hierarchy) is the dot character (ie.: .). My $USER/spamassassin/SPAM directory is not working as: expire = spamassassin/SPAM 1 only as: expire = spamassassin.SPAM 1 Also the dovecot-example.conf says: "The following dict block maps dictionary names to URIs when the server is used. These can then be referenced using URIs in format "proxy:<name>"." That is not true either, it must be "proxy::<name>" (note the two colons) or else dovecot won't even start. Anyway, for the record, I should mention that while it is easy to check whether dovecot is fooling around with a mysql database, it is not so straightforward with BDB. One can check if the Berkeley database is being used with db4_dump (or on some systems db4.7_dump or db4.6_dump and so on...): $ db4_dump -d a expire.db [...] page 1: btree leaf: LSN [0][1]: level 1 prev: 0 next: 0 entries: 0 offset: 16384 ^^^ the above contains no entries, while: $ db4_dump -da expire.db [...] page 1: btree leaf: LSN [1][84670]: level 1 prev: 0 next: 0 entries: 2 offset: 16344 [000] 16352 len: 29 data: shared/leva/spamassa... [001] 16344 len: 4 data: ??0x08I ^^^ this contains entries. Don't ask me what is the second row, though :), and also it is a PITA that the data gets trimmed. On Wednesday 29 October 2008 15.53.24 Timo Sirainen wrote:> On Wed, 2008-10-29 at 15:25 +0100, L?VAI D?niel wrote: > > When I ran `dovecot --exec-mail ext > > /usr/local/libexec/dovecot/expire-tool --test', it told me that: > > Info: leva/spamassassin.SPAM: stop, expire time in future: > > 1225290174 > > Sounds like it's working. It just wasn't time yet to expunge the > oldest mail from thereYep, now I can understand that, but what *is* weird, that the only "debug" information comes from this expire-tool when ran with the --test option. If I run it without it, it won't output anything anywhere. It would be nice to increase the logging for this (with or without the --test option), eg. when mail_debug=yes. [1] - http://wiki.dovecot.org/Plugins/Expire Daniel -- LEVAI Daniel PGP key ID = 0x4AC0A4B1 Key fingerprint = D037 03B9 C12D D338 4412 2D83 1373 917A 4AC0 A4B1