IMAP4_SSL, libgmail, GMail and corporate firewall/proxy

Andrea Gavana andrea.gavana at gmail.com
Thu Feb 17 06:37:23 CET 2011


Hi,

On 17 February 2011 10:28, BJ Swope wrote:
> Imap is not on port 443.  IIRC, it's late and I'm to lazy to even google it
> right now, but it's port 143 isn't it.

I have tried that, and I get the following with imaplib:

Traceback (most recent call last):
  File "D:\MyProjects\gmail.py", line 17, in <module>
    m = imaplib.IMAP4_SSL('imap.gmail.com', 143)
  File "C:\Python26\lib\imaplib.py", line 1138, in __init__
    IMAP4.__init__(self, host, port)
  File "C:\Python26\lib\imaplib.py", line 163, in __init__
    self.open(host, port)
  File "C:\Python26\lib\imaplib.py", line 1149, in open
    self.sock = socket.create_connection((host, port))
  File "C:\Python26\lib\socket.py", line 514, in create_connection
    raise error, msg
socket.error: [Errno 10061] No connection could be made because the
target machine actively refused it


And this one with libgmail:

Traceback (most recent call last):
  File "D:\MyProjects\gmail2.py", line 8, in <module>
    ga.login()
  File "C:\Python26\lib\site-packages\libgmail.py", line 305, in login
    pageData = self._retrievePage(req)
  File "C:\Python26\lib\site-packages\libgmail.py", line 348, in _retrievePage
    resp = self.opener.open(req)
  File "C:\Python26\lib\site-packages\mechanize\_opener.py", line 193, in open
    response = urlopen(self, req, data)
  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
line 344, in _open
    '_open', req)
  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
line 332, in _call_chain
    result = func(*args)
  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
line 1171, in https_open
    return self.do_open(conn_factory, req)
  File "C:\Python26\lib\site-packages\gmail_transport.py", line 143, in do_open
    return ClientCookie.HTTPSHandler.do_open(self,
ProxyHTTPSConnection.new_auth(self.proxy, self.proxy_user,
self.proxy_passwd), req)
  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
line 1118, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 10060] A connection attempt
failed because the connected party did not properly respond after a
period of time, or establishe
d connection failed because connected host has failed to respond>

