
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
どのキーがこの方法で処理されているかを確認できます。別のキーを評価したい場合は、同様の呼び出しを使用して独自のプログラムバージョンを作成するのはそれほど難しくありません。