Không thể sử dụng OfflineIMAP để đồng bộ hóa Gmail


10

Tôi đang cố gắng thiết lập OfflineIMAP để đồng bộ hóa tài khoản Gmail của mình ~/Mail/Gmail. Tôi đang sử dụng một cơ bản khá ~/.offlineimaprctừ đây . Nhưng OfflineIMAP hoàn toàn không kết nối với Gmail. Đây là thông báo gỡ lỗi tôi nhận được (bằng cách chạy OfflineIMAP dưới dạng 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

Lúc đầu, tôi nghĩ rằng điều này có thể là do việc chặn ISP của tôi imap.gmail.com/imap.googlemail.com, nhưng tôi có thể kết nối với nó bằng cách sử dụng 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 '^]'.

Có ý kiến ​​gì không?

EDIT 1: Từ câu trả lời này trên SuperUser , tôi đã thử kết nối với imap.googlemail.comqua SSL bằng cách sử dụng openssl s_client -connect imap.googlemail.com:993. Điều này mang lại cho tôi:

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

Điều này trông giống như một vấn đề chứng chỉ bị thiếu trong OpenSSL. Điều tương tự có thể xảy ra với OfflineIMAP không?

EDIT 2: Tôi đã thử các lệnh OpenSSL tương tự trên một máy chủ khác (trên cùng một mạng) chạy Mandriva Linux phát hành 2009.1 và rõ ràng kết nối đã hoạt động ( đầu ra gỡ lỗi ). Tôi đang chạy Ubuntu 12.04 với OpenSSL / LibSSL 1.0.1-4ubfox5.5. Điều này có thể liên quan đến distro?


Nó có thể giúp đăng phiên bản offlineimap của bạn, vì dự án đó có khá nhiều phiên bản trong tự nhiên và một số trong số chúng bị hỏng nặng. Hãy thử danh sách gửi thư của họ, thông tin mà bạn có thể tìm thấy trên trang chủ của họ .
jw013

Câu trả lời:


12

Thay vì chỉ định thủ công dấu vân tay (có thể thay đổi), thay vào đó, bạn có thể thông báo cho offlineimap nơi chứng chỉ hệ thống cục bộ của bạn được lưu trữ và sau đó để nó tự động xác minh chuỗi.

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

Sslcacertfile là những gì làm cho lừa.

Nếu người dùng không phải là Ubuntu đang nhìn thấy điều này, hãy nhớ rằng vị trí rất có thể khác nhau trên bản phân phối của bạn.


4
Bất kỳ ý tưởng nơi sslcacertfileđường dẫn trên OSX?
Meitham

1
@Meitham trông giống như sslcacertfile = /usr/local/etc/openssl/cert.pemtheo rudolfochrist.github.io/blog/2015/03/21/iêu .
tekknolagi

1

Bạn nên thêm dòng sau vào phần trong .offlineimaprc mô tả tài khoản Gmail từ xa của bạn:

cert_fingerprint=f3043dd689a2e7dddfbef82703a6c65ea9b634c1

Đây là chứng chỉ SSL của máy chủ imap của Gmail.


0

Không, không phải OpenSSL thiếu chứng chỉ, đó là lỗi bắt tay SSL vì đầu kia không gửi chứng chỉ.

Bạn sẽ gặp một lỗi tương tự khi bạn kết nối với một số dịch vụ không hỗ trợ SSL.

Bạn nhận được gì khi thêm tùy chọn -debug vào openssl?

câu trả lời:

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

Vì vậy, nó không đọc được gì từ ổ cắm (cho thấy nó đã bị đóng ở đầu kia hoặc thứ gì đó ở giữa trước khi gửi bất cứ thứ gì)

Có một số loại proxy trên mạng của bạn? Một số loại chuyển hướng iptables hoặc chống vi-rút trên máy cục bộ?

Điều gì tshark -Vi any port 993mang lại cho bạn khi bạn thử lệnh openssl?


Cảm ơn! Đây là kết quả của việc chạy OpenSSL với -debugtùy chọn. Rõ ràng tôi có thể kết nối từ một máy chủ khác trên cùng một mạng. Bây giờ tôi đang nghĩ rằng điều này có thể được phân phối cụ thể. Tôi cũng đã cập nhật câu hỏi của mình.
tirmm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.