Não é possível usar o OfflineIMAP para sincronizar o Gmail

11

Estou tentando configurar o OfflineIMAP para sincronizar minha conta do Gmail com ~/Mail/Gmail . Estou usando um ~/.offlineimaprc bem básico 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, achei que isso poderia ser devido ao bloqueio do meu provedor de acesso à Internet imap.gmail.com/imap.googlemail.com , mas consigo me conectar a ele 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 idéia?

EDIT 1: A partir desta resposta em SuperUser , tentei conectar-me a 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
---

Isso parece um problema de certificado ausente no OpenSSL. O mesmo poderia estar acontecendo com o OfflineIMAP também?

EDIT 2: Eu tentei os mesmos comandos 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 o OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Isso poderia estar relacionado à distribuição?

    
por tirmm 11.09.2012 / 07:44

3 respostas

12

Em vez de especificar manualmente a impressão digital (que pode ser alterada), você pode informar ao offlineimap onde os certificados do sistema local estão armazenados e depois verificar automaticamente a cadeia.

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

O arquivo sslcacert é o que faz o truque.

Se usuários que não são usuários do Ubuntu estão vendo isso, lembre-se de que o local provavelmente é diferente em sua distro.

    
por 02.10.2012 / 05:33
1

Você deve adicionar a seguinte linha à seção em .offlineimaprc que descreve sua conta remota do Gmail:

cert_fingerprint=f3043dd689a2e7dddfbef82703a6c65ea9b634c1

Este é o certificado SSL do servidor imap do Gmail.

    
por 29.09.2012 / 17:33
0

Não, não está faltando um certificado do OpenSSL, é uma falha de handshake SSL porque a outra extremidade não enviou seu certificado.

Você receberia um erro semelhante quando se conectasse a algum serviço não SSL ativado.

O que você ganha quando adiciona a opção -debug ao openssl?

resposta:

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

Portanto, ele não leu nada do soquete (sugerindo que foi fechado pelo outro lado ou algo intermediário antes de enviar qualquer coisa)

Existe algum tipo de proxy na sua rede? Algum tipo de redirecionamento ou antivírus do iptables na máquina local?

O que o tshark -Vi any port 993 lhe dá quando você tenta o comando openssl?

    
por 11.09.2012 / 08:17