我们可以加密offlineimaprc中的任何字段吗?

我们可以加密offlineimaprc中的任何字段吗?

如果您使用 Offlineimap 与 Gmail 等进行同步,则可以加密密码并使用 Python 脚本在运行时对其进行解密。这是通过设置完成的

Remotepass = passwd('gmail.gpg')

在offlineimaprc文件中,其中passwd是一个python函数。这种 python 函数的使用是否仅限于某些键,如remotepass上面的示例,或者理论上我可以在每个键的右侧使用 python 函数吗?我问的原因如下:我也试图加密其他密钥的其他值。但是,我收到如下错误:

ERROR: While attempting to sync account 'gmail'
  ('http error', 401, 'Unauthorized', <httplib.HTTPMessage instance at 0x7f8ca13541b8>) (configuration is: {'client_secret': "passwd('gmail_client_secret.gpg')", 'grant_type': 'refresh_token', 'refresh_token': "passwd('gmail_rf_token.gpg')", 'client_id': "passwd('gmail_client_id.gpg')"})

我不确定这个函数是否passwd真的被执行了。在 python 解释器中运行 python 函数会给出正确的结果。

答案1

据我了解,只有少数钥匙有幸被评估的作为Python代码。其中一些在配置文件中通过以字符串“eval”结尾的键明确显示,例如remotepasseval,但其他一些仅在注释中注明,例如nametrans,它显然必须是一个函数。

由于offlineimap是在 python 中,您可能可以在您的发行版中找到源代码。就我而言,文件/usr/lib/python2.7/site-packages/offlineimap/repository/IMAP.py有要处理的代码remotepasseval,这相当容易理解:

    passwd = self.getconf('remotepasseval', None)
    if passwd != None:
        return self.localeval.eval(passwd)

您可以查找 的其他用途来localeval查看以这种方式处理哪些键。如果您希望评估其他键,那么使用类似的调用创建您自己的程序版本可能不会太困难。

相关内容