IMAP4_SSL, libgmail, GMail and corporate firewall/proxy


A

Andrea Gavana

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:p[email protected]_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 <==
 
Ad

Advertisements

Joined
Aug 11, 2011
Messages
1
Reaction score
0
Hi Andrea

Did you ever solve this problem? Cos it's making me tear my hair out right now. Thanks!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top