J'ai besoin d'installer offlineimap et mu4e sur emacs. Le problème est la configuration. Lorsque je lance offlineimap, je reçois:
OfflineIMAP 6.5.5
Licensed under the GNU GPL v2+ (v2 or any later version)
Thread 'Account sync Gmail' terminated with exception:
Traceback (most recent call last):
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/threadutil.py", line 158, in run
Thread.run(self)
File "/anaconda/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/accounts.py", line 226, in syncrunner
self.remoterepos = Repository(self, 'remote')
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/__init__.py", line 78, in __new__
return repo(name, account)
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/Gmail.py", line 37, in __init__
IMAPRepository.__init__(self, reposname, account)
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/IMAP.py", line 34, in __init__
self.imapserver = imapserver.IMAPServer(self)
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/imapserver.py", line 83, in __init__
self.sslcacertfile = repos.getsslcacertfile()
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/IMAP.py", line 211, in getsslcacertfile
% (self.name, cacertfile))
SyntaxWarning: CA certfile for repository 'Remote' could not be found. No such file: '/usr/share/curl/ca-bundle.crt.original'
Last 2 debug messages logged for Account sync Gmail prior to exception:
thread: Register new thread 'Account sync Gmail' (account 'Gmail')
imap: Using authentication mechanisms ['GSSAPI', 'CRAM-MD5', 'PLAIN', 'LOGIN']
C'est mon .offlineimaprc
[general]
accounts = Gmail
maxsyncaccounts = 1
pythonfile = ~/.offlineimap.py
[Account Gmail]
localrepository = Local
remoterepository = Remote
[Repository Local]
type = Maildir
localfolders = ~/Maildir
[Repository Remote]
type = Gmail
remoteuser = [email protected]
remotepasseval = get_password_emacs("imap.gmail.com", "[email protected]", "993")
realdelete = no
folderfilter = lambda foldername: foldername not in ['[Gmail]/Spam', '[Gmail]/All Mail', '[Gmail]/Starred', '[Gmail]/Important']
holdconnectionopen = true
keepalive = 60
sslcacertfile = /usr/share/curl/ca-bundle.crt.original #??
Il y a un problème d'installation avec python et un problème avec le certificat de l'autorité de certification Le point est-il pas de tout emballage de brassage curl-ca-bundle. Y at-il un autre moyen d'installer un certificat?
J'ai eu un problème similaire (sur MacOS 10.10.2, openssl 1.0.2 et offlineimap 6.5.5 de Homebrew) et je n’ai pas pu faire fonctionner la solution de certificat factice. Cependant, j'ai trouvé un fichier de certification qui permettait à offlineimap de cesser de se plaindre dans /usr/local/etc/openssl/cert.pem
(qui y est placé lors de l'installation d'OpenSL via homebrew, brew info openssl
me dit). Mise en garde: Je ne sais pas si c'est un bon moyen ou un moyen sûr de le faire.
Il n’existe généralement aucun ensemble de certificats d’autorité de certification sous OS X, car les bibliothèques SSL utilisent généralement Security Framework d’Apple en interne et obtiennent des certificats auprès de Keychain.
Vous pouvez créer votre propre ensemble à partir de certificats de trousseau: ouvrez le trousseau, accédez à la catégorie «Certificats» du trousseau «Racines système» et appuyez sur Commande + Maj + E («Éléments d'exportation») pour enregistrer tous les certificats. Je pense que Python peut gérer le format PEM, assurez-vous donc de le sélectionner.
Autrement, sous OS X 10.6 et plus récent, le système Python est construit sur une version OpenSSL qui always examine également le trousseau. Par conséquent, vous pouvez créer un bundle factice contenant uniquement une certification factice auto-signée et l'utiliser dans votre configuration pour arrêter OfflineIMAP. De toute façon, il examinera les certificats de trousseau.
Voir https://www.Mercurial-scm.org/wiki/CACertificates#Mac_OS_X_10.6_and_higher pour plus de détails.
Une façon simple de procéder consiste à utiliser le paquet de certificats curl. J'utilise MacPorts, donc cela a été obtenu avec
Sudo port install curl-ca-bundle
Vous pouvez ensuite exécuter port contents curl-ca-bundle
pour voir ce qu’il a installé, .__, puis ajouter les éléments suivants à ~/.offlineimaprc
dans la section relative à votre compte distant.
sslcacertfile =/opt/local/share/curl/curl-ca-bundle.crt
Notez que cela mettra également un lien vers ces certificats en tant que /opt/local/etc/openssl/cert.pem
.
J'ai exécuté la commande ci-dessus donnée par @ wood-guardian, puis j'ai couru pour résoudre le problème.
Ruby -ropenssl -e "p OpenSSL :: X509 :: DEFAULT_CERT_FILE"
exporter le résultat de l'instruction ci-dessus vers la variable env SSL_CERT_FILE
export SSL_CERT_FILE =/usr/local/etc/openssl/cert.pem
J'ai eu du succès sur un Mac fonctionnant sous la version 10.6, où je préfère l'écosystème Homebrew en utilisant la réponse de @ patrick-sanan, puis en créant une liaison symbolique dans la version de Cert.pem de l'écosystème Macports:
Sudo rm /usr/local/etc/openssl
Sudo ln -s /opt/local/etc/openssl/cert.pem /usr/local/etc/openssl
Cela peut arriver si vous avez plusieurs installations d’openssl (par exemple, v1.0.2 et 1.1.1). S'ils ont tous deux été installés par brew
à un moment donné, vous devrez les désinstaller tous les deux pour éliminer le conflit.
brew uninstall --ignore-dependencies --force [email protected]
brew uninstall --ignore-dependencies --force openssl
Et le réinstaller l'un, comme
brew install [email protected]
J'espère que ça marche!