ไม่สามารถใช้ OfflineIMAP เพื่อซิงค์ Gmail


10

ฉันพยายามที่จะติดตั้ง OfflineIMAP เพื่อซิงค์บัญชี Gmail ~/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:จากคำตอบเกี่ยวกับเรื่องนี้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:ฉันลองใช้คำสั่ง OpenSSL เดียวกันบนเซิร์ฟเวอร์อื่น (ในเครือข่ายเดียวกัน) ที่เรียกใช้ Mandriva Linux รีลีส 2009.1 และเห็นได้ชัดว่าการเชื่อมต่อใช้งานได้ ( debug output ) ฉันใช้ Ubuntu 12.04 กับ OpenSSL / LibSSL 1.0.1-4ubuntu5.5 สิ่งนี้อาจเกี่ยวข้องกับ distro หรือไม่


มันอาจช่วยในการโพสต์เวอร์ชันแผนที่แบบออฟไลน์ของคุณเนื่องจากโปรเจ็กต์นั้นมีรุ่นค่อนข้างน้อยในบางรุ่นและบางรุ่นเสียอย่างรุนแรง ลองนอกจากนี้ยังรายชื่อผู้รับจดหมายของพวกเขาที่มีข้อมูลคุณจะพบกับหน้าบ้านของพวกเขา
jw013

คำตอบ:


12

แทนที่จะระบุลายนิ้วมือด้วยตนเอง (ซึ่งสามารถเปลี่ยนแปลงได้) คุณสามารถบอกออฟไลน์แผนที่ที่เก็บใบรับรองระบบในเครื่องของคุณจากนั้นให้ตรวจสอบสายโซ่โดยอัตโนมัติ

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

sslcacertfile เป็นสิ่งที่หลอกลวง

หากผู้ใช้ที่ไม่ใช่อูบุนตูเห็นสิ่งนี้โปรดจำไว้ว่าสถานที่ตั้งของคุณนั้นมีความแตกต่างมากที่สุด


4
ความคิดใดที่sslcacertfileเส้นทางบน OSX?
Meitham

1
ลักษณะเช่น @Meitham sslcacertfile = /usr/local/etc/openssl/cert.pemตามrudolfochrist.github.io/blog/2015/03/21/...
tekknolagi

1

คุณควรเพิ่มบรรทัดต่อไปนี้ในส่วนของ. offlineimaprc อธิบายบัญชี Gmail ระยะไกลของคุณ:

cert_fingerprint=f3043dd689a2e7dddfbef82703a6c65ea9b634c1

นี่คือใบรับรอง SSL ของเซิร์ฟเวอร์ imap ของ Gmail


0

ไม่มันไม่ใช่ OpenSSL ที่หายไปใบรับรองมันเป็นความล้มเหลวของการจับมือ SSL เพราะส่วนอื่น ๆ ไม่ได้ส่งใบรับรอง

คุณจะได้รับข้อผิดพลาดที่คล้ายกันเมื่อคุณเชื่อมต่อกับบริการที่ไม่รองรับ SSL

สิ่งใดที่คุณจะได้รับเมื่อคุณเพิ่มตัวเลือก -debug ใน openssl?

ตอบ:

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

ดังนั้นจึงไม่อ่านอะไรจากซ็อกเก็ต (แนะนำว่ามันถูกปิดโดยส่วนอื่น ๆ หรือสิ่งที่อยู่ในระหว่างก่อนที่จะส่งอะไร)

มีพร็อกซีในเครือข่ายของคุณหรือไม่? การเปลี่ยนเส้นทางหรือป้องกันไวรัส iptables บางอย่างในเครื่องท้องถิ่น?

อะไรtshark -Vi any port 993ให้คุณเมื่อคุณลองใช้คำสั่ง openssl?


ขอบคุณ! นี่คือผลลัพธ์ของการเรียกใช้ OpenSSL พร้อม-debugตัวเลือก เห็นได้ชัดว่าฉันสามารถเชื่อมต่อจากเซิร์ฟเวอร์อื่นในเครือข่ายเดียวกัน ตอนนี้ฉันกำลังคิดว่าสิ่งนี้อาจเฉพาะเจาะจง ฉันได้ปรับปรุงคำถามของฉันเช่นกัน
tirmm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.