Offlineimap

我們可以加密offlineimaprc中的任何欄位嗎?

  • October 3, 2017

如果您使用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 函式會給出正確的結果。

據我了解,只有少數鍵具有被評估為 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來查看以這種方式處理的密鑰。如果您希望評估其他密鑰,使用類似呼叫創建您自己的該程序版本可能並不難。

引用自:https://unix.stackexchange.com/questions/395576