我需要在emacs上安装offlineimap和mu4e。问题是配置。当我运行offlineimap时,我得到:
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']
这是我的.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 = enrico.pirani0@gmail.com
remotepasseval = get_password_emacs("imap.gmail.com", "enrico.pirani0@gmail.com", "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 #??
python安装存在问题,而CA证书存在问题。点是没有任何curl-ca-bundle brew包。我还有其他方法可以安装证书吗?
答案 0 :(得分:30)
我有类似的问题(在MacOS 10.10.2上,openssl 1.0.2和offlineimap 6.5.5都来自自制软件)并且无法使虚拟证书解决方案起作用。但是,我找到了一个使得offlineimap在/usr/local/etc/openssl/cert.pem
中停止抱怨的证书文件(在通过自制程序安装openssl时放在那里,brew info openssl
告诉我)。警告:我不知道这是否是一种好的或安全的方法。
答案 1 :(得分:13)
OS X上通常没有CA证书捆绑包,因为SSL库通常在内部使用Apple的安全框架并从Keychain获取证书。
您可以使用钥匙串证书创建自己的捆绑包:打开钥匙串,导航到“系统根”钥匙串中的“证书”类别,然后按Command + Shift + E(“导出项目”),以保存所有证书。我认为Python可以处理PEM格式,所以一定要选择它。
或者,在OS X 10.6及更高版本上,系统Python是针对OpenSSL版本构建的,总是也会查看Keychain。因此,您可以创建仅包含虚拟自签名证书的虚拟捆绑包,并在配置中使用该捆绑包使OfflineIMAP关闭。无论如何,它会查看Keychain证书。
有关详细信息,请参阅https://www.mercurial-scm.org/wiki/CACertificates#Mac_OS_X_10.6_and_higher。
答案 2 :(得分:8)
一种简单的方法是使用curl证书包。我使用MacPorts,所以这是通过
获得的sudo port install curl-ca-bundle
然后,您可以运行port contents curl-ca-bundle
以查看其安装内容,
然后将以下内容添加到远程帐户部分的~/.offlineimaprc
sslcacertfile =/opt/local/share/curl/curl-ca-bundle.crt
请注意,这也会将这些证书的链接设为/opt/local/etc/openssl/cert.pem
。
答案 3 :(得分:2)
我运行了@ wood-guardian给出的上述命令,然后运行以解决该问题。
ruby -ropenssl -e“ p OpenSSL :: X509 :: DEFAULT_CERT_FILE”
将上述语句的结果导出到SSL_CERT_FILE环境变量
导出SSL_CERT_FILE = / usr / local / etc / openssl / cert.pem
答案 4 :(得分:1)
我在运行10.6的Mac上取得了成功,在Mac上我更喜欢Homebrew生态系统,方法是使用@ patrick-sanan的答案,然后在Macports生态系统版本的cert.pem中进行符号链接:
sudo rm /usr/local/etc/openssl
sudo ln -s /opt/local/etc/openssl/cert.pem /usr/local/etc/openssl
答案 5 :(得分:1)
对于macOS 10.15.6(当前是macOS 11未来版本之前的最新稳定操作系统版本),我发现brew info openssl
是查找所有CA证书的位置以及如何找到最简单便捷的方法。添加自定义CA .pem
证书。
命令输出中的破坏器
要添加其他证书,请将.pem文件放入
/usr/local/etc/openssl@1.1/certs
并运行
/usr/local/opt/openssl@1.1/bin/c_rehash
答案 6 :(得分:0)
如果您安装了多个openssl(例如v1.0.2和1.1.1),则可能会发生这种情况。如果它们都是由brew
在某个时间点安装的,则必须卸载它们以消除冲突
brew uninstall --ignore-dependencies --force openssl@1.1
brew uninstall --ignore-dependencies --force openssl
然后重新安装其中之一,例如
brew install openssl@1.1
希望这行得通!