diff --git a/docs/assets/panel-redesign/panel/components.html b/docs/assets/panel-redesign/panel/components.html index fb9957f..4fde5fc 100644 --- a/docs/assets/panel-redesign/panel/components.html +++ b/docs/assets/panel-redesign/panel/components.html @@ -172,7 +172,7 @@
07

Table conventions

Always inside table-container · an address breaks after its @
- + @@ -207,9 +207,9 @@
08

timeline

    -
  1. Done — default
  2. -
  3. Deferred — sp-warn
  4. -
  5. Bounced — sp-fail
  6. +
  7. Done — default
  8. +
  9. Deferred — sp-warn
  10. +
  11. Bounced — sp-fail
  12. Expected next — sp-pending
diff --git a/docs/assets/panel-redesign/panel/dmarc-domain.html b/docs/assets/panel-redesign/panel/dmarc-domain.html index 0417883..9748403 100644 --- a/docs/assets/panel-redesign/panel/dmarc-domain.html +++ b/docs/assets/panel-redesign/panel/dmarc-domain.html @@ -92,7 +92,7 @@
02

Reports

Time, UTCNamesp-clipStatus
TimeNamesp-clipStatus
09-21 14:01:52the row's linkA long subject is clipped with an ellipsis instead of wrapping the rowsentDetails
- + diff --git a/docs/assets/panel-redesign/panel/dmarc-report.html b/docs/assets/panel-redesign/panel/dmarc-report.html index 6895685..4cb21ea 100644 --- a/docs/assets/panel-redesign/panel/dmarc-report.html +++ b/docs/assets/panel-redesign/panel/dmarc-report.html @@ -81,8 +81,8 @@
Reporter
Outlook.com
Report id
5f1c9a0e7b2d4e61a3
-
Window
20 Sep 00:00 – 21 Sep 00:00 UTC
-
Received
2026-09-21 04:40 UTC
+
Window
20 Sep 00:00 – 21 Sep 00:00
+
Received
2026-09-21 04:40
diff --git a/docs/assets/panel-redesign/panel/dmarc.html b/docs/assets/panel-redesign/panel/dmarc.html index c7f4865..d1b51c1 100644 --- a/docs/assets/panel-redesign/panel/dmarc.html +++ b/docs/assets/panel-redesign/panel/dmarc.html @@ -77,7 +77,7 @@
01

Ingest

ok
-
Last report
2026-09-21 06:12 UTC
+
Last report
2026-09-21 06:12
This week
14 kept · 0 parse failures
Hosted addresses
dmarc-reports+<domain>@mail.example.org
Retention
500 reports a domain or 90 days
@@ -88,7 +88,7 @@
02

Recent reports

Received, UTCReporterWindowPassFail
ReceivedReporterWindowPassFail
09-21 04:40Outlook.com20 Sep1 9037View
09-21 02:15google.com20 Sep6 4100View
- + diff --git a/docs/assets/panel-redesign/panel/health.html b/docs/assets/panel-redesign/panel/health.html index 8dd0a62..4c0ee89 100644 --- a/docs/assets/panel-redesign/panel/health.html +++ b/docs/assets/panel-redesign/panel/health.html @@ -142,10 +142,10 @@
04

TLS certificate

ok
-
Expires
2026-11-02 09:14 UTC
+
Expires
2026-11-02 09:14
Names matches
mail.example.org
-
Renewal expires
2027-01-31 08:02 UTC
-
Renewal mounted
2026-10-15 03:12 UTC
+
Renewal expires
2027-01-31 08:02
+
Renewal mounted
2026-10-15 03:12

Postfix still serves the certificate above. A renewed one is waiting in the mounted file; Postfix takes it up at its next check for a renewal, at most a day after it was mounted.

diff --git a/docs/assets/panel-redesign/panel/help.html b/docs/assets/panel-redesign/panel/help.html index 94fd756..2065da8 100644 --- a/docs/assets/panel-redesign/panel/help.html +++ b/docs/assets/panel-redesign/panel/help.html @@ -146,7 +146,7 @@
04

Server

Backup and moving a domain

