From e0ccff257d2a8e9c87c464e9d3c9df8cab5fdaa0 Mon Sep 17 00:00:00 2001 From: Mix Date: Mon, 12 Oct 2026 00:54:04 +0300 Subject: [PATCH] design: in-filter-lists, kind column, matches, the note on a sheet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owner, 2026-10-12, on Inbound > Filter lists as built: "Note хочется вынести в лист, подсказку, раскрывающийся блок. Тип в отдельную колонку. Ещё полезно будет дать статистику использования правила, чтобы удалять устаревшие." Drawn, then accepted ("Да") together with counting the matches from the Inbound log. - Kind is a column of its own; the tag no longer wraps under the value. - Note and Added leave the table for the entry's sheet, opened by the kind tag (of his three - sheet, tooltip, disclosure - the sheet: it exists and works under a finger). - Matched: how often the entry decided a message, or "never". The sheet adds the window ("in the last 90 days") and the last match. A fifth column for the last match did not fit half the page width. Help, Filter lists: what Matched counts and what "never" suggests. check.py: 32 screens, 0 violations; outlines.json unchanged. Co-Authored-By: Claude Opus 5.5 --- docs/assets/panel-redesign/panel/help.html | 2 +- .../panel-redesign/panel/in-filter-lists.html | 14 +++++++------- docs/assets/panel-redesign/panel/src/help.html | 2 +- .../panel-redesign/panel/src/in-filter-lists.html | 14 +++++++------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/assets/panel-redesign/panel/help.html b/docs/assets/panel-redesign/panel/help.html index ed34721..f20bee1 100644 --- a/docs/assets/panel-redesign/panel/help.html +++ b/docs/assets/panel-redesign/panel/help.html @@ -135,7 +135,7 @@

Valid recipients

Choose whom this domain accepts. Listed addresses only: the relay accepts exactly the addresses you list, one per line or comma-separated, and refuses any other while the sender is still connected, so it never has to send a bounce for them. Any recipient: everything at the domain is accepted and passed on, and an address the upstream then rejects comes back as a bounce from this server to a sender who is often forged — backscatter. Prefer a list, and keep it in step with the mailboxes upstream.

Spam filter

The spam filter belongs to the server, not to a domain. The server's administrator attaches it in the server's .env, and from then on every inbound domain is screened by it before mail is handed on; the box shows on or off and has nothing to switch. Off means mail goes to the upstream unfiltered. While the filter is down, mail is either accepted unfiltered (the default) or deferred, so the sending server tries again later, as the server's setting says; the box states which.

Inbound log

One row per recipient of a message offered on port 25 for an inbound domain, with what was decided: accept — handed on to the upstream; reject — refused for good; tempfail — the sender was asked to come back later; quarantine — held by the filter. Why names who decided. rspamd is the spam filter, with its action, the score against the reject threshold and the heaviest symbols; postfix is the relay's own rule — an unknown recipient, a sender domain that does not exist — with its reply; selfpost means nobody judged the message: it was relayed with no filter attached. Accept says what this server did, not what the upstream did with the message afterwards.

Accepted mail is recorded as it passes; refused mail is read from mail.log, so its row has no subject, and a message refused after its text was sent is one row however many recipients it had. A refusal to relay for a domain that is not an inbound one is every scanner on the internet and is not recorded. Rows are kept for the number of days set in Settings, and never more than 10 000.

-

Filter lists

Two lists for the whole server that correct the spam filter by hand. An entry is a sender address, a sender domain — that domain, not its subdomains — or a client address or network in CIDR form. A sender on the Deny list is refused outright. A sender on the Allow list is given a weight no spam score outweighs, so the filter lets it through. When entries of both lists match one message, Deny wins.

SelfPost does not apply the lists itself: it writes them as files under /data/antispam/, and rspamd rereads a file within seconds of a change. With the spam filter off the lists are kept and can be edited, but nothing reads them. The sender matched is the envelope sender — the one in the log — not the From line a mail program shows.

+

Filter lists

Two lists for the whole server that correct the spam filter by hand. An entry is a sender address, a sender domain — that domain, not its subdomains — or a client address or network in CIDR form. A sender on the Deny list is refused outright. A sender on the Allow list is given a weight no spam score outweighs, so the filter lets it through. When entries of both lists match one message, Deny wins.

SelfPost does not apply the lists itself: it writes them as files under /data/antispam/, and rspamd rereads a file within seconds of a change. With the spam filter off the lists are kept and can be edited, but nothing reads them. The sender matched is the envelope sender — the one in the log — not the From line a mail program shows. Matched counts the messages in the Inbound log that the entry decided, so it reaches back as far as the log does; never means not once in that time, and such an entry is one to consider removing.

04

Server

diff --git a/docs/assets/panel-redesign/panel/in-filter-lists.html b/docs/assets/panel-redesign/panel/in-filter-lists.html index e448bc3..1a4d22d 100644 --- a/docs/assets/panel-redesign/panel/in-filter-lists.html +++ b/docs/assets/panel-redesign/panel/in-filter-lists.html @@ -103,11 +103,11 @@
02

Deny

3 entries · wins over Allow
- + - - - + + +
ValueNoteAdded
ValueKindMatched
bulk.example domainnewsletter nobody subscribed to2026-09-02
198.51.100.0/24 ipdictionary attack on lists.example.org2026-08-19
win@lottery.example address—2026-07-30
bulk.example
domain

bulk.example

Notenewsletter nobody subscribed to
Added2026-09-02
Matched41 in the last 90 days
Last match2026-09-21 13:57
41
198.51.100.0/24
ip

198.51.100.0/24

