Skip to main content

Housekeeping

The panel's recurring work runs from one unit, elpan-panel-scheduler.service, which sends each task to the background workers at its time. There is exactly one scheduler; do not run a second. The housekeeping:* commands run the same sweeps on demand, with a cut-off of your own.

What is purged, and when​

Every sweep below runs nightly unless said otherwise, and the command takes --before=<date> ("-100 days", 2026-01-01) to use another cut-off than the default.

CommandRemovesDefault
housekeeping:maildelivery:purgeMail delivery records: the rows of the email traffic log.Older than 100 days.
housekeeping:maildeliveryattempt:purgeThe delivery attempts behind those records.Older than 100 days.
housekeeping:emailrejection:purgeRejected-mail records, which follow the traffic log's window.Older than 100 days.
housekeeping:forwarderbounce:purgeForwarding delivery failures.Older than 180 days.
housekeeping:groupbounce:purgeGroup delivery failures.Older than 180 days.
housekeeping:mailloginsource:purgeMailbox sign-in sources.Older than 180 days.
housekeeping:credential-use:purgeThe address of a credential's last use; the time stays.Older than 180 days.
housekeeping:webapplicationtask:purgeSettled web application jobs beyond the most recent ones per installation (--keep).Keeps 50.
housekeeping:webapplicationtask:reapSettles web application jobs whose worker died (--after-hours). Hourly, not nightly; Upgrade Runs has the details.Silent for 6 hours.

The retention of the traffic log is what an account holder sees in their Email Traffic Log; the admin app's view across accounts is Email Traffic Log.

Sweeps without a housekeeping:* command run on the same scheduler: the auth log and resolved sign-in help requests after 90 days (Auth Log), revoked API keys a week after revocation, assistant conversations idle for two months (AI assistant), Web Push devices unseen for a year, expired certificates (certificate:purge), the DNS error log (dns:error-log:prune), mailing-list posts and spool hourly (mailing-list:housekeeping), backup tasks finished 90 days ago, and the nightly account:purge:due that queues the deletion of terminated accounts past their grace period when automatic deletion is on (Suspend, terminate and delete an account).

The storage recount​

Every ten minutes the scheduler re-measures the storage of up to 50 accounts: first those never measured, then the ones whose figure is more than an hour old, oldest first. The figure drives the account's storage ratio and the threshold notices to its holder.

elpanctl housekeeping:account:update-storage

runs the same pass now, without the delay. Accounts being purged are skipped.

Repairs​

Two commands repair DNS records of websites rather than purge anything. Neither is scheduled; both take --dry-run to report without changing anything.

CommandDoes
housekeeping:website:resync-recordsRegenerates the A and AAAA records a website service should have and lacks.
housekeeping:website:resync-https-recordsPublishes the HTTPS service binding record for the HTTPS-only web hosts that lack it.

See that it ran​

The scheduler's journal (journalctl -u elpan-panel-scheduler.service) has each task. With Telemetry enrolled, elpan_scheduler_task_last_success_timestamp_seconds{task} and elpan_scheduler_task_next_run_timestamp_seconds{task} say when every scheduled task last succeeded and when it is next due, so a sweep that stopped is visible from outside rather than silent.