OfflineIMAP을 사용하여 Gmail을 동기화 할 수 없습니다


10

Gmail 계정을에 동기화하기 위해 OfflineIMAP을 설정하려고합니다 ~/Mail/Gmail. 나는 여기~/.offlineimaprc 에서 꽤 기본 을 사용하고 있습니다 . 그러나 OfflineIMAP은 Gmail에 전혀 연결되지 않습니다. 이것은 내가 받고있는 디버그 메시지입니다 (오프라인 IMAP을 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

처음에는 이것이 ISP 차단 때문일 수 있다고 생각 imap.gmail.com/imap.googlemail.com했지만 다음을 사용하여 연결할 수 있습니다 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 '^]'.

어떤 아이디어?

편집 1 : SuperUser 의이 답변 에서을imap.googlemail.com 사용하여 SSL 을 통해 연결을 시도했습니다 openssl s_client -connect imap.googlemail.com:993. 이것은 나에게 준다 :

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
---

이것은 OpenSSL에서 누락 된 인증서 문제인 것 같습니다. OfflineIMAP에서도 같은 일이 일어날 수 있습니까?

편집 2 : Mandriva Linux 릴리스 2009.1을 실행하는 다른 서버 (같은 네트워크의)에서 동일한 OpenSSL 명령을 시도했지만 연결이 제대로 작동했습니다 ( 디버그 출력 ). OpenSSL / LibSSL 1.0.1-4ubuntu5.5와 함께 Ubuntu 12.04를 실행하고 있습니다. 이것이 배포판과 관련이있을 수 있습니까?


해당 프로젝트에는 야생 버전이 상당히 많고 일부는 잘못되어 있기 때문에 offlineimap 버전을 게시하는 것이 도움이 될 수 있습니다. 홈페이지에서 찾을 수있는 메일 링리스트를 사용해보십시오 .
jw013

답변:


12

변경 가능한 지문을 수동으로 지정하는 대신 로컬 시스템 인증서가 저장된 위치를 offlineimap에 알리고 체인을 자동으로 확인하도록 할 수 있습니다.

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

sslcacertfile이 트릭을 수행하는 것입니다.

우분투 사용자가 아닌 경우, 지역에 따라 위치가 다를 수 있습니다.


4
sslcacertfileOSX 의 경로가 어디인지 아십니까?
Meitham

1
@Meitham은 rudolfochrist.github.io/blog/2015/03/21/… sslcacertfile = /usr/local/etc/openssl/cert.pem에 따르면 보입니다 .
tekknolagi

1

원격 Gmail 계정을 설명하는 .offlineimaprc 섹션에 다음 줄을 추가해야합니다.

cert_fingerprint=f3043dd689a2e7dddfbef82703a6c65ea9b634c1

이것은 Gmail imap 서버의 SSL 인증서입니다.


0

아니요, 인증서가 누락 된 OpenSSL이 아니며 다른 쪽 끝이 인증서를 보내지 않았기 때문에 SSL 핸드 셰이크 실패입니다.

SSL을 사용하지 않는 일부 서비스에 연결하면 비슷한 오류가 발생합니다.

openssl에 -debug 옵션을 추가하면 무엇을 얻을 수 있습니까?

대답:

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

그래서 소켓에서 아무것도 읽지 않습니다 (다른 쪽 끝이나 무언가를 보내기 전에 그 사이에 무언가가 닫혀 있다고 제안합니다)

네트워크에 일종의 프록시가 있습니까? 로컬 컴퓨터에서 일종의 iptables 리디렉션 또는 바이러스 백신?

tshark -Vi any port 993openssl 명령을 시도 할 때 무엇을 제공합니까?


감사! 다음-debug옵션으로 OpenSSL을 실행 한 결과입니다 . 분명히 같은 네트워크의 다른 서버에서 연결할 수 있습니다. 나는 이것이 배포판에 따라 달라질 수 있다고 생각하고 있습니다. 내 질문도 업데이트했습니다.
tirmm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.