Full backup downloads one archive of the whole instance: data/ (the database, DKIM keys and application credentials), docker-compose.yml, .env and certs/. Both it and a domain's export ask for your account password - the one you sign in with - at every download, so a session left open is not enough to take them; wrong guesses count against the same limit as a password change. The Postfix queue is not in it. The backup is taken while the server is running, and Postfix keeps moving messages through the queue, so a copy could hold a message twice or miss it; mail still waiting for delivery is therefore not carried over, and a restored server starts with an empty queue. To keep the queue, stop the container and archive the project directory instead. The private key in certs/ has to be readable by the panel: give it to group 10998 on the host (chgrp 10998, chmod 640). Until then the panel refuses to make a backup and names the file, rather than hand over an archive without the key. It holds secrets, so leave Encrypt with a password ticked: the file is sealed as .spbk, the password is not stored, and without it nothing can be recovered. To restore, unpack it into an empty project directory (decrypt a .spbk first with selfpost-backup -decrypt) and start the same SelfPost version that made it; the panel refuses data from another version. The reverse-proxy configuration and mail.log are not included. One domain moves on its own: Export domain on its settings page writes a .json (or encrypted .spde) with its DKIM key and its applications' passwords, and Import a domain here reads it into another instance, so the published DNS needs no change.

Users and roles

The two roles are a reach, not a rank: every user is an administrator and signs in with a username and password. Global reaches the whole server — Overview, Server, the queue and every domain — and is the only role that adds or deletes domains and users. Domain reaches only the domains assigned to it, outbound and inbound separately (the same name on both lists is two assignments); All includes domains added later, and a domain user needs at least one domain or All on either list. The only global user cannot be demoted or deleted, and you cannot delete the account you are signed in with. A new password set here signs that user out of their other sessions.

-

Settings

Settings holds what is true of the whole instance. Log retention is how many days the Outbound log keeps its rows, from 7 to 365 and 90 by default; a sweep every six hours deletes older ones, and it is the main driver of how fast /data grows. With the inbound relay on there is a second number, for the Inbound log, with the same range. It does not change the rotation of mail.log, which is daily with about two weeks kept. The sending rate limit shown under it is level 1, the per-client-IP ceiling set in .env: changing it needs a restart, and no level-2 limit can exceed it. Notifications are turned on or off here for everyone.

+

Settings

Settings holds what is true of the whole instance. The time zone is the container's, TZ in .env (UTC when it is not set): every time the panel shows and every day it counts is that zone's, as are the stamps Postfix writes in mail.log, so the two always agree; changing it is a restart of the container. Log retention is how many days the Outbound log keeps its rows, from 7 to 365 and 90 by default; a sweep every six hours deletes older ones, and it is the main driver of how fast /data grows. With the inbound relay on there is a second number, for the Inbound log, with the same range. It does not change the rotation of mail.log, which is daily with about two weeks kept. The sending rate limit shown under it is level 1, the per-client-IP ceiling set in .env: changing it needs a restart, and no level-2 limit can exceed it. Notifications are turned on or off here for everyone.

Notifications

The panel writes to its users when something needs them, from postmaster@ the server's hostname. Four things are reported. A sending domain's SPF, DKIM or DMARC record stops matching: sent once two hourly checks in a row have found it so, and once more when the record matches again. A level-2 rate limit refuses mail: sent at the first refusal, then at most once a day for the same limit. The TLS certificate is 14 days from expiry, and again at 3 days if it is still the same certificate. A message has waited in the queue for more than three days, with one more message when none is left. A global user is told all of it; a domain administrator is told about the DNS records and limits of their own domains.

Each user turns notifications on or off under Account and needs an e-mail there; Server › Settings turns them off for everyone. They are the panel's own mail: not rows of the Outbound log, and not counted against any limit.

For that mail to arrive, the server's own name needs two DNS records of its own, as each of your domains does: a DKIM key, which the panel generates and signs notifications with, and an SPF record, v=spf1 a -all. Server › Settings gives both with the values to publish and whether they are in place, and its Re-check DNS checks them again once they are published; Server › Health shows them too. Without them notifications are still sent, and a receiver may file them as spam. Mail of your domains does not depend on either.

