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()