[Dovecot] Problems with BEFORE searches.

2007-05-11 Thread Trever L. Adams
Ok, I am trying to modify some code given to me by the author of the 
dspam plugin for dovecot (sorry the name eludes me). I am modifying it 
to handle UNSEEN differently than SEEN.


Below is the python code. I am not a python programmer, but I get the 
basic idea.


ok, uids = conn.search(None, 'BEFORE', unreadsentbefore, 'SEEN')

11-May-2007 06:18:29 -0600 is the value of unreadsentbefore.

However, this doesn't match any emails even though they are all dated as 
5/10 and they have all been read for several hours (the time was the 
current to figure out why it isn't working).


Is there a problem with BEFORE and SEEN together? Is there a BEFORE bug 
in the system? Some of the messages are -500 and others, I am not sure.


Thanks,
Trever Adams


Re: [Dovecot] Problems with BEFORE searches.

2007-05-11 Thread Timo Sirainen
On Fri, 2007-05-11 at 06:22 -0600, Trever L. Adams wrote:
 
 ok, uids = conn.search(None, 'BEFORE', unreadsentbefore, 'SEEN')
 
 11-May-2007 06:18:29 -0600 is the value of unreadsentbefore.

From IMAP RFC:

search-key  = ALL / ANSWERED / BCC SP astring /
  BEFORE SP date / BODY SP astring /
..
date= date-text / DQUOTE date-text DQUOTE
date-text   = date-day - date-month - date-year

So you'll need to use 11-May-2007. It doesn't support time.



signature.asc
Description: This is a digitally signed message part


Re: [Dovecot] Problems with BEFORE searches.

2007-05-11 Thread Trever Adams

Timo Sirainen wrote:

From IMAP RFC:

search-key  = ALL / ANSWERED / BCC SP astring /
  BEFORE SP date / BODY SP astring /
..
date= date-text / DQUOTE date-text DQUOTE
date-text   = date-day - date-month - date-year

So you'll need to use 11-May-2007. It doesn't support time.
  
Tim, thank you. I am afraid I do not understand if the date is only 
allowed as such why does python's imaplib convert the date as such?!? 
Anyway, I understand that is a question for some place else. I hope 
python has something like strtok or similar where I can tokenize the 
first part out to be used.


Thank you very much.

Trever


Re: [Dovecot] Problems with BEFORE searches.

2007-05-11 Thread Johannes Berg
On Fri, 2007-05-11 at 08:54 -0600, Trever Adams wrote:

  So you'll need to use 11-May-2007. It doesn't support time.

 Tim, thank you. I am afraid I do not understand if the date is only 
 allowed as such why does python's imaplib convert the date as such?!? 

Interesting. I just noticed another bug too, it pads with spaces:
 1-May-07 ...

Try this in my script:

# this line is already there
sentbefore = imaplib.Time2Internaldate(time.time() - float(sys.argv[1]) * 24 * 
60 * 60)

# add these lines
sentbefore = sentbefore.split('')[1].split()[0]
sentbefore = '%s' % sentbefore

Or maybe just replace it all with:

sentbefore = time.strftime(%d-%b-%Y, time.localtime(time.time() - 
float(sys.argv[1]) * 24 * 60 * 60))

johannes


signature.asc
Description: This is a digitally signed message part


Re: [Dovecot] Problems with BEFORE searches.

2007-05-11 Thread Trever L. Adams
On Fri, 2007-05-11 at 17:08 +0200, Johannes Berg wrote:
 Interesting. I just noticed another bug too, it pads with spaces:
  1-May-07 ...
 

Yes, I caught this too.

 Or maybe just replace it all with:
 
 sentbefore = time.strftime(%d-%b-%Y, time.localtime(time.time() - 
 float(sys.argv[1]) * 24 * 60 * 60))
 
 johannes

I like this last version better. I will use it instead of my version of
your other version. It is much cleaner.

However, your code still lacks conn.expunge(). My testing shows this is
necessary (at least if you are using Maildir, I imagine it is even more
necessary with mbox).

I suggest you add it before you close the connection.

Thanks for your help Timo and Johannes.

Trever
--
If it's there and you can see it, it's REAL If it's there and you can't
see it, it's TRANSPARENT If it's not there and you can see it, it's
VIRTUAL If it's not there and you can't see it, it's GONE! -- Unknown


signature.asc
Description: This is a digitally signed message part


Re: [Dovecot] Problems with BEFORE searches.

2007-05-11 Thread Johannes Berg
On Fri, 2007-05-11 at 16:16 -0600, Trever L. Adams wrote:

 I like this last version better. I will use it instead of my version of
 your other version. It is much cleaner.

Yeah, I thought using the imaplib would be good but apparently not :)

 However, your code still lacks conn.expunge(). My testing shows this is
 necessary (at least if you are using Maildir, I imagine it is even more
 necessary with mbox).

I think I had a reason not to do it. I forgot about that reason and just
do it manually once a while. Heh.

johannes


signature.asc
Description: This is a digitally signed message part