diff --git a/docs/assets/panel-redesign/panel/in-filter-lists.html b/docs/assets/panel-redesign/panel/in-filter-lists.html index fe109fb..3db3e99 100644 --- a/docs/assets/panel-redesign/panel/in-filter-lists.html +++ b/docs/assets/panel-redesign/panel/in-filter-lists.html @@ -132,7 +132,7 @@
Applied by
rspamd, from map files it rereads within seconds of a change
Files
/data/antispam/ — six, one for each list and kind of entry
-
Last written
2026-09-11 08:40 UTC
+
Last written
2026-09-11 08:40
When both lists match
Deny wins, whichever entries they are.
diff --git a/docs/assets/panel-redesign/panel/in-log.html b/docs/assets/panel-redesign/panel/in-log.html index a49eb76..e944d91 100644 --- a/docs/assets/panel-redesign/panel/in-log.html +++ b/docs/assets/panel-redesign/panel/in-log.html @@ -86,7 +86,7 @@
Received, UTCDomainReporterWindowPassFail
ReceivedDomainReporterWindowPassFail
09-21 06:12example.orggoogle.com20 Sep4120View
09-21 04:40shop.example.orgOutlook.com20 Sep1 9037View
- + diff --git a/docs/assets/panel-redesign/panel/in-quarantine-message.html b/docs/assets/panel-redesign/panel/in-quarantine-message.html index 43b910f..4e649d6 100644 --- a/docs/assets/panel-redesign/panel/in-quarantine-message.html +++ b/docs/assets/panel-redesign/panel/in-quarantine-message.html @@ -81,7 +81,7 @@
Inbound domain
lists.example.org
Client
203.0.113.140
-
Held
2026-09-21 13:59:02 UTC
+
Held
2026-09-21 13:59:02
Deleted on
2026-10-05 · in 14 days
Size
48 kB · 1 attachment (invoice.html)
Would go to
mx.internal:25
diff --git a/docs/assets/panel-redesign/panel/in-quarantine.html b/docs/assets/panel-redesign/panel/in-quarantine.html index 0f082a7..238746b 100644 --- a/docs/assets/panel-redesign/panel/in-quarantine.html +++ b/docs/assets/panel-redesign/panel/in-quarantine.html @@ -82,7 +82,7 @@
Time, UTCFromToSubjectDecisionUpstream
TimeFromToSubjectDecisionUpstream
09-21 14:00:31ci@builds.example
192.0.2.90
dev@lists.example.org[ci] nightly build passed
accept

Why

Decided byrspamd
Verdictno action, score 1.10 / 15.00
Subject[ci] nightly build passed
queuedDeny sender
09-21 14:00:18t.berg@uni.example
192.0.2.77
dev@lists.example.orgRe: [dev] patch series v3
accept

Why

Decided byrspamd
Verdictno action, score 0.40 / 15.00
SubjectRe: [dev] patch series v3
sent

Upstream

Hostmx.upstream.example[198.51.100.5]:25
Reply250 2.0.0 Ok: queued as CE05D10261D
At09-21 14:00:19
Deny sender
- + diff --git a/docs/assets/panel-redesign/panel/out-domain-settings.html b/docs/assets/panel-redesign/panel/out-domain-settings.html index f7fb670..63c7a0e 100644 --- a/docs/assets/panel-redesign/panel/out-domain-settings.html +++ b/docs/assets/panel-redesign/panel/out-domain-settings.html @@ -121,7 +121,7 @@
-

Computed limit: 288 messages / 3600 s. Peak was 96 msg/h. Last recalculated yesterday 03:00 UTC.

+

Computed limit: 288 messages / 3600 s. Peak was 96 msg/h. Last recalculated yesterday 03:00.

diff --git a/docs/assets/panel-redesign/panel/out-log.html b/docs/assets/panel-redesign/panel/out-log.html index 2fbe63c..de3801c 100644 --- a/docs/assets/panel-redesign/panel/out-log.html +++ b/docs/assets/panel-redesign/panel/out-log.html @@ -87,7 +87,7 @@
Held, UTCFromToSubjectWhySizeDeleted in
HeldFromToSubjectWhySizeDeleted in
09-21 13:59:02invoice@partner-billing.exampleowner@lists.example.orgOutstanding invoice — action requiredscore 9.8 · PHISHING48 kB14 daysReview
09-20 22:14:40no-reply@shipping-update.examplejobs@acme.ioYour parcel could not be deliveredscore 8.1 · URL_SHORTENER12 kB13 daysReview
- + diff --git a/docs/assets/panel-redesign/panel/out-message.html b/docs/assets/panel-redesign/panel/out-message.html index 46e699c..1e7fb70 100644 --- a/docs/assets/panel-redesign/panel/out-message.html +++ b/docs/assets/panel-redesign/panel/out-message.html @@ -81,8 +81,8 @@
Domain
example.org
Application
alerts
-
Accepted
2026-09-21 13:58:07 UTC
-
Status reported
2026-09-21 13:58:09 UTC
+
Accepted
2026-09-21 13:58:07
+
Status reported
2026-09-21 13:58:09
Queue id
4XcB7k2Jm9z1
Journal id
184220
@@ -94,9 +94,9 @@
02

