MX Checker em python
Há algum tempo atrás eu escrevi um script para meu amigo philippe para checar se um servidor smtp estava configurado para aceitar relay ou não, era bem simples como você mesmo pode ver neste post, e na ocasião ele me apresentou um site que fazia essa checagem e como eu estava aprendendo python me sugeriu que eu fizesse um script com o retorno parecido com o do site.
Então eu fiz, e aproveitei para colocar em prática o metódo POO de programar, que também havia aprendido a pouco tempo. Bem o código não ficou lá grande coisa, mas faz o prometido hehe.
#!/usr/bin/python
# coding: UTF-8
# MX checker by deadcow [at] archlinux.com.br
import smtplib
from time import time
from sys import argv
class Check_s:
def __init__(self, daddr = 'Localhost'):
self.daddr = daddr
self.smtpconn = smtplib.SMTP()
self.relay = True
self.elapsed = 0
def Bann_s(self):
try:
atime = time()
ret = self.smtpconn.connect(self.daddr)
atime = time() - atime
self.elapsed = atime
out = '%s %s [%.3fms]' %(ret[0], ret[1], atime)
return out
except smtplib.SMTPConnectError, erro:
return erro
except Exception, erro:
return erro[1]
def Helo_s(self):
try:
atime = time()
self.smtpconn.putcmd('HELO','testing.org')
ret = self.smtpconn.getreply()
atime = time() - atime
self.elapsed += atime
out = '%s %s [%.3f]' %(ret[0], ret[1], atime)
return out
except smtplib.SMTPException, erro:
return erro
def From_s(self):
try:
atime = time()
self.smtpconn.putcmd('MAIL FROM:', '<test@testing.org>')
ret = self.smtpconn.getreply()
atime = time() - atime
self.elapsed += atime
out = '%s %s [%.3f]' %(ret[0], ret[1], atime)
return out
except smtplib.SMTPException, erro:
return erro
def To_s(self):
try:
atime = time()
self.smtpconn.putcmd('RCPT TO:', '<test@testing.org>')
ret = self.smtpconn.getreply()
atime = time() - atime
self.elapsed += atime
out = '%s %s [%.3f]' %(ret[0], ret[1], atime)
if ret[0] == 550: self.relay = False
return out
except smtplib.SMTPException, erro:
return erro
def Quit_s(self):
try:
atime = time()
self.smtpconn.putcmd('QUIT')
ret = self.smtpconn.getreply()
atime = time() - atime
self.elapsed += atime
out = '%s %s [%.3f]' %(ret[0], ret[1], atime)
return out
except smtplib.SMTPException, erro:
return erro
if __name__ == '__main__':
mxcheck = Check_s(argv[1])
print 'BANNER:'
print mxcheck.Bann_s()
print '\nHELO testing.org:'
print mxcheck.Helo_s()
print '\nMAIL FROM: <test@testing.org>:'
print mxcheck.From_s()
print '\nRCPT TO: <test@testing.org>:'
print mxcheck.To_s()
print '\nQUIT:'
print mxcheck.Quit_s()
if mxcheck.relay == True:
print '\nWARNING: This server is open to relay'
else:
print '\nOK - This server is not an open relay'
print 'Transaction time: %.3f' %mxcheck.elapsed
1 comentários:
Assinar:
Postar comentários (Atom)
Postar um comentário