私は次の方法を使用しますが、これはかなりうまく機能します。
1)パスワードを別のgpg暗号化ファイルに保存します。例えば~/.passwd/<accountname>.gpg
2)選択した名前(例:)~/.offlineimap.py
で、次の内容のpython拡張ファイルを作成します。
def mailpasswd(acct):
acct = os.path.basename(acct)
path = "/home/<username>/.passwd/%s.gpg" % acct
args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
try:
return subprocess.check_output(args).strip()
except subprocess.CalledProcessError:
return ""
3).offlineimaprcファイルを変更して、pythonファイルについて通知し、パスワードの読み方を通知します
[general]
pythonfile = ~/.offlineimap.py
# ...
[Repository <reponame>]
# add this line for each remote repository
remotepasseval = mailpasswd("<accountname>")
同時にチェックされる複数のアカウント(別々のスレッド)があり、gpg-agentを使用している場合、各アカウントのパスフレーズが要求されます。ファイルを作成してエージェントecho "prime" | gpg -e -r foo@bar.com > ~/.passwd/prime.gpg
を準備し()、offlineimapの起動時にこのファイルを復号化してgpgエージェントを準備します。これを行うには、次の行を末尾に追加します~/.offlineimap.py
。
def prime_gpg_agent():
ret = False
i = 1
while not ret:
ret = (mailpasswd("prime") == "prime")
if i > 2:
from offlineimap.ui import getglobalui
sys.stderr.write("Error reading in passwords. Terminating.\n")
getglobalui().terminate()
i += 1
return ret
prime_gpg_agent()