web-dev-qa-db-ja.com

tmux内のOfflineimap + gpg暗号化PWのSystemdサービスは、システムの起動後に手動で機能しますが、自動では機能しません

簡単な説明、私が探しているもの:

切り離されたtmuxセッションをsystemdユーザーサービスとして自動的に開始させたい。その中で、offlineimapが起動し、ログイン資格情報を復号化する必要があります。 pinentryのグラフィカルなバリアントは、セッションに接続するときに、ログイン資格情報を復号化するためのパスワードを要求するはずです。ログイン資格情報を管理するために、プログラム pass を使用したいと思います。

私がこれまでに得たもの:

システムにログインした後にユーザーサービスを開始すると、目的の動作が完全かつ再現可能に機能します(再起動から開始)。

しかし、残念ながら、「symstemctl --user enable mail.service」を実行して再起動すると、機能しません。

$ systemctl --user status mail
● mail.service - load offlineimap for all mail accounts inside tmux
Loaded: loaded (/home/toogley/.dotfiles/systemd/user/mail.service; enabled; vendor preset: enabled)
Active: inactive (dead)

$ tmux attach-session -t mail
can't find session mail

何を分析できるのか、何が理由なのか、私にはわかりません。誰かがこの問題に対処するためのヒントを持っていますか?

どうもありがとう!

My mail.service

Description=load offlineimap for all mail accounts inside tmux
After=network.target graphical.target
Requires=gpg-agent.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux new-session -d -s mail -n dev 'export GPG_TTY=$(tty) && \
offlineimap'
ExecStop=/usr/bin/tmux kill-window -t mail
ExecReload=/usr/bin/kill -s USR1 $(pgrep offlineimap)

[Install]
WantedBy=graphical.target

my gpg-agent.service:

[Unit]
Description=GnuPG private key agent
IgnoreOnIsolate=true

[Service]
Type=forking
ExecStart=/usr/bin/gpg-agent --daemon --homedir=%h/.gnupg
ExecStop=/usr/bin/pkill gpg-agent
Restart=on-abort

[Install]
WantedBy=default.target

私の〜/ .offlineimaprc

[general]
accounts = dev
ui = ttyui
metadata = ~/.dev_offimap
pythonfile=~/.dotfiles/mutt/accounts/decrypt.py

[Account dev]
synclabels = yes
localrepository = dev-local
remoterepository = dev-remote
status_backend = sqlite
autorefresh = 1
quick = 10

[Repository dev-local]
type = Maildir
localfolders = ~/mail/dev/

[Repository dev-remote]
remotepasseval = get_pass("[email protected]")
ssl = yes
type = IMAP
remotehost = imap.mailbox.org
remoteuser = [email protected]
sslcacertfile = /etc/ssl/certs/ca-bundle.crt
keepalive = 60
holdconnectionopen = yes
2
toogley

私が探しているものは現在不可能のようです。

最初はgraphical.targetの説明を読み間違えました-ログインが行われた後にこのターゲットが設定されると思いました。代わりに、ログイン画面(lightdmなど)を設定するだけです。また、「グラフィカルデスクトップにログイン」の場合、現在ターゲットは存在しません。

ArchLinux Wiki は、systemdユーザーサービスごとにウィンドウマネージャーを起動する方法を説明しています-ユーザーがlightdmにログインするタイミングに依存するため、これは私には機能しません。

回避策として必要なときにサービスを開始するためにエイリアスを使用します。

0
toogley