DNS Проверка записей электронной почты через Python - PullRequest
0 голосов
/ 23 февраля 2020

Прежде всего ... извините за полную нелюбовь к DNS-протоколам.

Я пытаюсь использовать python, чтобы проверить, существует ли электронная почта (используя этот код в качестве базы)

import re
import smtplib
import dns.resolver

# Address used for SMTP MAIL FROM command  
fromAddress = 'corn@bt.com'

# Simple Regex for syntax checking
regex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$'

# Email address to verify
inputAddress = input('Please enter the emailAddress to verify:')
addressToVerify = str(inputAddress)

# Syntax check
match = re.match(regex, addressToVerify)
if match == None:
    print('Bad Syntax')
    raise ValueError('Bad Syntax')

# Get domain for DNS lookup
splitAddress = addressToVerify.split('@')
domain = str(splitAddress[1])
print('Domain:', domain)

# MX record lookup
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)


# SMTP lib setup (use debug level for full output)
server = smtplib.SMTP()
server.set_debuglevel(0)

# SMTP Conversation
server.connect(mxRecord)
server.helo(server.local_hostname) ### server.local_hostname(Get local server hostname)
server.mail(fromAddress)
code, message = server.rcpt(str(addressToVerify))
server.quit()

#print(code)
#print(message)

# Assume SMTP response 250 is success
if code == 250:
    print('Success')
else:
    print('Bad')

Это прекрасно работает на VPS-сервере Digitalocean

Но этот код не работает на локальной машине (ошибка тайм-аута). Поэтому я подумал, что это проблема с портом, однако порт 25 не открыт на моем сервере.

Итак, я взял строковое значение server.local_hostname (который, кстати ... не мой домен ... И я не настроил STMP ... И, как я упоминал ранее, я я не открыл порт 25) и не запустил его на моей локальной машине, я все еще получаю сообщение об ошибке тайм-аута.

1) Что-то, чего я не должен понимать, когда дело доходит до протокола DNS ... какие-то идеи? 2) Если между SMTP-серверами происходит какой-либо протокол DNS, возможно ли использовать прокси-сервер для проверки электронной почты?

...