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
fix #2667: and 'language' option to QuarantineView
this moves the the login name to a button/menu like we have for pve
and adds a 'language' option there
this is useful for uses which explicitely login via ticket, which makes
it hard to change the language otherwise
(they'd have to logout, change the language, go to their mail client
and click again the link for the quarantine; also most users do not know
that they *can* change the language when they are logged out)
by not saving the position across time or email changes, since that
makes no real sense. (The user cannot really know what will be selected,
in contrast to when the mails will be deleted etc.)
using an explicit load on time change and queryMode 'local', we can
enable typeAhead (and related settings) to let the user type in an email
which will be autocompleted by the loaded list.
Quarantine: set mailinfo visible only on html preview
We did already hide it when toggling raw/html, but when choosing raw
and changing the mail, it was again set to visible.
This patch fixes that by always taking 'me.raw' into account.