History

    -
  1. Accepted from alerts at 198.51.100.7
  2. -
  3. Deferred — the receiving server asked to retry later
  4. -
  5. Still in the queue; kept for 5 days, then bounced
  6. +
  7. Accepted from alerts at 198.51.100.7
  8. +
  9. Deferred — the receiving server asked to retry later
  10. +
  11. Still in the queue; kept for 5 days, then bounced
diff --git a/docs/assets/panel-redesign/panel/out-queue.html b/docs/assets/panel-redesign/panel/out-queue.html index c85d931..d111c2d 100644 --- a/docs/assets/panel-redesign/panel/out-queue.html +++ b/docs/assets/panel-redesign/panel/out-queue.html @@ -76,7 +76,7 @@
01

Waiting

1 message · 3.1 kB
Time, UTCFromToSubjectStatus
TimeFromToSubjectStatus
09-21 14:01:52shop@shop.example.orgm.keller@gmx.deYour order #48213 has shippedsentDetails
09-21 14:01:50shop@shop.example.organna.lind@outlook.comYour order #48212 has shippedsentDetails
- + diff --git a/docs/assets/panel-redesign/panel/outlines.json b/docs/assets/panel-redesign/panel/outlines.json index 4f4107e..18f7b01 100644 --- a/docs/assets/panel-redesign/panel/outlines.json +++ b/docs/assets/panel-redesign/panel/outlines.json @@ -403,7 +403,8 @@ { "is-6": [ "box[Notification mail]:record×2", - "box[Sending rate limits]:body" + "box[Sending rate limits]:body", + "box[Time zone]:body" ] } ] diff --git a/docs/assets/panel-redesign/panel/overview.html b/docs/assets/panel-redesign/panel/overview.html index 97027e8..ff98488 100644 --- a/docs/assets/panel-redesign/panel/overview.html +++ b/docs/assets/panel-redesign/panel/overview.html @@ -72,7 +72,7 @@

Mail is flowing. One thing needs attention.

The TLS certificate expires in 12 days and has not renewed yet.

-
Updated 14:02:31 UTC
refreshes every 10 s
+
Updated 14:02:31
refreshes every 10 s
diff --git a/docs/assets/panel-redesign/panel/preflight.html b/docs/assets/panel-redesign/panel/preflight.html index 30223e7..29dd6dc 100644 --- a/docs/assets/panel-redesign/panel/preflight.html +++ b/docs/assets/panel-redesign/panel/preflight.html @@ -76,7 +76,7 @@
-
01

Checks

Ran 14:02 UTC · 3.1 s
+
01

Checks

Ran 14:02 · 3.1 s
Queue idArrived, UTCFromToLast reply
Queue idArrivedFromToLast reply
4XcB7k2Jm9z109-21 13:58:07alerts@example.orgnoc@example.org451 4.7.1 Greylisted, try again in 5 minutesDetails
@@ -108,7 +108,7 @@
-
Last test
14:03 UTC to mix@elsewhere.example
+
Last test
14:03 to mix@elsewhere.example
Result
queued 4XcC1d8Pq2z1
Then
Follow it in the outbound log
diff --git a/docs/assets/panel-redesign/panel/settings.html b/docs/assets/panel-redesign/panel/settings.html index 57c74a9..4296b00 100644 --- a/docs/assets/panel-redesign/panel/settings.html +++ b/docs/assets/panel-redesign/panel/settings.html @@ -139,6 +139,16 @@
+ +
+
05

Time zone

Read-only
+
+
+
Zone
Europe/Moscow
UTC+03:00. Set in .env (TZ); restart to change.
+
+

Every time the panel shows, and every day it counts - today on Health, the days of the statistics - is this zone's, and so are the stamps of mail.log.

