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