:-( :-(

Thank you for your answer.


> On Wed, Feb 16, 2011 at 11:58 PM, Andrea Gavana <andrea.gavana at gmail.com>
> wrote:
>>
>> Hi All,
>>
>>    I apologize in advance if I'm going to write very stupid things,
>> my expertise in http/socket/imap stuff is very close to zero. I'm
>> using Python 2.6.5 on Windows XP SP3.
>>
>> I am trying to access my GMail account from my office, and it appears
>> our company's firewall is blocking all SMTP/POP3/IMAP attempts or
>> there is simply something I don't understand. My first try was to use
>> imaplib as follows:
>>
>>
>> import imaplib
>>
>> m = imaplib.IMAP4_SSL('imap.gmail.com', 443)
>> m.login(username, password)
>>
>>
>> And I get the following:
>>
>>
>> Traceback (most recent call last):
>>  File "D:\MyProjects\gmail.py", line 17, in <module>
>>    m = imaplib.IMAP4_SSL('imap.gmail.com', 443)
>>  File "C:\Python26\lib\imaplib.py", line 1138, in __init__
>>    IMAP4.__init__(self, host, port)
>>  File "C:\Python26\lib\imaplib.py", line 163, in __init__
>>    self.open(host, port)
>>  File "C:\Python26\lib\imaplib.py", line 1150, in open
>>    self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
>>  File "C:\Python26\lib\ssl.py", line 350, in wrap_socket
>>    suppress_ragged_eofs=suppress_ragged_eofs)
>>  File "C:\Python26\lib\ssl.py", line 118, in __init__
>>    self.do_handshake()
>>  File "C:\Python26\lib\ssl.py", line 293, in do_handshake
>>    self._sslobj.do_handshake()
>> ssl.SSLError: [Errno 8] _ssl.c:480: EOF occurred in violation of protocol
>>
>>
>> OK. Then I googled back and forth for a possible solution, and I got a
>> hint that (maybe) the problem could be related to proxy
>> authentication. And I tried this solution (which uses SocksiPy) I
>> found on the web (username2 and password2 are the user name and
>> password for our company's proxy):
>>
>> import socks
>> import socket
>>
>> proxy_ip = "10.100.100.20"   # Your proxy IP/DNS here
>>
>> socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxy_ip, 8080, True,
>> username2, password2)
>> socket.socket = socks.socksocket
>>
>> import imaplib
>>
>> m = imaplib.IMAP4_SSL('imap.gmail.com', 443)
>> m.login(username, password)
>>
>>
>> This solution just hangs forever at the line:
>>
>> m = imaplib.IMAP4_SSL('imap.gmail.com', 443)
>>
>> And it never returns (it never gets to the m.login() stuff).
>>
>>
>> Then I tried with libgmail, giving it the option of setting the proxy
>> name and port:
>>
>> import libgmail
>>
>> # Connect from behind a proxy www.myproxy.org:3128 using
>> # proxy authentication user = 'john', password = 'proxy4321'
>> libgmail.PROXY_URL = username2:password2 at my_company_proxy:443'  #
>> Define the proxy
>>
>> ga = libgmail.GmailAccount(username, password)
>> ga.login()
>>
>>
>> And I got this at first:
>>
>> Traceback (most recent call last):
>>  File "D:\MyProjects\gmail2.py", line 8, in <module>
>>    ga.login()
>>  File "C:\Python26\lib\site-packages\libgmail.py", line 305, in login
>>    pageData = self._retrievePage(req)
>>  File "C:\Python26\lib\site-packages\libgmail.py", line 340, in
>> _retrievePage
>>    req = ClientCookie.Request(urlOrRequest)
>>  File "C:\Python26\lib\site-packages\mechanize\_request.py", line 31,
>> in __init__
>>    if not _rfc3986.is_clean_uri(url):
>>  File "C:\Python26\lib\site-packages\mechanize\_rfc3986.py", line 63,
>> in is_clean_uri
>>    return not bool(BAD_URI_CHARS_RE.search(uri))
>> TypeError: expected string or buffer
>>
>>
>> Then I brutally hacked into mechanize here and there and I was able to
>> fix all non-internet related errors. And when I try the libgmail
>> solution above now I get:
>>
>> Traceback (most recent call last):
>>  File "D:\MyProjects\gmail2.py", line 8, in <module>
>>    ga.login()
>>  File "C:\Python26\lib\site-packages\libgmail.py", line 305, in login
>>    pageData = self._retrievePage(req)
>>  File "C:\Python26\lib\site-packages\libgmail.py", line 348, in
>> _retrievePage
>>    resp = self.opener.open(req)
>>  File "C:\Python26\lib\site-packages\mechanize\_opener.py", line 193, in
>> open
>>    response = urlopen(self, req, data)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 344, in _open
>>    '_open', req)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 332, in _call_chain
>>    result = func(*args)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 1171, in https_open
>>    return self.do_open(conn_factory, req)
>>  File "C:\Python26\lib\site-packages\gmail_transport.py", line 145, in
>> do_open
>>    return ClientCookie.HTTPSHandler.do_open(self,
>> ProxyHTTPSConnection.new_auth(self.proxy, self.proxy_user,
>> self.proxy_passwd), req)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 1118, in do_open
>>    raise URLError(err)
>> urllib2.URLError: <urlopen error Tunnel connection failed: 403
>> Forbidden ( The ISA Server denied the specified Uniform Resource
>> Locator (URL).  )>
>>
>>
>> Just in case, I have tried also with port 80, with similar results:
>>
>> Traceback (most recent call last):
>>  File "D:\MyProjects\gmail2.py", line 8, in <module>
>>    ga.login()
>>  File "C:\Python26\lib\site-packages\libgmail.py", line 305, in login
>>    pageData = self._retrievePage(req)
>>  File "C:\Python26\lib\site-packages\libgmail.py", line 348, in
>> _retrievePage
>>    resp = self.opener.open(req)
>>  File "C:\Python26\lib\site-packages\mechanize\_opener.py", line 193, in
>> open
>>    response = urlopen(self, req, data)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 344, in _open
>>    '_open', req)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 332, in _call_chain
>>    result = func(*args)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 1171, in https_open
>>    return self.do_open(conn_factory, req)
>>  File "C:\Python26\lib\site-packages\gmail_transport.py", line 145, in
>> do_open
>>    return ClientCookie.HTTPSHandler.do_open(self,
>> ProxyHTTPSConnection.new_auth(self.proxy, self.proxy_user,
>> self.proxy_passwd), req)
>>  File "C:\Python26\lib\site-packages\mechanize\_urllib2_fork.py",
>> line 1118, in do_open
>>    raise URLError(err)
>> urllib2.URLError: <urlopen error Tunnel connection failed: 407 Proxy
>> Authentication Required ( The ISA Server requires authorization to
>> fulfill the request. Access to the Web Proxy filter is denied.  )>
>>
>>
>> What am I doing wrong? Is there anything I should do differently? Or
>> anything else I should try?
>>
>> Thank you for your help, any suggestion is highly appreciated.
>>
>>
>> Andrea.
>>
>> "Imagination Is The Only Weapon In The War Against Reality."
>> http://xoomer.alice.it/infinity77/
>>
>> ==> Never *EVER* use RemovalGroup for your house removal. You'll
>> regret it forever.
>> http://thedoomedcity.blogspot.com/2010/03/removal-group-nightmare.html <==
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>
>



-- 
Andrea.

"Imagination Is The Only Weapon In The War Against Reality."
http://xoomer.alice.it/infinity77/

==> Never *EVER* use RemovalGroup for your house removal. You'll
regret it forever.
http://thedoomedcity.blogspot.com/2010/03/removal-group-nightmare.html <==



More information about the Python-list mailing list