+
+
diff --git a/docs/assets/panel-redesign/panel/src/components.html b/docs/assets/panel-redesign/panel/src/components.html index 84e4a77..3e0fb22 100644 --- a/docs/assets/panel-redesign/panel/src/components.html +++ b/docs/assets/panel-redesign/panel/src/components.html @@ -106,7 +106,7 @@
07

Table conventions

Always inside table-container · an address breaks after its @
CheckResultFoundWhat to do
- + @@ -141,9 +141,9 @@
08

timeline

    -
  1. Done — default
  2. -
  3. Deferred — sp-warn
  4. -
  5. Bounced — sp-fail
  6. +
  7. Done — default
  8. +
  9. Deferred — sp-warn
  10. +
  11. Bounced — sp-fail
  12. Expected next — sp-pending
diff --git a/docs/assets/panel-redesign/panel/src/dmarc-domain.html b/docs/assets/panel-redesign/panel/src/dmarc-domain.html index 5cf4774..d7fad65 100644 --- a/docs/assets/panel-redesign/panel/src/dmarc-domain.html +++ b/docs/assets/panel-redesign/panel/src/dmarc-domain.html @@ -26,7 +26,7 @@
02

Reports

Time, UTCNamesp-clipStatus
TimeNamesp-clipStatus
09-21 14:01:52the row's linkA long subject is clipped with an ellipsis instead of wrapping the rowsentDetails
- + diff --git a/docs/assets/panel-redesign/panel/src/dmarc-report.html b/docs/assets/panel-redesign/panel/src/dmarc-report.html index 79dc969..9304adf 100644 --- a/docs/assets/panel-redesign/panel/src/dmarc-report.html +++ b/docs/assets/panel-redesign/panel/src/dmarc-report.html @@ -15,8 +15,8 @@
Reporter
Outlook.com
Report id
5f1c9a0e7b2d4e61a3
-
Window
20 Sep 00:00 – 21 Sep 00:00 UTC
-
Received
2026-09-21 04:40 UTC
+
Window
20 Sep 00:00 – 21 Sep 00:00
+
Received
2026-09-21 04:40
diff --git a/docs/assets/panel-redesign/panel/src/dmarc.html b/docs/assets/panel-redesign/panel/src/dmarc.html index 0233fad..e62beab 100644 --- a/docs/assets/panel-redesign/panel/src/dmarc.html +++ b/docs/assets/panel-redesign/panel/src/dmarc.html @@ -11,7 +11,7 @@
01

Ingest

ok
-
Last report
2026-09-21 06:12 UTC
+
Last report
2026-09-21 06:12
This week
14 kept · 0 parse failures
Hosted addresses
dmarc-reports+<domain>@mail.example.org
Retention
500 reports a domain or 90 days
@@ -22,7 +22,7 @@
02

Recent reports

Received, UTCReporterWindowPassFail
ReceivedReporterWindowPassFail
09-21 04:40Outlook.com20 Sep1 9037View
09-21 02:15google.com20 Sep6 4100View
- + diff --git a/docs/assets/panel-redesign/panel/src/health.html b/docs/assets/panel-redesign/panel/src/health.html index 88a9a6e..55cd1f0 100644 --- a/docs/assets/panel-redesign/panel/src/health.html +++ b/docs/assets/panel-redesign/panel/src/health.html @@ -76,10 +76,10 @@
04

TLS certificate

ok
-
Expires
2026-11-02 09:14 UTC
+
Expires
2026-11-02 09:14
Names matches
mail.example.org
-
Renewal expires
2027-01-31 08:02 UTC
-
Renewal mounted
2026-10-15 03:12 UTC
+
Renewal expires
2027-01-31 08:02
+
Renewal mounted
2026-10-15 03:12

Postfix still serves the certificate above. A renewed one is waiting in the mounted file; Postfix takes it up at its next check for a renewal, at most a day after it was mounted.

diff --git a/docs/assets/panel-redesign/panel/src/help.html b/docs/assets/panel-redesign/panel/src/help.html index dcf6258..28dfd28 100644 --- a/docs/assets/panel-redesign/panel/src/help.html +++ b/docs/assets/panel-redesign/panel/src/help.html @@ -80,7 +80,7 @@
04

Server

Backup and moving a domain

