import string
import poplib
import time
mailserver=["mail.server1","mail.server2"] login=["login1","login2"] password=["pass1","pass2"] days=[2,3] localuidlcache="/var/mail/.fetchmail-UIDL-cache" localuidldate="/var/mail/.UIDLDate"
readfile=open(localuidlcache, 'r')
datefile=open(localuidldate, 'a+')
tempfile=open("/tmp/uidltmp", 'w+')
popuidllist=[] totnum=0 connectedto=-1
for a in range(len(mailserver)):
connect=poplib.POP3(mailserver[a])
connect.user(login[a])
connect.pass_(password[a])
connectedto=a
number,size=connect.stat()
totnum+=number
for mesnum in range(number):
messagedeleted=0
datefile.seek(0)
for uidldate in datefile:
uidldatesplit=uidldate.split(' ')
if(connectedto==int(uidldatesplit[2])):
if (time.time()-float(uidldatesplit[1]))>(86400*days[a]-3600):
try:
recheckuidl=connect.uidl(mesnum+1)
recheckuidlsplit=recheckuidl.split(' ')
if (recheckuidlsplit[2]==uidldatesplit[0]):
print('deleting'+recheckuidlsplit[1])
print(connect.dele(recheckuidlsplit[1]))
messagedeleted=1
totnum-=1
except poplib.error_proto:
pass if not(messagedeleted):
popuidllist.append(connect.uidl(mesnum+1)+' '+str(a))
connect.quit()
datefile.seek(0)
for uidldate in datefile:
uidldatesplit=uidldate.split(' ')
if not(time.time()-float(uidldatesplit[1]))>(86400*days[int(uidldatesplit[2])]):
tempfile.write(uidldate)
datefile.close()
datefile=open(localuidldate,'w+')
tempfile.seek(0)
for line in tempfile:
datefile.write(line)
datefile.close()
datefile=open(localuidldate,'a+')
for mesnum in range(totnum):
popuidl=popuidllist[mesnum]
popuidlsplit=popuidl.split(' ')
readfile.seek(0)
for localuidl in readfile:
if(localuidl.find(popuidlsplit[2])<>-1):
foundindatefile=0
datefile.seek(0)
for stored in datefile:
if (stored.find(popuidlsplit[2])<>-1):
foundindatefile=1
if not(foundindatefile):
datefile.write(popuidlsplit[2]+' '+str(time.time())+' '
+popuidlsplit[3]+'\n')