Impossible d'utiliser OfflineIMAP pour synchroniser Gmail

J'essaye d'installer OfflineIMAP pour synchroniser mon count Gmail avec ~/Mail/Gmail . J'utilise un ~/.offlineimaprc assez basique d' ici . Mais OfflineIMAP ne se connecte pas à Gmail du tout. C'est le message de debugging que offlineimap -o -d imap (en exécutant OfflineIMAP en tant que offlineimap -o -d imap :

 OfflineIMAP 6.3.4 Copyright 2002-2011 John Goerzen & consortingbutors. Licensed under the GNU GPL v2+ (v2 or any later version). Debug mode: Forcing to singlethreaded. Now debugging for imap: IMAP protocol debugging Now debugging for : Other offlineimap related sync messages Account sync Gmail: ***** Processing account Gmail Copying folder structure from IMAP to Maildir Establishing connection to imap.gmail.com:993. DEBUG[imap]: 06:28.69 Account sync Gmail imaplib2 version 2.24 DEBUG[imap]: 06:28.69 Account sync Gmail imaplib2 debug level 5, buffer level 3 WARNING: Error occured attempting to sync account 'Gmail': Traceback (most recent call last): File "/usr/lib/pymodules/python2.7/offlineimap/accounts.py", line 177, in syncrunner self.sync() File "/usr/lib/pymodules/python2.7/offlineimap/accounts.py", line 235, in sync remoterepos.syncfoldersto(localrepos, [statusrepos]) File "/usr/lib/pymodules/python2.7/offlineimap/repository/Base.py", line 124, in syncfoldersto srcfolders = src.getfolders() File "/usr/lib/pymodules/python2.7/offlineimap/repository/IMAP.py", line 276, in getfolders imapobj = self.imapserver.acquireconnection() File "/usr/lib/pymodules/python2.7/offlineimap/imapserver.py", line 323, in acquireconnection elif isinstance(e, socket.error) and e.args[0] == errno.ECONNREFUSED: NameError: global name 'errno' is not defined ***** Finished processing account Gmail 

Au début, je pensais que cela pourrait être dû à mon ISP bloquant imap.gmail.com/imap.googlemail.com , mais je suis capable de se connecter à l'aide de telnet imap.googlemail.com 993 :

 telnet imap.googlemail.com 993 Trying 173.194.79.16... Connected to googlemail-imap.l.google.com. Escape character is '^]'. 

Des idées?

EDIT 1: A partir de cette réponse sur SuperUser , j'ai essayé de me connecter à imap.googlemail.com via SSL en utilisant openssl s_client -connect imap.googlemail.com:993 . Cela me donne:

 CONNECTED(00000003) 3078125768:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177: --- no peer certificatee available --- No client certificatee CA names sent --- SSL handshake has read 0 bytes and written 226 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE --- 

Cela ressemble à un problème de certificate manquant dans OpenSSL. La même chose pourrait-elle arriver à OfflineIMAP aussi?

EDIT 2: J'ai essayé les mêmes commands OpenSSL sur un autre server (sur le même réseau) exécutant Mandriva Linux version 2009.1 et apparemment la connection a fonctionné ( sortie de debugging ). Je cours Ubuntu 12.04 avec OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Cela pourrait-il être lié à la dissortingbution?

Au lieu de spécifier manuellement l'empreinte digitale (qui peut changer), vous pouvez au contraire indiquer offlineimap où sont stockés les certificates de votre système local, puis vérifier automatiquement la string.

 [Repository somerepos-remote] type = Gmail sslcacertfile = /etc/ssl/certs/ca-certificatees.crt 

Le sslcacertfile est ce qui fait l'affaire.

Si les users non-Ubuntu voient cela, gardez à l'esprit que l'location est probablement différent sur votre distro.

Vous devez append la ligne suivante à la section dans .offlineimaprc décrivant votre count Gmail distant:

 cert_fingerprint=f3043dd689a2e7dddfbef82703a6c65ea9b634c1 

C'est le certificate SSL du server IMAP de Gmail.

Non, ce n'est pas OpenSSL qui manque un certificate, c'est un échec de handshake SSL car l'autre extrémité n'a pas envoyé son certificate.

Vous obtiendrez une erreur similaire lorsque vous vous connectez à un service non SSL.

Qu'obtenez-vous lorsque vous ajoutez l'option -debug à openssl?

répondre:

 read from 0x9cd8b98 [0x9cde140] (7 bytes => 0 (0x0)) 

Donc, il n'a rien lu de la prise (suggérant qu'il a été fermé par l'autre extrémité ou quelque chose entre les deux avant d'envoyer quoi que ce soit)

Existe-t-il une sorte de proxy sur votre réseau? Une sorte de redirection d'iptables ou d'antivirus sur la machine locale?

Qu'est-ce que tshark -Vi any port 993 vous donne lorsque vous essayez la command openssl?