Estou tentando configurar o OfflineIMAP para sincronizar minha conta do Gmail ~/Mail/Gmail
. Eu estou usando um básico muito ~/.offlineimaprc
de aqui . Mas o OfflineIMAP não se conecta ao Gmail. Esta é a mensagem de depuração que estou recebendo (executando OfflineIMAP como 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
No começo, pensei que isso poderia ser devido ao bloqueio do meu ISP imap.gmail.com/imap.googlemail.com
, mas consigo conectar-me usando 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 '^]'.
Alguma ideia?
EDIT 1: A partir desta resposta no SuperUser , tentei conectar-me imap.googlemail.com
via SSL usando openssl s_client -connect imap.googlemail.com:993
. Isso me dá:
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
---
Parece um problema de certificado ausente no OpenSSL. O mesmo pode estar acontecendo com o OfflineIMAP?
EDIÇÃO 2: Tentei os mesmos comandos do OpenSSL em outro servidor (na mesma rede) executando o Mandriva Linux versão 2009.1 e, aparentemente, a conexão funcionou ( saída de depuração ). Estou executando o Ubuntu 12.04 com OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Isso pode estar relacionado à distribuição?
fonte
Respostas:
Em vez de especificar manualmente a impressão digital (que pode ser alterada), você pode informar offlineimap onde estão armazenados os certificados do sistema local e depois verificar automaticamente a cadeia.
O sslcacertfile é o que faz o truque.
Se usuários que não são do Ubuntu estiverem vendo isso, lembre-se de que o local provavelmente é diferente na sua distribuição.
fonte
sslcacertfile
caminho no OSX?sslcacertfile = /usr/local/etc/openssl/cert.pem
acordo com rudolfochrist.github.io/blog/2015/03/21/… .Você deve adicionar a seguinte linha à seção .offlineimaprc que descreve sua conta remota do Gmail:
Este é o certificado SSL do servidor imap do Gmail.
fonte
Não, o OpenSSL não possui um certificado, é uma falha de handshake SSL porque a outra extremidade não enviou seu certificado.
Você receberá um erro semelhante ao se conectar a algum serviço não habilitado para SSL.
O que você ganha quando adiciona a opção -debug ao openssl?
responda:
Portanto, ele não leu nada do soquete (sugerindo que estava fechado pelo outro lado ou algo mais antes de enviar qualquer coisa)
Existe algum tipo de proxy na sua rede? Algum tipo de redirecionamento de iptables ou antivírus na máquina local?
O que
tshark -Vi any port 993
você oferece quando você tenta o comando openssl?fonte
-debug
opção Aparentemente, eu consigo conectar de outro servidor na mesma rede. Agora estou pensando que isso poderia ser específico da distribuição. Também atualizei minha pergunta.