나는 smtp 프로토콜에 대해 더 많은 것을 배우기 위해 파이썬에서 놀아 보려고 노력했다. 좀 더 정확하게 나는 메일을 호스트의 SMTP 서버에 곧바로 보내려고했지만 거의 성공하지 못했다. 예를 들어 SMTP를 호스트의 MX 레코드에 직접 연결
, 나는이 gmail.com 주소로 메일을 보내하고 싶은 말은, 내가 gmail.com에 대한 MX 레코드를 조회 : 다음>> nslookup -type=MX gmail.com
gmail.com MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
gmail.com MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com
나는 파이썬에서 다음을 수행합니다
import smtplib
# Tried both port 465 and 587 (can't test port 25 since it's blocked by my ISP)
s = smtplib.SMTP("alt1.gmail-smtp-in.l.google.com", 587)
나는 여러 가지 시도하고, 모든하지만 하나 나는 항상있어 :
"[errno를 10051] 소켓 작업을 연결할 수없는 네트워크에 시도했습니다" 또는
"[Errno 10060] 연결된 당사자가 일정 기간 후에 제대로 응답하지 않았거나 conneted 호스트가 응답하지 않아 확립 된 연결이 실패했기 때문에 연결 시도가 실패했습니다" 예외.
일부 메일 서버는 IP에서 역방향 조회를 수행하고 도메인이없는 경우 연결을 거부합니다. 그들은 어떻게합니까?
나는 또한 많은 메일 서버가 동적 IP 주소 (분명히 내 ISP의 개인 고객으로 있음)의 수신 메일을 거부한다는 것을 읽었습니다. IP 주소가 동적인지 정적인지 어떻게 확인할 수 있습니까?
대부분의 서버가 내 연결을 거부하는 이유는 무엇입니까? 아니면 뭔가 더있어?
책임있는 ISP는 동적 IP 범위를 공개 스팸 차단 목록에 제출합니다. 역 DNS에서 이름 지정 패턴을 기반으로하거나 최악의 경우 차단 된 도매를 기반으로 다른 제품을 강요하거나 추측해야합니다. – tripleee