オフラインimaprcのすべてのフィールドを暗号化できますか?

オフラインimaprcのすべてのフィールドを暗号化できますか?

Offlineimapを使用してGmailなどと同期する場合は、パスワードを暗号化し、Pythonスクリプトを使用して実行時にパスワードを復号化できます。これは設定によって行われます。

Remotepass = passwd('gmail.gpg')

オフラインimaprcファイルでは、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なりません。

これはPythonなので、offlineimapディストリビューションでソースコードを見つけることができます。私の場合は、ファイル/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どのキーがこの方法で処理されているかを確認できます。別のキーを評価したい場合は、同様の呼び出しを使用して独自のプログラムバージョンを作成するのはそれほど難しくありません。

おすすめ記事