Full backup downloads one archive of the whole instance: data/ (the database, DKIM keys and application credentials), docker-compose.yml, .env and certs/. Both it and a domain's export ask for your account password - the one you sign in with - at every download, so a session left open is not enough to take them; wrong guesses count against the same limit as a password change. The Postfix queue is not in it. The backup is taken while the server is running, and Postfix keeps moving messages through the queue, so a copy could hold a message twice or miss it; mail still waiting for delivery is therefore not carried over, and a restored server starts with an empty queue. To keep the queue, stop the container and archive the project directory instead. The private key in certs/ has to be readable by the panel: give it to group 10998 on the host (chgrp 10998, chmod 640). Until then the panel refuses to make a backup and names the file, rather than hand over an archive without the key. It holds secrets, so leave Encrypt with a password ticked: the file is sealed as .spbk, the password is not stored, and without it nothing can be recovered. To restore, unpack it into an empty project directory (decrypt a .spbk first with selfpost-backup -decrypt) and start the same SelfPost version that made it; the panel refuses data from another version. The reverse-proxy configuration and mail.log are not included. One domain moves on its own: Export domain on its settings page writes a .json (or encrypted .spde) with its DKIM key and its applications' passwords, and Import a domain here reads it into another instance, so the published DNS needs no change.

Users and roles

The two roles are a reach, not a rank: every user is an administrator and signs in with a username and password. Global reaches the whole server — Overview, Server, the queue and every domain — and is the only role that adds or deletes domains and users. Domain reaches only the domains assigned to it, outbound and inbound separately (the same name on both lists is two assignments); All includes domains added later, and a domain user needs at least one domain or All on either list. The only global user cannot be demoted or deleted, and you cannot delete the account you are signed in with. A new password set here signs that user out of their other sessions.

-

Settings

Settings holds what is true of the whole instance. Log retention is how many days the Outbound log keeps its rows, from 7 to 365 and 90 by default; a sweep every six hours deletes older ones, and it is the main driver of how fast /data grows. With the inbound relay on there is a second number, for the Inbound log, with the same range. It does not change the rotation of mail.log, which is daily with about two weeks kept. The sending rate limit shown under it is level 1, the per-client-IP ceiling set in .env: changing it needs a restart, and no level-2 limit can exceed it. Notifications are turned on or off here for everyone.

+

Settings

Settings holds what is true of the whole instance. The time zone is the container's, TZ in .env (UTC when it is not set): every time the panel shows and every day it counts is that zone's, as are the stamps Postfix writes in mail.log, so the two always agree; changing it is a restart of the container. Log retention is how many days the Outbound log keeps its rows, from 7 to 365 and 90 by default; a sweep every six hours deletes older ones, and it is the main driver of how fast /data grows. With the inbound relay on there is a second number, for the Inbound log, with the same range. It does not change the rotation of mail.log, which is daily with about two weeks kept. The sending rate limit shown under it is level 1, the per-client-IP ceiling set in .env: changing it needs a restart, and no level-2 limit can exceed it. Notifications are turned on or off here for everyone.

Notifications

The panel writes to its users when something needs them, from postmaster@ the server's hostname. Four things are reported. A sending domain's SPF, DKIM or DMARC record stops matching: sent once two hourly checks in a row have found it so, and once more when the record matches again. A level-2 rate limit refuses mail: sent at the first refusal, then at most once a day for the same limit. The TLS certificate is 14 days from expiry, and again at 3 days if it is still the same certificate. A message has waited in the queue for more than three days, with one more message when none is left. A global user is told all of it; a domain administrator is told about the DNS records and limits of their own domains.

Each user turns notifications on or off under Account and needs an e-mail there; Server › Settings turns them off for everyone. They are the panel's own mail: not rows of the Outbound log, and not counted against any limit.

For that mail to arrive, the server's own name needs two DNS records of its own, as each of your domains does: a DKIM key, which the panel generates and signs notifications with, and an SPF record, v=spf1 a -all. Server › Settings gives both with the values to publish and whether they are in place, and its Re-check DNS checks them again once they are published; Server › Health shows them too. Without them notifications are still sent, and a receiver may file them as spam. Mail of your domains does not depend on either.

