From af49a7a45e8bde8cbb44bbf83a2ce5a04c9e04f4 Mon Sep 17 00:00:00 2001 From: Stuart Gathman Date: Sun, 16 Jun 2013 03:39:47 +0000 Subject: [PATCH] Clean while exporting, and handle exporting IP6 --- Milter/greylist.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Milter/greylist.py b/Milter/greylist.py index 5f983da..1a7dcd1 100644 --- a/Milter/greylist.py +++ b/Milter/greylist.py @@ -41,13 +41,15 @@ class Greylist(object): self.dbp = shelve.open(dbname,'c',protocol=2) self.lock = thread.allocate_lock() - def export_csv(self,fp): + def export_csv(self,fp,timeinc=0): "Export records to csv." import csv dbp = self.dbp w = csv.writer(fp) + now = time.time() + timeinc for key, r in dbp.iteritems(): - ip,sender,recipient = key.split(':') + if now > r.lastseen + self.greylist_retain: continue + ip,sender,recipient = key.rsplit(':',2) w.writerow([ip,sender,recipient,r.firstseen,r.lastseen,r.cnt,r.umis]) def clean(self,timeinc=0): @@ -112,7 +114,7 @@ class Greylist(object): if __name__ == '__main__': import sys - g = Greylist(sys.argv[1]) + g = Greylist(sys.argv[1],5,24,36) try: g.export_csv(sys.stdout) finally: g.close()