Próbuję skonfigurować OfflineIMAP, aby zsynchronizować moje konto Gmail ~/Mail/Gmail
. Używam dość podstawowe ~/.offlineimaprc
z tutaj . Ale OfflineIMAP w ogóle nie łączy się z Gmailem. To jest komunikat debugowania, który otrzymuję (uruchamiając OfflineIMAP jako 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
Na początku myślałem, że może to być spowodowane blokowaniem mojego ISP imap.gmail.com/imap.googlemail.com
, ale mogę się z nim połączyć, używając 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 '^]'.
Jakieś pomysły?
EDYCJA 1: Z tej odpowiedzi w SuperUser próbowałem połączyć się imap.googlemail.com
za pomocą SSL przy użyciu openssl s_client -connect imap.googlemail.com:993
. To daje mi:
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
---
Wygląda to na problem z brakującym certyfikatem w OpenSSL. Czy to samo może się stać z OfflineIMAP?
EDYCJA 2: Próbowałem tych samych poleceń OpenSSL na innym serwerze (w tej samej sieci) z systemem Mandriva Linux wydanie 2009.1 i najwyraźniej połączenie działało ( wyjście debugowania ). Używam Ubuntu 12.04 z OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Czy to może być związane z dystrybucją?
źródło
Odpowiedzi:
Zamiast ręcznie określać odcisk palca (który można zmienić), możesz zamiast tego powiedzieć offlineimap, gdzie przechowywane są certyfikaty systemu lokalnego, a następnie automatycznie zweryfikować łańcuch.
Plik sslcacert jest tym, co działa.
Jeśli widzą to użytkownicy spoza Ubuntu, pamiętaj, że lokalizacja najprawdopodobniej różni się w twojej dystrybucji.
źródło
sslcacertfile
ścieżka w OSX?sslcacertfile = /usr/local/etc/openssl/cert.pem
zgodnie z rudolfochrist.github.io/blog/2015/03/21/… .Powinieneś dodać następujący wiersz do sekcji w .offlineimaprc opisującej twoje zdalne konto Gmail:
To jest certyfikat SSL serwera imap Gmaila.
źródło
Nie, to nie OpenSSL nie ma certyfikatu, to błąd uzgadniania SSL, ponieważ drugi koniec nie wysłał swojego certyfikatu.
Podobny błąd wystąpi podczas łączenia się z usługą nieobsługującą protokołu SSL.
Co otrzymujesz po dodaniu opcji -debug do openssl?
odpowiedź:
Więc nic nie czytał z gniazda (sugerując, że został zamknięty przez drugi koniec lub coś pomiędzy przed wysłaniem czegokolwiek)
Czy w twojej sieci jest jakiś serwer proxy? Jakieś przekierowanie iptables lub antywirus na komputerze lokalnym?
Co
tshark -Vi any port 993
daje ci próba uruchomienia komendy openssl?źródło
-debug
opcją. Najwyraźniej jestem w stanie połączyć się z innego serwera w tej samej sieci. Myślę teraz, że może to być specyficzne dla dystrybucji. Zaktualizowałem również moje pytanie.