Неможливо використовувати 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 '^]'.

Будь-які ідеї?

EDIT 1: З цієї відповіді на SuperUser я спробував підключитися до imap.googlemail.comSSL за допомогою 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?

EDIT 2: Я спробував ті ж команди OpenSSL на іншому сервері (у тій самій мережі) під керуванням Mandriva Linux випуску 2009.1 і, мабуть, з'єднання спрацювало ( вихід налагодження ). Я запускаю Ubuntu 12.04 з OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Чи може це бути пов'язано з дистрофією?


Це може допомогти опублікувати вашу версію offlineimap, оскільки цей проект має досить багато версій у дикій природі, і деякі з них сильно зламані. Спробуйте також їх список розсилки, інформацію про який ви можете знайти на їх домашній сторінці .
jw013

Відповіді:


12

Замість того, щоб вручну вказувати відбиток пальців (який може змінюватися), ви можете замість цього сказати offlineimap, де зберігаються ваші локальні системні сертифікати, а потім автоматично перевірити ланцюг.

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

Sslcacertfile - це те, що робить фокус.

Якщо користувачі, які не користуються Ubuntu, бачать це, майте на увазі, що місце розташування, швидше за все, відрізняється у вашому дистрибутиві.


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опцією. Мабуть, я в змозі підключитися з іншого сервера в тій же мережі. Я зараз думаю, що це може бути специфічно для distro. Я також оновив своє запитання.
tirmm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.