From c4a3597a6c77538c1f790512acbbd18eb9a498e7 Mon Sep 17 00:00:00 2001 From: Davide Principi Date: Thu, 23 Jul 2026 15:44:28 +0200 Subject: [PATCH] fix(systemd): replace %S with %E in unit files Newer systemd releases (Rocky Linux 9.8+, Debian 13) changed the %S specifier to expand to ~/.local/state instead of ~/.config, breaking units that relied on the old behavior to reference the config directory. %E expands to ~/.config on both old and new systemd, so it is the correct, forward-compatible specifier for this use case. Assisted-by: Claude:claude-sonnet-5 --- imageroot/systemd/user/clamav-unofficial-sigs.service | 2 +- imageroot/systemd/user/clamav.service | 4 ++-- imageroot/systemd/user/dhgen.service | 2 +- imageroot/systemd/user/dovecot.service | 4 ++-- imageroot/systemd/user/freshclam.service | 2 +- imageroot/systemd/user/get-certificate.service | 4 ++-- imageroot/systemd/user/postfix.service | 4 ++-- imageroot/systemd/user/rspamd.service | 6 +++--- imageroot/systemd/user/spam-expunge.service | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/imageroot/systemd/user/clamav-unofficial-sigs.service b/imageroot/systemd/user/clamav-unofficial-sigs.service index 88bf366e..962275d2 100644 --- a/imageroot/systemd/user/clamav-unofficial-sigs.service +++ b/imageroot/systemd/user/clamav-unofficial-sigs.service @@ -6,5 +6,5 @@ After=clamav.service [Service] Type=oneshot ExecStart=podman exec clamav download-sigs cus -s -WorkingDirectory=%S/state +WorkingDirectory=%E/state SyslogIdentifier=%N diff --git a/imageroot/systemd/user/clamav.service b/imageroot/systemd/user/clamav.service index d27d60bb..348d2c80 100644 --- a/imageroot/systemd/user/clamav.service +++ b/imageroot/systemd/user/clamav.service @@ -5,8 +5,8 @@ Description=ClamAV anti-virus Environment=PODMAN_SYSTEMD_UNIT=%n Environment=CLAMAV_CUSCFG_VOLUME_FLAGS=O Environment=CLAMAV_CUS_RATING=MEDIUM -EnvironmentFile=%S/state/environment -WorkingDirectory=%S/state +EnvironmentFile=%E/state/environment +WorkingDirectory=%E/state Restart=always ExecStartPre=/bin/rm -f %t/clamav.pid %t/clamav.ctr-id ExecStart=/usr/bin/podman run \ diff --git a/imageroot/systemd/user/dhgen.service b/imageroot/systemd/user/dhgen.service index 40c684f2..a892e872 100644 --- a/imageroot/systemd/user/dhgen.service +++ b/imageroot/systemd/user/dhgen.service @@ -5,5 +5,5 @@ Description=Diffie-Hellman group generator Type=oneshot ExecStart=runagent generate-dhpem ExecStart=-systemctl --user reload postfix.service dovecot.service -WorkingDirectory=%S/state +WorkingDirectory=%E/state SyslogIdentifier=%N diff --git a/imageroot/systemd/user/dovecot.service b/imageroot/systemd/user/dovecot.service index 31c023a9..46504872 100644 --- a/imageroot/systemd/user/dovecot.service +++ b/imageroot/systemd/user/dovecot.service @@ -5,8 +5,8 @@ After=get-certificate.service [Service] Environment=PODMAN_SYSTEMD_UNIT=%n -EnvironmentFile=%S/state/environment -WorkingDirectory=%S/state +EnvironmentFile=%E/state/environment +WorkingDirectory=%E/state Restart=always ExecStartPre=/bin/rm -f %t/dovecot.pid %t/dovecot.ctr-id ExecStartPre=runagent discover-services diff --git a/imageroot/systemd/user/freshclam.service b/imageroot/systemd/user/freshclam.service index d260bde4..ab48a625 100644 --- a/imageroot/systemd/user/freshclam.service +++ b/imageroot/systemd/user/freshclam.service @@ -6,5 +6,5 @@ After=clamav.service [Service] Type=oneshot ExecStart=podman exec clamav download-sigs freshclam -WorkingDirectory=%S/state +WorkingDirectory=%E/state SyslogIdentifier=%N diff --git a/imageroot/systemd/user/get-certificate.service b/imageroot/systemd/user/get-certificate.service index b215bc0c..df9a688c 100644 --- a/imageroot/systemd/user/get-certificate.service +++ b/imageroot/systemd/user/get-certificate.service @@ -4,8 +4,8 @@ Description=Get TLS certificate from Traefik [Service] Type=oneshot SuccessExitStatus=0,3 -EnvironmentFile=%S/state/environment -WorkingDirectory=%S/state +EnvironmentFile=%E/state/environment +WorkingDirectory=%E/state SyslogIdentifier=%N ExecStart=-mkdir -vp tls-certs ExecStart=-runagent get-certificate --cert-file=tls-certs/server.pem --key-file=tls-certs/server.key $POSTFIX_HOSTNAME diff --git a/imageroot/systemd/user/postfix.service b/imageroot/systemd/user/postfix.service index 11b5c0b9..20447862 100644 --- a/imageroot/systemd/user/postfix.service +++ b/imageroot/systemd/user/postfix.service @@ -5,8 +5,8 @@ Wants=get-certificate.service [Service] Environment=PODMAN_SYSTEMD_UNIT=%n -EnvironmentFile=%S/state/environment -WorkingDirectory=%S/state +EnvironmentFile=%E/state/environment +WorkingDirectory=%E/state Restart=always ExecStartPre=/bin/rm -f %t/postfix.pid %t/postfix.ctr-id ExecStartPre=/bin/mkdir -vp pcdb diff --git a/imageroot/systemd/user/rspamd.service b/imageroot/systemd/user/rspamd.service index ca38dfc3..75de9224 100644 --- a/imageroot/systemd/user/rspamd.service +++ b/imageroot/systemd/user/rspamd.service @@ -1,11 +1,11 @@ [Unit] Description=Rspamd mail filter -ConditionPathExists=%S/state/rspamd.env +ConditionPathExists=%E/state/rspamd.env [Service] Environment=PODMAN_SYSTEMD_UNIT=%n -EnvironmentFile=%S/state/environment -WorkingDirectory=%S/state +EnvironmentFile=%E/state/environment +WorkingDirectory=%E/state Restart=always ExecStartPre=/bin/rm -f %t/rspamd.pid %t/rspamd.ctr-id ExecStartPre=runagent discover-services diff --git a/imageroot/systemd/user/spam-expunge.service b/imageroot/systemd/user/spam-expunge.service index c47324b7..146b25ef 100644 --- a/imageroot/systemd/user/spam-expunge.service +++ b/imageroot/systemd/user/spam-expunge.service @@ -6,5 +6,5 @@ Requisite=dovecot.service [Service] Type=oneshot ExecStart=podman exec dovecot spam-expunge -WorkingDirectory=%S/state +WorkingDirectory=%E/state SyslogIdentifier=%N