Notedictionary attack on lists.example.org
Added2026-08-19
Matched1203 in the last 90 days
Last match2026-09-21 09:12
1203
win@lottery.example
address

win@lottery.example

Note—
Added2026-07-30
Matchednever in the last 90 days
never
@@ -116,10 +116,10 @@
03

Allow

2 entries
- + - - + +
ValueNoteAdded
ValueKindMatched
partner.example domaininvoices were scored as spam2026-09-11
noreply@github.example addresssecurity advisories2026-06-04
partner.example
domain

partner.example

Noteinvoices were scored as spam
Added2026-09-11
Matched7 in the last 90 days
Last match2026-09-19 16:40
7
noreply@github.example
address

noreply@github.example

Notesecurity advisories
Added2026-06-04
Matched18 in the last 90 days
Last match2026-09-21 13:30
18
diff --git a/docs/assets/panel-redesign/panel/src/help.html b/docs/assets/panel-redesign/panel/src/help.html index d8ae0bf..36463d6 100644 --- a/docs/assets/panel-redesign/panel/src/help.html +++ b/docs/assets/panel-redesign/panel/src/help.html @@ -69,7 +69,7 @@

Valid recipients

Choose whom this domain accepts. Listed addresses only: the relay accepts exactly the addresses you list, one per line or comma-separated, and refuses any other while the sender is still connected, so it never has to send a bounce for them. Any recipient: everything at the domain is accepted and passed on, and an address the upstream then rejects comes back as a bounce from this server to a sender who is often forged — backscatter. Prefer a list, and keep it in step with the mailboxes upstream.

Spam filter

The spam filter belongs to the server, not to a domain. The server's administrator attaches it in the server's .env, and from then on every inbound domain is screened by it before mail is handed on; the box shows on or off and has nothing to switch. Off means mail goes to the upstream unfiltered. While the filter is down, mail is either accepted unfiltered (the default) or deferred, so the sending server tries again later, as the server's setting says; the box states which.

Inbound log

One row per recipient of a message offered on port 25 for an inbound domain, with what was decided: accept — handed on to the upstream; reject — refused for good; tempfail — the sender was asked to come back later; quarantine — held by the filter. Why names who decided. rspamd is the spam filter, with its action, the score against the reject threshold and the heaviest symbols; postfix is the relay's own rule — an unknown recipient, a sender domain that does not exist — with its reply; selfpost means nobody judged the message: it was relayed with no filter attached. Accept says what this server did, not what the upstream did with the message afterwards.

Accepted mail is recorded as it passes; refused mail is read from mail.log, so its row has no subject, and a message refused after its text was sent is one row however many recipients it had. A refusal to relay for a domain that is not an inbound one is every scanner on the internet and is not recorded. Rows are kept for the number of days set in Settings, and never more than 10 000.

-

Filter lists

Two lists for the whole server that correct the spam filter by hand. An entry is a sender address, a sender domain — that domain, not its subdomains — or a client address or network in CIDR form. A sender on the Deny list is refused outright. A sender on the Allow list is given a weight no spam score outweighs, so the filter lets it through. When entries of both lists match one message, Deny wins.

SelfPost does not apply the lists itself: it writes them as files under /data/antispam/, and rspamd rereads a file within seconds of a change. With the spam filter off the lists are kept and can be edited, but nothing reads them. The sender matched is the envelope sender — the one in the log — not the From line a mail program shows.

+

Filter lists

Two lists for the whole server that correct the spam filter by hand. An entry is a sender address, a sender domain — that domain, not its subdomains — or a client address or network in CIDR form. A sender on the Deny list is refused outright. A sender on the Allow list is given a weight no spam score outweighs, so the filter lets it through. When entries of both lists match one message, Deny wins.

SelfPost does not apply the lists itself: it writes them as files under /data/antispam/, and rspamd rereads a file within seconds of a change. With the spam filter off the lists are kept and can be edited, but nothing reads them. The sender matched is the envelope sender — the one in the log — not the From line a mail program shows. Matched counts the messages in the Inbound log that the entry decided, so it reaches back as far as the log does; never means not once in that time, and such an entry is one to consider removing.

04

Server

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 588149b..3ff1b02 100644 --- a/docs/assets/panel-redesign/panel/src/in-filter-lists.html +++ b/docs/assets/panel-redesign/panel/src/in-filter-lists.html @@ -37,11 +37,11 @@
02

Deny

3 entries · wins over Allow
- + - - - + + +
ValueNoteAdded
ValueKindMatched
bulk.example domainnewsletter nobody subscribed to2026-09-02
198.51.100.0/24 ipdictionary attack on lists.example.org2026-08-19
win@lottery.example address—2026-07-30
bulk.example
domain

bulk.example

Notenewsletter nobody subscribed to
Added2026-09-02
Matched41 in the last 90 days
Last match2026-09-21 13:57
41
198.51.100.0/24
ip

198.51.100.0/24

Notedictionary attack on lists.example.org
Added2026-08-19
Matched1203 in the last 90 days
Last match2026-09-21 09:12
1203
win@lottery.example
address

win@lottery.example

Note—
Added2026-07-30
Matchednever in the last 90 days
never
@@ -50,10 +50,10 @@
03

Allow

2 entries
- + - - + +
ValueNoteAdded
ValueKindMatched
partner.example domaininvoices were scored as spam2026-09-11
noreply@github.example addresssecurity advisories2026-06-04
partner.example
domain

partner.example

Noteinvoices were scored as spam
Added2026-09-11
Matched7 in the last 90 days
Last match2026-09-19 16:40
7
noreply@github.example
address

noreply@github.example

Notesecurity advisories
Added2026-06-04
Matched18 in the last 90 days
Last match2026-09-21 13:30
18