使用 isync 或 offlineimap 离线同步和阅读 Gmail

Synchronise and read Gmail offline, using isync OR offlineimap

我的目标是从 Gmail 帐户同步我的电子邮件并将它们编入索引以便在 Emacs 中搜索和阅读。后者尚不相关,因为我无法将电子邮件同步到我的笔记本电脑。

我是 运行 小牛队,所以在 Mac 终端工作。

我关注了 SO accepted answer and the answer in the same thread trying to use offlineimap, as well as a second method in this (more promising) tutorial on using isync(所以 mbsync)。两种方式最终都使用 mu 和 Emacs 的界面:mu4e.

证书未 read/interpreted 正确。我不知道为什么,因为我不明白错误信息。这是来自 offlineimap 的那个:

> OfflineIMAP 6.5.7
  Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
Account sync Gmail:
 *** Processing account Gmail
 Establishing connection to imap.gmail.com:993
 PLAIN authentication failed: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
 LOGIN authentication failed: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
 ERROR: All authentication types failed:
    PLAIN: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
    LOGIN: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
 *** Finished account 'Gmail' in 0:01
ERROR: Exceptions occurred during the run!
ERROR: All authentication types failed:
    PLAIN: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
    LOGIN: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
> 
> Traceback:   File
> "/usr/local/Cellar/offline-imap/6.5.7/libexec/offlineimap/accounts.py",
> line 263, in syncrunner
>     self.__sync()   File "/usr/local/Cellar/offline-imap/6.5.7/libexec/offlineimap/accounts.py",
> line 326, in __sync
>     remoterepos.getfolders()   File "/usr/local/Cellar/offline-imap/6.5.7/libexec/offlineimap/repository/IMAP.py",
> line 351, in getfolders
>     imapobj = self.imapserver.acquireconnection()   File "/usr/local/Cellar/offline-imap/6.5.7/libexec/offlineimap/imapserver.py",
> line 451, in acquireconnection
>     self.__authn_helper(imapobj)   File "/usr/local/Cellar/offline-imap/6.5.7/libexec/offlineimap/imapserver.py",
> line 366, in __authn_helper
>     "failed:\n\t%s"% msg, OfflineImapError.ERROR.REPO)

这是来自 mbsync 的那个:

> C: 0/3  B: 0/2  M: +0/0 *0/0 #0/0  S: +0/0 *0/0 #0/0
Error while loading certificate file '/usr/local/etc/openssl/certs/Equifax.crt': error:00000000:lib(0):func(0):reason(0)
C: 3/3  B: 0/2  M: +0/0 *0/0 #0/0  S: +0/0 *0/0 #0/0

我已经用 Homebrew 安装了所有东西,并且正在按照教程使用文件夹。问题出在证书上,但我不知道问题出在哪里。我在 Gmail 中设置了允许 IMAP 并允许连接安全性较低的应用程序。

我如何以不同方式处理证书?

对于 offlineimap 错误,Google 抱怨您没有使用 Oauth2。按照此处的解释,我解决了同样的 offlineimap 问题:https://github.com/OfflineIMAP/offlineimap/issues/228

您需要将 .offlineimaprc 配置为使用 Oauth2 而不是指定 username/password。以下是有关如何生成令牌的模板和说明: https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf#L764

以下是重要设置:

auth_mechanisms = GSSAPI, CRAM-MD5, XOAUTH2, PLAIN, LOGIN
oauth2_client_secret = ...
oauth2_client_id = ...
oauth2_refresh_token = ...