2011-09-04 6 views
4

나는 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 주소가 동적인지 정적인지 어떻게 확인할 수 있습니까?

대부분의 서버가 내 연결을 거부하는 이유는 무엇입니까? 아니면 뭔가 더있어?

+0

책임있는 ISP는 동적 IP 범위를 공개 스팸 차단 목록에 제출합니다. 역 DNS에서 이름 지정 패턴을 기반으로하거나 최악의 경우 차단 된 도매를 기반으로 다른 제품을 강요하거나 추측해야합니다. – tripleee

답변

4

음, 당신의 문제는 바로 이것이다 :

# Tried both port 465 and 587 (can't test port 25 since it's blocked by my ISP) 

ISP가이 포트에서 나가는 연결을 허용하지 않는 경우 구글의 MX 서버가 다음 SMTP 메시지를 보낼 수 없습니다, 포트 25에서 수신 대기 네가하는 길. ISP와 함께 정리해야합니다.

메시지 거부와 관련하여 직접 전자 메일을 보내면 거부되거나 스팸으로 신고 될 가능성이 높아집니다. 특히 "보낸 사람"주소를 IP 주소와 연결된 도메인과 일치하지 않는 주소로 설정하거나 SMTP 클라이언트가 EHLO 메시지에서 일치하지 않는 도메인을 보내는 경우 또는 메시지 내용이 "스팸"으로 보이는 경우 특히 그렇습니다. 실제 동작은 개별 MX 서버가 구성된 방식에 따라 다릅니다.

0

위에 설명 된 MX 이메일에 직접 전송되는 메일은 "421-4.7.0"이라는 오류 메시지와 함께 Gmail의 SMTP 서버에 의해 차단되지만 MailEnable과 같은 다른 많은 SMTP 서버는 Direct To MX를 허용합니다.

다음 웹 사이트에는 에 대한 Direct to MX 코드에 대한 .NET 및 PHP 소스 코드가 있습니다. SUDS을 사용하여 파이썬에서 웹 서비스를 사용할 수 있습니다.

관련 문제