Gmail 계정을 에 동기화하기 위해 OfflineIMAP을 설정하려고 합니다 ~/Mail/Gmail
.~/.offlineimaprc
여기. 하지만 OfflineIMAP은 Gmail에 전혀 연결할 수 없습니다. 이것은 다음과 같은 방법으로 OfflineIMAP을 실행하여 내가 받은 디버그 메시지입니다 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:이 답변으로 시작하세요뿌리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를 실행하고 있습니다. 유통과 관련이 있을까요?
답변1
지문(변경 가능)을 수동으로 지정하는 대신 오프라인 시스템 인증서가 저장된 위치를 오프라인imap에 알려주고 자동으로 체인을 확인하도록 할 수 있습니다.
[Repository somerepos-remote]
type = Gmail
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
이것이 sslcacertfile이 하는 일입니다.
Ubuntu를 사용하지 않는 사용자가 이 내용을 보게 되면 배포판에 따라 위치가 다를 수 있다는 점을 염두에 두십시오.
답변2
원격 Gmail 계정을 설명하는 .offlineimaprc 섹션에 다음 줄을 추가해야 합니다.
cert_fingerprint=f3043dd689a2e7dddfbef82703a6c65ea9b634c1
Gmail의 imap 서버에 대한 SSL 인증서입니다.
답변3
아니요, OpenSSL에 인증서가 누락된 것이 아닙니다. 상대방이 인증서를 보내지 않았기 때문에 SSL 핸드셰이크가 실패한 것입니다.
SSL이 활성화되지 않은 특정 서비스에 연결할 때 유사한 오류가 나타날 수 있습니다.
openssl에 -debug 옵션을 추가하면 무엇을 얻게 됩니까?
답변:
read from 0x9cd8b98 [0x9cde140] (7 bytes => 0 (0x0))
따라서 소켓에서 아무것도 읽지 않습니다(다른 쪽 끝이나 무언가를 보내기 전에 그 사이에 닫혀 있음을 나타냄).
네트워크에 일종의 프록시가 있습니까? 로컬 시스템에 일종의 iptables 리디렉션이나 바이러스 백신 소프트웨어가 있습니까?
tshark -Vi any port 993
openssl 명령을 실행하면 무엇을 얻게 됩니까?