Saya mencoba menyiapkan OfflineIMAP untuk menyinkronkan akun Gmail saya ~/Mail/Gmail
. Saya menggunakan dasar yang cukup ~/.offlineimaprc
dari sini . Tetapi OfflineIMAP tidak terhubung ke Gmail sama sekali. Ini adalah pesan debug yang saya dapatkan (dengan menjalankan OfflineIMAP sebagai 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
Pada awalnya saya pikir ini mungkin disebabkan oleh pemblokiran ISP saya imap.gmail.com/imap.googlemail.com
, tetapi saya dapat terhubung dengannya menggunakan 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 '^]'.
Ada ide?
EDIT 1: Dari jawaban ini pada SuperUser , saya mencoba menghubungkan ke imap.googlemail.com
menggunakan SSL openssl s_client -connect imap.googlemail.com:993
. Ini memberi saya:
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
---
Ini terlihat seperti masalah sertifikat yang hilang di OpenSSL. Mungkinkah hal yang sama terjadi pada OfflineIMAP juga?
EDIT 2: Saya mencoba perintah OpenSSL yang sama pada server lain (pada jaringan yang sama) yang menjalankan Mandriva Linux rilis 2009.1 dan ternyata koneksi berfungsi ( debug output ). Saya menjalankan Ubuntu 12.04 dengan OpenSSL / LibSSL 1.0.1-4ubuntu5.5. Mungkinkah ini terkait dengan distro?
sumber
Jawaban:
Alih-alih menentukan secara manual sidik jari (yang dapat berubah), Anda dapat memberitahu offlineimap tempat sertifikat sistem lokal Anda disimpan dan kemudian secara otomatis memverifikasi rantai.
File sslcacertfile adalah triknya.
Jika pengguna non-Ubuntu melihat ini, perlu diingat bahwa lokasi kemungkinan besar berbeda di distro Anda.
sumber
sslcacertfile
jalan di OSX?sslcacertfile = /usr/local/etc/openssl/cert.pem
menurut rudolfochrist.github.io/blog/2015/03/21/… .Anda harus menambahkan baris berikut ke bagian di .offlineimaprc yang menjelaskan akun Gmail jarak jauh Anda:
Ini adalah sertifikat SSL server imap Gmail.
sumber
Tidak, ini bukan OpenSSL yang kehilangan sertifikat. Ini adalah kegagalan handshake SSL karena ujung lainnya tidak mengirim sertifikatnya.
Anda akan mendapatkan kesalahan serupa ketika Anda terhubung ke beberapa layanan yang tidak mendukung SSL.
Apa yang Anda dapatkan ketika Anda menambahkan opsi -debug ke openssl?
menjawab:
Jadi itu tidak membaca apa pun dari soket (menunjukkan itu ditutup oleh ujung lain atau sesuatu di antaranya sebelum mengirim apa pun)
Apakah ada semacam proxy di jaringan Anda? Semacam pengalihan iptables atau antivirus di mesin lokal?
Apa yang
tshark -Vi any port 993
memberi Anda ketika Anda mencoba perintah openssl?sumber
-debug
opsi. Rupanya saya dapat terhubung dari server lain di jaringan yang sama. Saya sekarang berpikir bahwa ini bisa menjadi distro yang spesifik. Saya juga memperbarui pertanyaan saya.