如果您使用 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
查看以这种方式处理哪些键。如果您希望评估其他键,那么使用类似的调用创建您自己的程序版本可能不会太困难。