2010-08-02 4 views
5

poplib 또는 imaplib도 프록시 지원을 제공하지 않으며 내 google-fu 시도에도 불구하고 이에 대한 많은 정보를 찾을 수 없습니다.Python - 프록시를 통해 POP 또는 IMAP을 통해 이메일을 가져올 수 있습니까?

저는 다양한 imap/pop 지원 서버에서 이메일을 가져 오기 위해 python을 사용하고 있으며 프록시를 통해이를 수행 할 수 있어야합니다.

이상적으로, 나는 python으로 직접 할 수 있지만, 래퍼 (외부 프로그램/스크립트, OSX 기반)를 사용하여 모든 트래픽이 프록시를 통과하도록 할 수 있으면 좋겠다. 더 나은 것.

누구든지 저에게 손을 줄 수 있습니까? 나는 파이썬에서 프록시를 통해 이메일을 가져와야하는 유일한 사람이라고 상상할 수 없다 ...

** EDIT Title 편집으로 HTTP를 제거한다. 피곤 하셔서, 그 사람들에게 미안 **

내가 사용하려고하는 프록시는 http 외에 양말을 허용합니다.

http를 통해 Pop 또는 Imap 작업은별로 의미가 없지만 (스테이트 풀 대 스테이트리스) 양말을 사용하면 내가 원하는 것을 수행 할 수 있습니다.

지금까지 내가 원하는 것을 얻기위한 유일한 방법은 imaplib의 더러운 해킹 인 것 같습니다 ... 가능하다면 그것을 피하십시오.

+1

궁금합니다. 파이썬 없이도 http 프록시를 통해 imap을 터널링하는 방법은 무엇입니까? – hop

+0

제목에서 Http를 제거했습니다. 내 실수는 양말을 의미합니다 ... – Vermillon

답변

0

정확하게 이해한다면 둥근 구멍에 사각 못을 넣으려고합니다.

HTTP 프록시는 HTTP를 "말하는"방법 만 알고 있으므로 POP 또는 IMAP 서버에 직접 연결할 수 없습니다.

이렇게하려면 메일 서버와 통신 할 수 있도록 자신의 서버를 구현해야합니다. HTTP 요청을 수신 한 다음 메일 서버에 적절한 호출을합니다. 예컨대 :이 당신이 stateless 하나에 상태 프로토콜을 변환해야 할 것 때문에 내가 모르는 것이 얼마나 실제

.

+0

당신은 100 % 맞습니다, 양말 기능을 언급하는 것을 잊었습니다. 나는 제목에서 HTTP를 제거했다. 유감스럽게도, 나는 피곤하다. – Vermillon

+3

HTTP 프록시의 'CONNECT'메소드를 사용하면 tcp 클라이언트 -> 서버 프로토콜을 실행할 수있다. * HTTP * 프록시가 허용하는 경우 대부분의 기본 구성은 'CONNECT'요청을 포트 443으로 제한합니다. – MattH

+0

무슨 뜻인지 이해하지만 thunderbird가 http 프록시를 통해 어떻게 연결합니까? –

4

답변을 포장하는데주의를 기울여야 ... Socksipy를 사용하는 번거 로움없이 프록시를 통해 이동하는 파이썬 스크립트에서 트래픽이 강제로 신속하고 더러운 방법이있다 (감사 글로벌 소켓 재정 분명 조금 잔인하지만 제대로 서브 클래스 IMAP4 및 IMAP4_SSL에 시간을 찾을 때까지 빠른 수정으로 작동)

import socks 
import socket 
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,proxy_ip,port,True) 
socket.socket = socks.socksocket 

나에게 그런 식으로 가리키는 위해 MattH.

+0

+1 또한 SMTP_SSL 작동합니다 : D – alexandrul

+0

나를 위해 작동하지 않았다, "IOError : [Errno 소켓 오류] ('시간 초과',)", 모든 제안? – ImadOS