web-dev-qa-db-ja.com

offlineimapを使用してGMailに接続するときにCERTIFICATE_VERIFY_FAILED

Arch Linuxでは、offlineimapを使用してこのようにGMailに同期したいと思います。

[general]
accounts = Gmail
maxsyncaccounts = 3

[Account Gmail]
localrepository = LocalGmail
remoterepository = RepositoryGmail
autorefresh = 30
quick = 10
postsynchook = mu index --maildir ~/.offlineimap/Gmail

[Repository LocalGmail]
type = GmailMaildir
localfolders = ~/.offlineimap/Gmail

[Repository RepositoryGmail]
type = Gmail
maxconnections = 2
remoteuser = my.gmail.accountname
remotepass = gmailapppassword
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', '[Gmail]/Important']
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

sSLの問題が原因で失敗します。

$ offlineimap -o -a Gmail
OfflineIMAP 7.2.1
  Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
imaplib2 v2.57 (bundled), Python v2.7.15, OpenSSL 1.1.1a  20 Nov 2018
Account sync Gmail:
 *** Processing account Gmail
 Establishing connection to imap.gmail.com:993 (RepositoryGmail)
 ERROR: Unknown SSL protocol connecting to Host 'imap.gmail.com' for repository 'RepositoryGmail'. OpenSSL responded:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)

実行してSSL接続をチェックできることを他の場所で読んだ

$ openssl s_client -showcerts -connect imap.gmail.com:993
[...]
* OK Gimap ready for requests from 217.63.244.188 s26mb317463625edc

これは、エラーが実際にはSSL接続にあるのではなく、offlineimapがそれを処理する方法にあることを示唆しています。証明書ファイル ``が存在し、GlobalSign Root CA-R2証明書が含まれています。

sixofflineimapをそれぞれのpipsを使用してクリーンなpython2.7とクリーンなpython3.7 virtualenvの両方にインストールし、CERTIFICATE_VERIFY_FAILEDを永続化したことを確認します。

どのようにしたらofflineimapでGMailと通信できますか?

3
Anaphory

ArchではOpenSSLは1.1.1になり、imaplib2で問題が発生します。

https://github.com/imaplib2/imaplib2/issues/5

説明されているように:

https://github.com/OfflineIMAP/offlineimap/issues/57

あなたはあなたの.offlineimaprcにssl_version = tls1_2を追加することができ、それは問題を解決します

4