Ich versuche, OfflineIMAP so einzurichten, dass mein Google Mail-Konto mit synchronisiert wird ~/Mail/Gmail
. Ich benutze ein ziemlich einfaches ~/.offlineimaprc
von hier . OfflineIMAP stellt jedoch überhaupt keine Verbindung zu Google Mail her. Dies ist die Debug-Meldung, die ich erhalte (indem ich OfflineIMAP wie folgt ausführe 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
Am Anfang dachte ich, dies könnte an meiner ISP-Blockierung liegen imap.gmail.com/imap.googlemail.com
, aber ich kann eine Verbindung herstellen, indem ich 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 '^]'.
Irgendwelche Ideen?
EDIT 1: Aus dieser Antwort auf SuperUser habe ich versucht, eine Verbindung imap.googlemail.com
über SSL mit herzustellenopenssl s_client -connect imap.googlemail.com:993
. Das gibt mir:
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
---
Dies scheint ein Problem mit fehlenden Zertifikaten in OpenSSL zu sein. Könnte das auch mit OfflineIMAP passieren?
EDIT 2: Ich habe dieselben OpenSSL-Befehle auf einem anderen Server (im selben Netzwerk) ausprobiert, auf dem Mandriva Linux Release 2009.1 ausgeführt wird, und anscheinend hat die Verbindung funktioniert ( Debug-Ausgabe ). Ich verwende Ubuntu 12.04 mit OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Könnte dies mit der Distribution zusammenhängen?
quelle
Antworten:
Anstatt den Fingerabdruck manuell anzugeben (der sich ändern kann), können Sie offlineimap stattdessen mitteilen, wo Ihre lokalen Systemzertifikate gespeichert sind, und dann die Kette automatisch überprüfen lassen.
Die sslcacert-Datei macht den Trick.
Wenn Nicht-Ubuntu-Benutzer dies sehen, denken Sie daran, dass der Speicherort in Ihrer Distribution höchstwahrscheinlich anders ist.
quelle
sslcacertfile
Pfad unter OSX ist?sslcacertfile = /usr/local/etc/openssl/cert.pem
laut rudolfochrist.github.io/blog/2015/03/21/… aus .Sie sollten dem Abschnitt in .offlineimaprc, der Ihr Remote-Google Mail-Konto beschreibt, die folgende Zeile hinzufügen:
Dies ist das SSL-Zertifikat des Google Mail-IMAP-Servers.
quelle
Nein, OpenSSL fehlt kein Zertifikat. Es handelt sich um einen SSL-Handshake-Fehler, da das andere Ende sein Zertifikat nicht gesendet hat.
Sie würden einen ähnlichen Fehler erhalten, wenn Sie eine Verbindung zu einem nicht SSL-fähigen Dienst herstellen.
Was erhalten Sie, wenn Sie die Option -debug zu openssl hinzufügen?
Antworten:
Es wurde also nichts aus der Steckdose gelesen (was darauf hindeutet, dass es am anderen Ende oder etwas dazwischen geschlossen wurde, bevor etwas gesendet wurde)
Gibt es eine Art Proxy in Ihrem Netzwerk? Irgendeine Art von Iptables-Umleitung oder Antivirus auf dem lokalen Computer?
Was gibt es
tshark -Vi any port 993
, wenn Sie den Befehl openssl ausprobieren?quelle
-debug
Option. Anscheinend kann ich eine Verbindung von einem anderen Server im selben Netzwerk herstellen. Ich denke jetzt, dass dies distro-spezifisch sein könnte. Ich habe auch meine Frage aktualisiert.