diff --git a/docs/assets/panel-redesign/panel/src/in-filter-lists.html b/docs/assets/panel-redesign/panel/src/in-filter-lists.html index 3ff1b02..85db3cb 100644 --- a/docs/assets/panel-redesign/panel/src/in-filter-lists.html +++ b/docs/assets/panel-redesign/panel/src/in-filter-lists.html @@ -66,7 +66,7 @@
Applied by
rspamd, from map files it rereads within seconds of a change
Files
/data/antispam/ — six, one for each list and kind of entry
-
Last written
2026-09-11 08:40 UTC
+
Last written
2026-09-11 08:40
When both lists match
Deny wins, whichever entries they are.
diff --git a/docs/assets/panel-redesign/panel/src/in-log.html b/docs/assets/panel-redesign/panel/src/in-log.html index 4ddf50e..a3ef6a5 100644 --- a/docs/assets/panel-redesign/panel/src/in-log.html +++ b/docs/assets/panel-redesign/panel/src/in-log.html @@ -20,7 +20,7 @@
Received, UTCDomainReporterWindowPassFail
ReceivedDomainReporterWindowPassFail
09-21 06:12example.orggoogle.com20 Sep4120View
09-21 04:40shop.example.orgOutlook.com20 Sep1 9037View
- + diff --git a/docs/assets/panel-redesign/panel/src/in-quarantine-message.html b/docs/assets/panel-redesign/panel/src/in-quarantine-message.html index a4a3802..ba5e4af 100644 --- a/docs/assets/panel-redesign/panel/src/in-quarantine-message.html +++ b/docs/assets/panel-redesign/panel/src/in-quarantine-message.html @@ -15,7 +15,7 @@
Inbound domain
lists.example.org
Client
203.0.113.140
-
Held
2026-09-21 13:59:02 UTC
+
Held
2026-09-21 13:59:02
Deleted on
2026-10-05 · in 14 days
Size
48 kB · 1 attachment (invoice.html)
Would go to
mx.internal:25
diff --git a/docs/assets/panel-redesign/panel/src/in-quarantine.html b/docs/assets/panel-redesign/panel/src/in-quarantine.html index 1511dcf..a822aab 100644 --- a/docs/assets/panel-redesign/panel/src/in-quarantine.html +++ b/docs/assets/panel-redesign/panel/src/in-quarantine.html @@ -16,7 +16,7 @@
Time, UTCFromToSubjectDecisionUpstream
TimeFromToSubjectDecisionUpstream
09-21 14:00:31ci@builds.example
192.0.2.90
dev@lists.example.org[ci] nightly build passed
accept

Why

Decided byrspamd
Verdictno action, score 1.10 / 15.00
Subject[ci] nightly build passed
queuedDeny sender
09-21 14:00:18t.berg@uni.example
192.0.2.77
dev@lists.example.orgRe: [dev] patch series v3
accept

Why

Decided byrspamd
Verdictno action, score 0.40 / 15.00
SubjectRe: [dev] patch series v3
sent

Upstream

Hostmx.upstream.example[198.51.100.5]:25
Reply250 2.0.0 Ok: queued as CE05D10261D
At09-21 14:00:19
Deny sender
- + diff --git a/docs/assets/panel-redesign/panel/src/out-domain-settings.html b/docs/assets/panel-redesign/panel/src/out-domain-settings.html index 7d77ec1..6f144a3 100644 --- a/docs/assets/panel-redesign/panel/src/out-domain-settings.html +++ b/docs/assets/panel-redesign/panel/src/out-domain-settings.html @@ -55,7 +55,7 @@
-

Computed limit: 288 messages / 3600 s. Peak was 96 msg/h. Last recalculated yesterday 03:00 UTC.

+

Computed limit: 288 messages / 3600 s. Peak was 96 msg/h. Last recalculated yesterday 03:00.

