Defroster (relancer) les mails sous XMail

December 7, 2005 on 6:16 pm | In General, Python, admin | No Comments

J’utilise le serveur de mail Xmail depuis des années car il est simple, efficace, sûr et portable. Si vous cherchez un serveur de mail, je vous le conseille vivement.

Au bout d’un certain nombre d’essais infructeux, les mails sortants sont stockés dans un repertoire spécial (ils sont ‘frozens’).

Avec l’utilitaire Xmail Queue Manager on peut normalement gerer ces mails, le supprimer et les renvoyer, mais il semble que la dernière version (1.46) a un leger bug qui empeche de relancer les mails.

J’ai donc fait un petit script Python qui permet de se connecter au serveur Xmail via Telnet, de voir les mails en attente et d’eventuellement les renvoyer dans la queue.

si ca ne vous suffit pas, vous pouvez facilement modifier le script, qui est à base de Python+telnetlib

J’ai appellé ca XmailFlusher et le code est ci dessous :

nouvelle version le 21/12 : possibilité de tout relancer !

# -*- coding: iso-8859-1 -*-
#
# Coded by Juju – jb@revolunet.com – comments welcome
#

import sys,time
import telnetlib

HOST = “MyHost”
PORT = “6017″
LOGIN = “admin”
PWD = “MyPwd”

tn = telnetlib.Telnet(HOST,PORT)

lstMails = []
infosMail = []

def ReSendMail(idmail):
zmail=lstMails[idmail-1].split(“        “)
lev0=zmail[1].replace(‘"’,)
lev1=zmail[2].replace(‘"’,)
file=zmail[0].replace(‘"’,)
cmd=“frozsubmit %s       %s     %s
% (lev0,lev1,file)
#print cmd
tn.write(“%s
% cmd)
tn.read_until(“+00000 OK”,1)
#print "ok"

def getListeEmailsEnAttente():
global lstMails,infosMail
infosMail=[]
tn.write(“frozlist
)
lstMails = tn.read_until(
.
,1).split(
)
#print lstMails
lstMails = lstMails[3:-2]
#print lstMails
for mail in lstMails:
dta=mail.split(“        “)
if (mail.find(“Bad CTRL command”)>-1):
print “ERREUR…” + mail
break
infosMail.append(“%s : de %s a %s” % (dta[5],dta[3],dta[4]))

print “authentification…”
tn.write(“%s    %s
% (LOGIN,PWD))
tn.read_until(“+00000″)

print “liste des mails en attente…”
getListeEmailsEnAttente()

while(len(lstMails)>0):
print “%s mail(s) en attente : “ % len(lstMails)

for i in range(len(infosMail)):
print “%s : %s” % ((i+1),infosMail[i])

idmail = (raw_input(“Mail a renvoyer ou ‘0′ ou ‘all’: “))

if idmail==“all”:
for i in range(len(lstMails)):
ReSendMail(i)
getListeEmailsEnAttente()
elif int(idmail)>len(lstMails):
print “pas de mail avec ce numero !”
elif int(idmail)>0:
ReSendMail(int(idmail))
print “mail %s renvoye” % idmail
getListeEmailsEnAttente()
else:
break

print “aucun mail en attente !”

tn.write(“quit
)

No Comments yet »

RSS feed for comments on this post. TrackBack URI

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^