J'essaie de configurer OfflineIMAP pour synchroniser mon compte Gmail avec ~/Mail/Gmail
. J'utilise un assez basique ~/.offlineimaprc
d' ici . Mais OfflineIMAP ne se connecte pas du tout à Gmail. Voici le message de débogage que j'obtiens (en exécutant OfflineIMAP en tant que offlineimap -o -d imap
:
OfflineIMAP 6.3.4
Copyright 2002-2011 John Goerzen & contributors.
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 pouvait être dû à mon blocage de FAI imap.gmail.com/imap.googlemail.com
, mais je suis capable de me 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: À 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 certificate available
---
No client certificate 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 certificat manquant dans OpenSSL. La même chose pourrait-elle arriver à OfflineIMAP?
EDIT 2: J'ai essayé les mêmes commandes OpenSSL sur un autre serveur (sur le même réseau) exécutant Mandriva Linux version 2009.1 et apparemment la connexion a fonctionné ( sortie de débogage ). J'utilise Ubuntu 12.04 avec OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Serait-ce lié à la distribution?
la source
Réponses:
Au lieu de spécifier manuellement l'empreinte digitale (qui peut changer), vous pouvez plutôt indiquer à offlineimap où vos certificats système locaux sont stockés, puis le faire vérifier automatiquement la chaîne.
Le sslcacertfile est ce qui fait l'affaire.
Si les utilisateurs non-Ubuntu voient cela, gardez à l'esprit que l'emplacement est probablement différent sur votre distribution.
la source
sslcacertfile
chemin sur OSX?sslcacertfile = /usr/local/etc/openssl/cert.pem
à rudolfochrist.github.io/blog/2015/03/21/… .Vous devez ajouter la ligne suivante à la section dans .offlineimaprc décrivant votre compte Gmail distant:
Il s'agit du certificat SSL du serveur imap de Gmail.
la source
Non, ce n'est pas OpenSSL qui manque un certificat, c'est un échec de négociation SSL car l'autre extrémité n'a pas envoyé son certificat.
Vous obtiendriez une erreur similaire lorsque vous vous connectez à un service non compatible SSL.
Qu'obtenez-vous lorsque vous ajoutez l'option -debug à openssl?
réponse:
Il n'a donc 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 iptables ou d'antivirus sur la machine locale?
Que
tshark -Vi any port 993
vous donne-t-il lorsque vous essayez la commande openssl?la source
-debug
option. Apparemment, je peux me connecter à partir d'un autre serveur sur le même réseau. Je pense maintenant que cela pourrait être spécifique à la distribution. J'ai également mis à jour ma question.