diff --git a/docs/assets/panel-redesign/panel/src/out-log.html b/docs/assets/panel-redesign/panel/src/out-log.html index f443f54..ef2f13d 100644 --- a/docs/assets/panel-redesign/panel/src/out-log.html +++ b/docs/assets/panel-redesign/panel/src/out-log.html @@ -21,7 +21,7 @@
Held, UTCFromToSubjectWhySizeDeleted in
HeldFromToSubjectWhySizeDeleted in
09-21 13:59:02invoice@partner-billing.exampleowner@lists.example.orgOutstanding invoice — action requiredscore 9.8 · PHISHING48 kB14 daysReview
09-20 22:14:40no-reply@shipping-update.examplejobs@acme.ioYour parcel could not be deliveredscore 8.1 · URL_SHORTENER12 kB13 daysReview
- + diff --git a/docs/assets/panel-redesign/panel/src/out-message.html b/docs/assets/panel-redesign/panel/src/out-message.html index 52fe156..939dbd1 100644 --- a/docs/assets/panel-redesign/panel/src/out-message.html +++ b/docs/assets/panel-redesign/panel/src/out-message.html @@ -15,8 +15,8 @@
Domain
example.org
Application
alerts
-
Accepted
2026-09-21 13:58:07 UTC
-
Status reported
2026-09-21 13:58:09 UTC
+
Accepted
2026-09-21 13:58:07
+
Status reported
2026-09-21 13:58:09
Queue id
4XcB7k2Jm9z1
Journal id
184220
@@ -28,9 +28,9 @@
02

History

    -
  1. Accepted from alerts at 198.51.100.7
  2. -
  3. Deferred — the receiving server asked to retry later
  4. -
  5. Still in the queue; kept for 5 days, then bounced
  6. +
  7. Accepted from alerts at 198.51.100.7
  8. +
  9. Deferred — the receiving server asked to retry later
  10. +
  11. Still in the queue; kept for 5 days, then bounced
diff --git a/docs/assets/panel-redesign/panel/src/out-queue.html b/docs/assets/panel-redesign/panel/src/out-queue.html index 8e0e5ed..b411312 100644 --- a/docs/assets/panel-redesign/panel/src/out-queue.html +++ b/docs/assets/panel-redesign/panel/src/out-queue.html @@ -10,7 +10,7 @@
01

Waiting

1 message · 3.1 kB
Time, UTCFromToSubjectStatus
TimeFromToSubjectStatus
09-21 14:01:52shop@shop.example.orgm.keller@gmx.deYour order #48213 has shippedsentDetails
09-21 14:01:50shop@shop.example.organna.lind@outlook.comYour order #48212 has shippedsentDetails
- + diff --git a/docs/assets/panel-redesign/panel/src/overview.html b/docs/assets/panel-redesign/panel/src/overview.html index bf9fa44..8b936c0 100644 --- a/docs/assets/panel-redesign/panel/src/overview.html +++ b/docs/assets/panel-redesign/panel/src/overview.html @@ -6,7 +6,7 @@

Mail is flowing. One thing needs attention.

The TLS certificate expires in 12 days and has not renewed yet.

-
Updated 14:02:31 UTC
refreshes every 10 s
+
Updated 14:02:31
refreshes every 10 s
diff --git a/docs/assets/panel-redesign/panel/src/preflight.html b/docs/assets/panel-redesign/panel/src/preflight.html index ba3b009..a8571d4 100644 --- a/docs/assets/panel-redesign/panel/src/preflight.html +++ b/docs/assets/panel-redesign/panel/src/preflight.html @@ -10,7 +10,7 @@
-
01

Checks

Ran 14:02 UTC · 3.1 s
+
01

Checks

Ran 14:02 · 3.1 s
Queue idArrived, UTCFromToLast reply
Queue idArrivedFromToLast reply
4XcB7k2Jm9z109-21 13:58:07alerts@example.orgnoc@example.org451 4.7.1 Greylisted, try again in 5 minutesDetails
@@ -42,7 +42,7 @@
-
Last test
14:03 UTC to mix@elsewhere.example
+
Last test
14:03 to mix@elsewhere.example
Result
queued 4XcC1d8Pq2z1
Then
Follow it in the outbound log
diff --git a/docs/assets/panel-redesign/panel/src/settings.html b/docs/assets/panel-redesign/panel/src/settings.html index b2c56d4..5ba9185 100644 --- a/docs/assets/panel-redesign/panel/src/settings.html +++ b/docs/assets/panel-redesign/panel/src/settings.html @@ -73,5 +73,15 @@
+ +
+
05

Time zone

Read-only
+
+
+
Zone
Europe/Moscow
UTC+03:00. Set in .env (TZ); restart to change.
+
+

Every time the panel shows, and every day it counts - today on Health, the days of the statistics - is this zone's, and so are the stamps of mail.log.

+
+
CheckResultFoundWhat to do