smtp = smtplib.SMTP(主机) > (mail.host)?

smtp = smtplib.SMTP(host) > (mail.host)?

我有一个扫描脚本,目前通过连接到 SMTP 服务器、打印结果并移动到列表中的下一个服务器来工作。这是第一个连接代码:

def sendchk(listindex, host, user, password):   # seperated function for checking
try:
    smtp = smtplib.SMTP(host)
    smtp.login(user, password)
    code = smtp.ehlo()[0]

失败后"except":

smtp.quit()
except(socket.gaierror, socket.error, socket.herror, smtplib.SMTPException), msg:
    print "[-] Login Failed:", host, user, password
    pass

我试图让它对同一主机重复相同的代码,添加一个子域。 "mail." 我认为这行得通:

smtp.quit()
except(socket.gaierror, socket.error, socket.herror, smtplib.SMTPException), msg:
    print "[-] Login Failed:", host, user, password
    sub1 = 'mail.'
    host2 = '{0}@{1}'.format(sub1, host)
    smtp = smtplib.SMTP(host2)

但是卡住了,说服务器列表有问题。 在此处将前缀注入主机的更好方法是什么?

没有测试:如果 sub1 是 "mail." 并且 host 是 "myhost.com" 那么 '{0}@{1}'.format(sub1, host) 将导致 mail.@myhost.com。那真的是您的子域名吗?我想应该是 mail.myhost.com。如果是这样,请在您的格式字符串中删除“@”。