quarantine: restore behavior of selecting next in list after action
This fixes a UX regression stemming from the recently introduced
commit 9aed379a700a0bc3bc26fa32d43a5bab75eb206b
"spam quarantine: avoid full store reload on single-element actions"
A load restored the saved selection after load complete, with the
neat and very useful feature to jump to the next in line if the old
one did not exist anymore.
Call this now factored out code part ourself in the fast-path.
This was reported in the forum:
https://forum.proxmox.com/threads/proxmox-mail-gateway-6-4-released.86760/#post-380971
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Tue, 23 Mar 2021 11:21:53 +0000 (12:21 +0100)]
spam quarantine: avoid full store reload on single-element actions
A store load may require several seconds to complete, which can get
frustrating fast.
For single actions we have a callback which gets only executed on a
successful API call, so we can just remove the entry there directly
from the in-memory store.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Tue, 23 Mar 2021 11:15:56 +0000 (12:15 +0100)]
spam quarantine: batch actions into 2500-sized chunks
With ~20 bytes per message-id and separator we get over the current
HTTP post size limit of 64 KiB with ~ 3200 messages.
As 2500 is a relatively nice number for humans to deal with rather go
for that one, that leaves also some room for potential longer IDs in
the future.
Send the batches of async in pairs, as with that the pmgproxy can
still cope well and is not overloaded.
Mask the whole list panel with a 'Processing...' loading-mask during
sending of requests affecting multiple messages, so that the user
gets some instant visible feedback that something is actually
happening (the api calls may return only after a few seconds).
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Mon, 22 Mar 2021 08:50:10 +0000 (09:50 +0100)]
fix #3164: allow one to display all quarantined spam mails
If the API call returned more than one pmail entry, inject an "all"
entry which, if selected, drops the user parameter and loads the
quarantine mails of all users from the backend.
The webinterface has only some issues regarding deselection (all in
the grid header or if we need to deselect due to the search filtering
out some elements) - for that the underlying issue was found and a
widget toolkit patch was provided.
The rest seems now pretty performant, albeit more than a few 100k
mails may become a problem here. But, in such big setups the mail
admin won't tinker to much whith the users mail anyway, if they are
even alowed to do so depending on their jurisdictions privacy laws
and companies privacy policy.
So, basically this is more for evaluation or for smaller setups but
got quite often requested, and as there's not more data
exposed/returned then already available I see no real argument
against it.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Stoiko Ivanov [Tue, 2 Feb 2021 13:03:17 +0000 (14:03 +0100)]
statistics: use new api call for detailed stats
the new /statistics/detail api calls takes the type (contact, sender,
receiver) and address for which to display the statistics as explicit
parameter instead of path-component.
This makes it possible to accept '/' as part of an e-mail address
which is allowed (in the local-part by RFC5322 [0], and accepted by
postfix.
Thomas Lamprecht [Tue, 17 Nov 2020 18:21:14 +0000 (19:21 +0100)]
pbs: followup: actually set cbind for all elements
we cannot have xtype nor cbind in the defaults, as moving xtype there
breaks our cbind "when to stop descendant+apply" heuristic and cbind
cannot be moved there as it'd be only copied over by initComponent
and that happens later than the cbind apply step.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Stoiko Ivanov [Thu, 12 Nov 2020 17:57:57 +0000 (18:57 +0100)]
RegexTester: fix getting reference to regex field
the regular expression field is not necessarily after the regex tester
(mostly it is before). In order to be more robust, use the child
method of the parent window instead of previousSibling of the button.
The child method gets any direct descendant matching the query, the
sibling one is always directional and there's no method for "any
sibling".
Tested with:
* mailproxy whitelist
* match field
* match filename
* who object
Thomas Lamprecht [Fri, 23 Oct 2020 11:09:46 +0000 (13:09 +0200)]
buildsys: fix makefile dependencies
To ensure relevant stuff is always rebuild include the CSS and image
files in the install dependencies.
Further, mark the meta targets for building the pmgmanagerlib normal
and mobile versions as PHONY, as they only re-direct the make to the
respective makefile we need to ensure it always does, as else it
circumvents the actual dependency declaration of the responsible
targets.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Stoiko Ivanov [Thu, 28 May 2020 08:04:59 +0000 (10:04 +0200)]
fix #1976: enable remoteSort for PostfixMailQueue
The mailq results are potentially very large, why a BufferedStore is used.
BufferedStores only support [0] remote filtering (which is already done) and
remote sorting (which this patch enables).
simpleSortMode (getting sortfield and sortdirection as two parameters instead
of an array with multiple objects containing those fields), is enabled to
work with our API.
[0] quite naturally, since you'd need to have the complete result to sort it,
however only documented in the source code (and not the reference docs)
MailTracker: do not search when not both datetime parameters are given
in the gui, we always expect an end and starttime, the only case
where we do not get this is when the fields are invalid, so bail out
in that case instead of searching
This patch adds 3 new configuration settings to the MailProxy Options Tab, for
comfortably enabling greylisting for IPv6 addresses, and configuring the
netmask used for greylist matching