Prepare independent ledger backup and isolated no-send recovery
Some checks failed
CI Smoke / host-smoke (push) Waiting to run
CI Smoke / container-smoke (push) Waiting to run
Transactional mail acceptance / mail (push) Failing after 1m15s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a11538-05ea-7b63-b3c7-a2df5f38898d
This commit is contained in:
tegwick 2026-10-08 00:06:59 +02:00
parent c8c018496a
commit 2ff24e991d
11 changed files with 1837 additions and 0 deletions

View file

@ -0,0 +1,21 @@
[Unit]
Description=Coherent encrypted email-connect transactional ledger backup
After=network-online.target k3s.service
Wants=network-online.target
[Service]
Type=oneshot
User=root
UMask=0077
StateDirectory=email-connect-backup
StateDirectoryMode=0700
EnvironmentFile=/etc/email-connect-backup/primary.env
ExecStart=/usr/bin/python3 /opt/email-connect-backup/backup-ledger.py backup --execute
TimeoutStartSec=40min
TimeoutStopSec=15min
KillMode=mixed
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/var/lib/email-connect-backup
ProtectHome=true

View file

@ -0,0 +1,11 @@
[Unit]
Description=Daily independent email-connect ledger recovery point
[Timer]
OnCalendar=*-*-* 04:15:00 UTC
Persistent=true
RandomizedDelaySec=5min
Unit=email-connect-ledger-backup.service
[Install]
WantedBy=timers.target

View file

@ -0,0 +1,10 @@
[Unit]
Description=Check email-connect ledger archive age and local ciphertext hash
[Service]
Type=oneshot
User=root
ExecStart=/usr/bin/python3 /opt/email-connect-backup/backup-ledger.py freshness
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true

View file

@ -0,0 +1,10 @@
[Unit]
Description=Hourly email-connect ledger backup freshness check
[Timer]
OnCalendar=hourly
Persistent=true
Unit=email-connect-ledger-freshness.service
[Install]
WantedBy=timers.target