]> git.proxmox.com Git - pmg-api.git/log
pmg-api.git
9 months agopmgpolicy, pmg-smtp-filter: set sensible PATH
Stoiko Ivanov [Wed, 28 Jun 2023 15:38:04 +0000 (17:38 +0200)]
pmgpolicy, pmg-smtp-filter: set sensible PATH

these 2 services are the only ones that don't have this set (the
additions are copied over from pmgproxy)

with bookworm pmgpolicy throws an error (when invoking 'journalctl'
via run_command (in PMG::Utils::scan_journal_for_rbl_rejects)

did not come to a conclusion why it just resurfaced now, and ran fine
in a bullseye environment

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
9 months agocomplete changelog for 8.0.2
Thomas Lamprecht [Wed, 28 Jun 2023 11:49:00 +0000 (13:49 +0200)]
complete changelog for 8.0.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobump version to 8.0.2
Thomas Lamprecht [Wed, 28 Jun 2023 06:35:42 +0000 (08:35 +0200)]
bump version to 8.0.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agoapi: include tfa lock status in user list
Wolfgang Bumiller [Wed, 28 Jun 2023 07:19:35 +0000 (09:19 +0200)]
api: include tfa lock status in user list

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agotfa: add totp-locked and tfa-locked-until to list return schema
Wolfgang Bumiller [Wed, 28 Jun 2023 07:15:55 +0000 (09:15 +0200)]
tfa: add totp-locked and tfa-locked-until to list return schema

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agoaccess control: add missing TFAConfig module imports
Wolfgang Bumiller [Tue, 27 Jun 2023 14:18:21 +0000 (16:18 +0200)]
access control: add missing TFAConfig module imports

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agousers: add endpoint for unlocking the TFA of a user
Wolfgang Bumiller [Tue, 27 Jun 2023 14:18:07 +0000 (16:18 +0200)]
users: add endpoint for unlocking the TFA of a user

add /access/users/<userid>/unlock-tfa api call which can be used for
unlocking a user after their TFA got locked due to many failed
consecutive retries.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agotfa: enable lockout of users
Wolfgang Bumiller [Tue, 27 Jun 2023 14:13:57 +0000 (16:13 +0200)]
tfa: enable lockout of users

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobump pmg-rs dependency to 0.7.2
Wolfgang Bumiller [Tue, 27 Jun 2023 14:08:05 +0000 (16:08 +0200)]
bump pmg-rs dependency to 0.7.2

Required for the following methods:
- authentication_verify2
- api_unlock_tfa
- tfa_lock_status

Also enables lockout.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/rules: tell dh-systemd to also not stop the no-start service on upgrade
Thomas Lamprecht [Wed, 28 Jun 2023 07:14:01 +0000 (09:14 +0200)]
d/rules: tell dh-systemd to also not stop the no-start service on upgrade

otherwise it stops them all, which can be wrong (if one is doing
something just now) and also noisy (prints quite some warnings)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/postinst: better anchor matches for section & property detection
Thomas Lamprecht [Wed, 28 Jun 2023 06:36:18 +0000 (08:36 +0200)]
d/postinst: better anchor matches for section & property detection

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobump version to 8.0.1
Thomas Lamprecht [Wed, 28 Jun 2023 06:04:53 +0000 (08:04 +0200)]
bump version to 8.0.1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: fix setting version & release metadata for pmgcfg generation
Thomas Lamprecht [Wed, 28 Jun 2023 06:04:44 +0000 (08:04 +0200)]
buildsys: fix setting version & release metadata for pmgcfg generation

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/source: set format to 3.0 (native)
Thomas Lamprecht [Wed, 28 Jun 2023 05:46:25 +0000 (07:46 +0200)]
d/source: set format to 3.0 (native)

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobump version to 8.0.0
Thomas Lamprecht [Tue, 27 Jun 2023 16:20:34 +0000 (18:20 +0200)]
bump version to 8.0.0

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agopam: set PAM_RHOST
Wolfgang Bumiller [Tue, 27 Jun 2023 13:39:08 +0000 (15:39 +0200)]
pam: set PAM_RHOST

This allows pam modules to restrict users by host. For
instance, you could restrict root@pam to only 127.0.0.1.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
9 months agoauth: set PAM context to 'proxmox-mailgateway-auth'
Wolfgang Bumiller [Tue, 27 Jun 2023 13:39:07 +0000 (15:39 +0200)]
auth: set PAM context to 'proxmox-mailgateway-auth'

This allows configuring PAM authentication for PMG via
/etc/pam.d/proxmox-mailgateway-auth

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
9 months agoreport: adapt to changes in SpamAssassin DNS api
Stoiko Ivanov [Tue, 27 Jun 2023 09:00:27 +0000 (11:00 +0200)]
report: adapt to changes in SpamAssassin DNS api

SpamAssassin 4.0 changed the way it does DNS-lookups a bit (switched
to asynchronous lookups) - this broke pmg-system-report, since we use
the SpamAssassin API to check that DNS-resolution works.  The reason
for this is that SA used to take only the first entry from
/etc/resolv.conf - and SA being able to do correct resolution is
critical for it to work.

This patch fixes the incompatible use of the DNS-API, but does not
change to the asynchronous model.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Friedrich Weber <f.weber@proxmox.com>
9 months agopostgresql compat: cast result from EXTRACT to INTEGER
Stoiko Ivanov [Mon, 26 Jun 2023 20:45:10 +0000 (22:45 +0200)]
postgresql compat: cast result from EXTRACT to INTEGER

Postgresql has changed the return type of the EXTRACT function to
numeric from float8 [0] in version 14, and I strongly assume that this
change is the reason why:
`SELECT EXTRACT (EPOCH FROM now());`
now returns a floating point instead of an integer value, which in
turn is not accepted in the prepared statements throughout our
codebase.

[0] https://www.postgresql.org/docs/release/14.0/

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
9 months agocluster: fix rsync invocation
Stoiko Ivanov [Mon, 26 Jun 2023 20:45:09 +0000 (22:45 +0200)]
cluster: fix rsync invocation

Since rsync 3.2.4, the syntax to give multiple files in one parameter
does not work anymore, so list them explicitly

Inspired by  commit 9697997575e25e188a0993a0e4fc7f33f6602928
in pve-cluster

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
9 months agopmg7to8: skip kernel checks for pmg-mailgateway-container
Stoiko Ivanov [Mon, 26 Jun 2023 20:59:40 +0000 (22:59 +0200)]
pmg7to8: skip kernel checks for pmg-mailgateway-container

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
9 months agopmg sources: update dist to bookworm
Stoiko Ivanov [Mon, 26 Jun 2023 18:22:28 +0000 (20:22 +0200)]
pmg sources: update dist to bookworm

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
9 months agopmg7to8: only inform about timesync options
Stoiko Ivanov [Mon, 26 Jun 2023 17:02:50 +0000 (19:02 +0200)]
pmg7to8: only inform about timesync options

PMG does not install any time synchronization service in a default
install - so a warning if it's not present is not warranted.

Keep the informational messages anyways, since having a synchronized
clock does yield benefits for internet-connected services.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
(cherry picked from commit a4b75cda8e739d576e9878a6a0b8e2d5f21b5ca2)
(cherry picked from commit 60f27abd216abcda163c6bb64fbfac1688a4fd01)
[S.Ivanov: squash whitespace change in]
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
9 months agopmg7to8: also ignore proposed-updates to ignored suite suffixes
Stoiko Ivanov [Mon, 26 Jun 2023 17:02:37 +0000 (19:02 +0200)]
pmg7to8: also ignore proposed-updates to ignored suite suffixes

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
(cherry picked from commit d2c130aba2bc392c3433fe29bf507c1e782235cd)
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
9 months agod/postinst: remove re-generation of unique machine-ID for old ISOs
Thomas Lamprecht [Mon, 26 Jun 2023 16:27:41 +0000 (18:27 +0200)]
d/postinst: remove re-generation of unique machine-ID for old ISOs

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobump version to 8.0.0~1
Thomas Lamprecht [Mon, 26 Jun 2023 15:37:14 +0000 (17:37 +0200)]
bump version to 8.0.0~1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agodbtools: grant permissions public schema for created databases
Dominik Csapak [Mon, 26 Jun 2023 14:10:26 +0000 (16:10 +0200)]
dbtools: grant permissions public schema for created databases

since postgres 15, the public schema is not world writeable anymore for
security reasons. In our environment, where the db is not externaly
reachable and no database users should exists except the ones we create,
we can safely give the permissions again to be able to use
the root/www-data user without modification of the remaining
code/privileges for postgres.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/postinst: notify via stdout when hard-coding defaults
Thomas Lamprecht [Mon, 26 Jun 2023 15:36:07 +0000 (17:36 +0200)]
d/postinst: notify via stdout when hard-coding defaults

Suggested-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agodebian/postinst: add old default values on upgrade to 8.x
Dominik Csapak [Mon, 26 Jun 2023 13:42:49 +0000 (15:42 +0200)]
debian/postinst: add old default values on upgrade to 8.x

in /etc/pmg/pmg.conf for
advfilter
use_bayes
use_awl

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agopmg7to8: sync over changes from stable-7 branch
Thomas Lamprecht [Mon, 26 Jun 2023 15:19:25 +0000 (17:19 +0200)]
pmg7to8: sync over changes from stable-7 branch

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agointroduce pmg7to8 cli helper
Dominik Csapak [Mon, 26 Jun 2023 12:30:43 +0000 (14:30 +0200)]
introduce pmg7to8 cli helper

mostly copied from pve7to8 (without the pve specific tests) with some
notable additions to check some basic things for the pmg upgrade:
* check if the cluster is healthy
* check if the services are stopped(pre-upgrade)/started(post-upgrade)
* check if the db was upgraded (post upgrade)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agoconfig: disable advanced statistic filters by default
Dominik Csapak [Fri, 23 Jun 2023 12:21:02 +0000 (14:21 +0200)]
config: disable advanced statistic filters by default

If the (documented) behaviour is not known, it is rather unexpected and
confusing. So disable by default.

Note that this is a breaking change, since enabling them is just a
config switch, it shouldn't be much of a problem.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
9 months agoconfig: disable awl and bayes by default
Dominik Csapak [Fri, 23 Jun 2023 12:21:01 +0000 (14:21 +0200)]
config: disable awl and bayes by default

Since most often they don't help in a default setup without manually
training with many examples.

Note that this is a breaking change, and a config rewrite will
trigger a deletion of bayes and awl databases.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
9 months agopmgsh: initialize RPC/REST environment late
Thomas Lamprecht [Mon, 26 Jun 2023 13:12:22 +0000 (15:12 +0200)]
pmgsh: initialize RPC/REST environment late

other wise a (s)build gets broken in restricted & clean environments.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: add DSC & sbuild convenience target
Thomas Lamprecht [Mon, 26 Jun 2023 12:19:28 +0000 (14:19 +0200)]
buildsys: add DSC & sbuild convenience target

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agodrop executable flag from perl modules
Thomas Lamprecht [Mon, 26 Jun 2023 12:17:58 +0000 (14:17 +0200)]
drop executable flag from perl modules

mostly for consistency and my dircolors highlighting

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/control: wrap-and-sort -tkn
Thomas Lamprecht [Mon, 26 Jun 2023 12:00:25 +0000 (14:00 +0200)]
d/control: wrap-and-sort -tkn

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/control: add missing libapt-pkg-perl build-dependency
Thomas Lamprecht [Mon, 26 Jun 2023 12:00:10 +0000 (14:00 +0200)]
d/control: add missing libapt-pkg-perl build-dependency

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: rework doc-gen cleanup and makefile inclusion
Thomas Lamprecht [Mon, 26 Jun 2023 09:53:22 +0000 (11:53 +0200)]
buildsys: rework doc-gen cleanup and makefile inclusion

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/control: avoid versioned build-dependencies with a -1 revision
Thomas Lamprecht [Mon, 26 Jun 2023 09:52:36 +0000 (11:52 +0200)]
d/control: avoid versioned build-dependencies with a -1 revision

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: expand clean target
Thomas Lamprecht [Mon, 26 Jun 2023 09:45:03 +0000 (11:45 +0200)]
buildsys: expand clean target

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: use $(MAKE) variable for sub-make calls
Thomas Lamprecht [Mon, 26 Jun 2023 09:44:54 +0000 (11:44 +0200)]
buildsys: use $(MAKE) variable for sub-make calls

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: derive upload dist automatically
Thomas Lamprecht [Mon, 26 Jun 2023 09:40:43 +0000 (11:40 +0200)]
buildsys: derive upload dist automatically

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agobuildsys: build-dir: split-out and generate atomically
Thomas Lamprecht [Mon, 26 Jun 2023 09:36:38 +0000 (11:36 +0200)]
buildsys: build-dir: split-out and generate atomically

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agomakefile: convert to use simple parenthesis
Thomas Lamprecht [Mon, 26 Jun 2023 09:30:09 +0000 (11:30 +0200)]
makefile: convert to use simple parenthesis

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agod/control: depend on rsyslog
Thomas Lamprecht [Mon, 26 Jun 2023 08:43:00 +0000 (10:43 +0200)]
d/control: depend on rsyslog

required for our current tracking center implementation, a central
feature for PMG, which uses rsyslog log files and format.

Note that we evaluated switching to the journal there, but that was
deemed to be too slow (albeit could have only been start-up time
penalty) – anyhow, as of now this is a requirement to get the full
functionality, once the log-tracker can understand other formats in
an efficient way too we can add those as alternatives.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agotemplates: postgresql.conf: drop removed config-setting
Stoiko Ivanov [Fri, 23 Jun 2023 08:06:32 +0000 (10:06 +0200)]
templates: postgresql.conf: drop removed config-setting

was deprecated with 14 and removed with postgresql 15 [0]

[0] https://www.postgresql.org/docs/current/release-15.html

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
9 months agoupdate postgresql dependency to 15
Stoiko Ivanov [Fri, 23 Jun 2023 08:05:53 +0000 (10:05 +0200)]
update postgresql dependency to 15

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agobump version to 7.3-4
Thomas Lamprecht [Fri, 2 Jun 2023 08:30:36 +0000 (10:30 +0200)]
bump version to 7.3-4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
10 months agod/maintscripts: prevent aborting on errors in some commands
Stoiko Ivanov [Fri, 31 Mar 2023 11:27:47 +0000 (13:27 +0200)]
d/maintscripts: prevent aborting on errors in some commands

in case something goes wrong it is often better to not leave the
packaging state broken.

failure in the commands masked by this patch are either transient
(pmgconfig sync -restart 1 failing when services are masked), or will
be noticed quite instantly (failed database or config initialization
upon first install)

the deb-systemd-invoke change was based on a quick grep in
/var/lib/dpkg/info on my system

I quickly considered masking even more errors (e.g. related to the ucf
handling) - but they don't seem to cause issues (in the past 3 years)
- and if something breaks there it is probably worth to get a report

reported in our community forum:
https://forum.proxmox.com/threads/.125088/

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
11 months agoruledb: match field: validate regular expressions on addition
Dominik Csapak [Fri, 14 Apr 2023 09:14:58 +0000 (11:14 +0200)]
ruledb: match field: validate regular expressions on addition

Do not save rules if they die during an execution test, which is done
by using them once on an empty string.

Since users may have saved already invalid ones, only warn if we
encounter such a regex in 'parse_entity' during execution instead of
dying. Otherwise pmg-smtp-filter will exit and restart, possibly
leading to wrongly denying mails (and possibly sending out NDRs)
before spam checking was done.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Mira Limbeck <m.limbeck@proxmox.com>
Reviewed-by: Mira Limbeck <m.limbeck@proxmox.com>
 [ T: touch up commit subject/message ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agobump version to 7.3-3
Thomas Lamprecht [Tue, 28 Mar 2023 05:42:30 +0000 (07:42 +0200)]
bump version to 7.3-3

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agoquarantine: delete Delivered-To and Return-Path when reinjecting
Stoiko Ivanov [Mon, 27 Mar 2023 19:18:13 +0000 (21:18 +0200)]
quarantine: delete Delivered-To and Return-Path when reinjecting

The removal of those 2 headers was dropped in the recent rework for
quarantine delivery.
Leading to mails from quarantine being bounced by postfix 'local'
delivery agent (as the comment in the original code stated)

Reproduced by delivering a mail from quarantine to a postfix instance,
which routes it to a local account

Fixes: e51fe74 ("quarantine: use reinject_local_mail to deliver quarantined mail")
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
12 months agoconfig: add postfix option for smtputf8 flag
Stoiko Ivanov [Mon, 27 Mar 2023 12:48:43 +0000 (14:48 +0200)]
config: add postfix option for smtputf8 flag

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
12 months agoconfig: fix missing quote in description
Stoiko Ivanov [Mon, 27 Mar 2023 12:45:19 +0000 (14:45 +0200)]
config: fix missing quote in description

omission noticed while reviewing the corresponding docs-changes

fixes 848fbc11c572094d900529b940fea384a909b0db
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
12 months agod/copyright: update years
Thomas Lamprecht [Mon, 27 Mar 2023 11:01:36 +0000 (13:01 +0200)]
d/copyright: update years

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agobump version to 7.3-2
Thomas Lamprecht [Mon, 27 Mar 2023 11:00:18 +0000 (13:00 +0200)]
bump version to 7.3-2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agoreport: add `date -R` to general system info section
Lukas Wagner [Thu, 23 Feb 2023 15:37:52 +0000 (16:37 +0100)]
report: add `date -R` to general system info section

Sometimes it can be quite useful to know when exactly a system report
was generated. Adds the following output quite prominently in the
beginning:

 # date -R
 Thu, 23 Feb 2023 16:21:12 +0100

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
12 months agod/control: bump proxmox-spamassassin dependency
Thomas Lamprecht [Mon, 27 Mar 2023 09:55:45 +0000 (11:55 +0200)]
d/control: bump proxmox-spamassassin dependency

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agostats: improve code style of some multi line queries
Thomas Lamprecht [Mon, 27 Mar 2023 09:54:52 +0000 (11:54 +0200)]
stats: improve code style of some multi line queries

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agotemplates: adapt to new path for KAM rules in proxmox-spamassassin
Stoiko Ivanov [Fri, 24 Mar 2023 12:46:55 +0000 (13:46 +0100)]
templates: adapt to new path for KAM rules in proxmox-spamassassin

This changes the included KAM.cf to the one downloaded from the
kam-channel, which in turn includes all files contained in the
rule-set

This commit needs a versioned dependency bump on proxmox-spamassassin

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
12 months agoconfig schema: add missing whitespace and fix concat style
Thomas Lamprecht [Sun, 26 Mar 2023 15:10:32 +0000 (17:10 +0200)]
config schema: add missing whitespace and fix concat style

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agoconfig schema: extend documentation for options
Dominik Csapak [Fri, 24 Mar 2023 13:30:11 +0000 (14:30 +0100)]
config schema: extend documentation for options

Add an explanation what the 'advanced statistic filter' are.
Add the reference to the postfix options if we have a direct one

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
13 months agobump version to 7.3-1
Thomas Lamprecht [Thu, 23 Mar 2023 16:29:10 +0000 (17:29 +0100)]
bump version to 7.3-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 months agod/control: bump versioned dependency for pmg-doc-generator
Thomas Lamprecht [Fri, 24 Mar 2023 09:34:09 +0000 (10:34 +0100)]
d/control: bump versioned dependency for pmg-doc-generator

for new smtputf8 option

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 months agoapi: quarantine: decode addresses before delivery/userlisting
Stoiko Ivanov [Fri, 17 Mar 2023 18:44:54 +0000 (19:44 +0100)]
api: quarantine: decode addresses before delivery/userlisting

With the change of using reinject_local_mail for the quarantine
delivery the issue of not properly decoding the entries we get from
the database before delivering became apparent

The database returns utf-8 encoded strings, reinject_local_mail and
add_to_blackwhite expects perl-strings (with wide characters) and
encodes them (a second time) - this patch decodes the database strings
before passing it on.

add_to_black_white is used in a few API calls (via
read_or_modify_user_bw_list), therefore the approach of decode (from
database), and encode (for database) was chosen.

Reported-by: Dominik Csapak <d.csapak@proxomox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
13 months agoquarantine: use reinject_local_mail to deliver quarantined mail
Stoiko Ivanov [Fri, 17 Mar 2023 18:44:53 +0000 (19:44 +0100)]
quarantine: use reinject_local_mail to deliver quarantined mail

the current delivery looks quite similar to reinject_local_mail,
apart from the database handling and sending the mail-contents from a
file instead of a MIME::Entity.

reinject_mail has received a few improvments over time, which never
made it to this implementation - e.g. in:
ebd31d3e74d9417375b86766ee300be493044d39
ad1c6bcea94cbaf8d4862bcb05874b59c656c632

While reparsing the mail might seem expensive, the quarantine code
does so multiple times when users click in the quarantine GUI (see
PMG::HTMLMail, and the attachment quarantine)

The issue of MIME::Parser being lossy [0] (parsing and then printing
the entity, might not return the original mail byte-by-byte), is
already present in our code-base anyways (when the mail gets
quarantined (or sent on) it is from a parsed MIME::Entity).

[0] https://metacpan.org/pod/MIME::Tools

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
13 months agoreinject mail: improve error logging
Stoiko Ivanov [Fri, 17 Mar 2023 18:44:52 +0000 (19:44 +0100)]
reinject mail: improve error logging

this patch unifies the error handling for mail and rcpt with
the data command: all now die with sensible error (which gets logged
in the error-handling of the eval), and it sets the respose message
and code for those commands as well.

additionally it adds a '\n' to all die statements.

this makes it possible to provide information what went wrong at
call-sites (instead of only having it in syslog)

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
13 months agoconfig: make smtputf8 configurable through the API
Stoiko Ivanov [Fri, 17 Mar 2023 18:44:51 +0000 (19:44 +0100)]
config: make smtputf8 configurable through the API

the flag is simply a boolean which is used to:
* add smtputf8_enable = no to postfix' main.cf if it is disabled
  (the default is to enable it, and not adding it unconditionally,
  should cause the fewest surprises for users with modified templates)
* decide if locally generated mail should be scanned for utf8 headers
  and addresses (to set the parameter to the MAIL command)

This should match postfix own implementation w.r.t. smtputf8 behavior.

Additionally, since quite a few users need to disable it because
their downstream servers do not support it (Zimbra, OpenXchange,
MS Exchange), this should make for a better user experience.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
13 months agosmtputf8: keep smtputf8 from incoming postfix, detect for local mail
Stoiko Ivanov [Fri, 17 Mar 2023 18:44:50 +0000 (19:44 +0100)]
smtputf8: keep smtputf8 from incoming postfix, detect for local mail

This patch changes the detection if smtputf8 is needed as option to
the 'MAIL' command:
* for mail arriving through postfix it is only added if the mail
  originally was received with it (Accept and BCC actions)
* for locally generated mail (Notify, reports, quarantine-link and
  ndrs) it is decided based on utf8 characters in the mail-addresses
  or headers - this is done by `reinject_local_mail`, as a new helper

This should match postfix own behavior in those cases quite
closely:
https://www.postfix.org/SMTPUTF8_README.html#using

Notable difference is that we check the complete e-mail address and
not only the domain part, but I assume non-ascii local-parts to be a
very fringe edge-case in environments where smtputf8 is not supported.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by:  Dominik Csapak <d.csapak@proxmox.com>
13 months agoproxy: initialize the theme variable with an empty string
Stefan Sterz [Thu, 23 Mar 2023 15:44:53 +0000 (16:44 +0100)]
proxy: initialize the theme variable with an empty string

this removes a warning that was previously present due to using an
uninitialized variable.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
13 months agobump version to 7.2-5
Thomas Lamprecht [Tue, 21 Mar 2023 12:00:11 +0000 (13:00 +0100)]
bump version to 7.2-5

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 months agofix #4521: api/tasks: replace upid as filename for task log downloads
Stefan Sterz [Thu, 9 Feb 2023 11:41:23 +0000 (12:41 +0100)]
fix #4521: api/tasks: replace upid as filename for task log downloads

previously the upid would just be used without a file extension when
downloading a task log. this lead to rather strange filenames that
appeared unfamiliar to users as the upid is not very prevalent in the
gui. set a proper file name based on the node name, worker type and a
time stamp instead. also add the ".log" file extension to indicate
that these files contain logs.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
13 months agod/control: bump proxmox-spamassassin dependency to >= 4.0
Thomas Lamprecht [Tue, 21 Mar 2023 11:56:53 +0000 (12:56 +0100)]
d/control: bump proxmox-spamassassin dependency to >= 4.0

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 months agoapi: use readable casing for tls-inbound-domains endpoint
Thomas Lamprecht [Tue, 21 Mar 2023 09:23:25 +0000 (10:23 +0100)]
api: use readable casing for tls-inbound-domains endpoint

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 months agoconfig: warn on parse errors for tls related config files
Stoiko Ivanov [Mon, 20 Mar 2023 20:26:38 +0000 (21:26 +0100)]
config: warn on parse errors for tls related config files

this unifies the error-handling with transports and mynetworks -
resulting in wrong entries being logged, the remaining entries
displayed in the GUI, and the wrong entries being dropped upon
editing.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agofix #2437: api: Add endpoint for managing tls_inbound_domains entries
Christoph Heiss [Mon, 20 Mar 2023 10:35:46 +0000 (11:35 +0100)]
fix #2437: api: Add endpoint for managing tls_inbound_domains entries

Add a new API endpoint `/config/tlsinbounddomains` for managing entries
of the `tls_inbound_domains` postfix map. Modelled after the
`DestinationTLSPolicy` implementation.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
13 months agofix #2437: config: Add new tls_inbound_domains postfix map
Christoph Heiss [Mon, 20 Mar 2023 10:35:45 +0000 (11:35 +0100)]
fix #2437: config: Add new tls_inbound_domains postfix map

Add a new configuration file /etc/pmg/tls_inbound_domains, which is a
postfix map containing all domains having `reject_plaintext_session`
action set. This is the only allowed action value and enforced while
parsing.

This map is then used for `smtpd_sender_restriction` in the main.cf
template.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
13 months agotemplates: enable DMARC plugin in v400.pre.in
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:50 +0000 (22:23 +0100)]
templates: enable DMARC plugin in v400.pre.in

This module needs Mail::DMARC (libmail-dmarc-perl) as prerequisite.
It is currently only available in sid and bookworm, but can be
trivially rebuild for bullseye.

the dmarc tests are skipped if only internal relays are used/present
in the headers, so I could not explicitly test this

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agotemplates: enable DecodeShortUrls for SpamAssassin 4.0.0
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:49 +0000 (22:23 +0100)]
templates: enable DecodeShortUrls for SpamAssassin 4.0.0

enabled if they system has rbl_checks enabled.
The module resolves url-shortener (e.g. bit.ly) chains.
the KAM rulset has a number of url-shorteners configured
(KAM_urlshorteners.cf).

While the functionality also works without the configured caching
module, it worked well in my tests.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agoconfig: add spam option for extract_text
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:48 +0000 (22:23 +0100)]
config: add spam option for extract_text

toggling the configuration options for the ExtractText SA plugin (see
[0]).

The config is copied from the module itself, the informational headers
were not added, as I don't see too much gain, apart from verifying
that the plugin is working.

the external dependencies for the plugin to work are added as
Recommends, as it is a possible config to not have them installed and
simply disable the option

[0] https://metacpan.org/pod/Mail::SpamAssassin::Plugin::ExtractText
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agotemplates: add template for spamassassin's v400.pre
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:47 +0000 (22:23 +0100)]
templates: add template for spamassassin's v400.pre

The individual new features will be enabled in seperate commits

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agotemplates: add template for spamassassin's v342.pre
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:46 +0000 (22:23 +0100)]
templates: add template for spamassassin's v342.pre

The file is taken from upstream, the only change is that we only
enable the HashBL module if rbl_checks are enabled in pmg.conf

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agotemplates: sync spamassassin templates with 4.0.0 upstream
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:45 +0000 (22:23 +0100)]
templates: sync spamassassin templates with 4.0.0 upstream

to minimize the diff and disable vanished modules

no functional change intended

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agoruledb: spam: adapt to spamassassin 4.0.0
Stoiko Ivanov [Mon, 13 Mar 2023 21:23:44 +0000 (22:23 +0100)]
ruledb: spam: adapt to spamassassin 4.0.0

find_all_addrs_in_line was changed to require an instantiated
Mail::SpamAssassin instance in:
https://github.com/apache/spamassassin/commit/139adfb5901b27fa13dccbf3a66c53ca7613f733
(read-only git mirror of the authoritative SVN)

Noticed while using `mutt` and bouncing mails, which adds Resent
headers.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
13 months agoproxy: make the "auto" theme the default
Stefan Sterz [Tue, 14 Mar 2023 14:02:03 +0000 (15:02 +0100)]
proxy: make the "auto" theme the default

by using the "auto" theme per default, the user's preferred theme is
used automatically.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
13 months agoproxy: add support for switching themes
Stefan Sterz [Thu, 9 Mar 2023 08:00:15 +0000 (09:00 +0100)]
proxy: add support for switching themes

parse the theme cookie so users can switch between themes in the ui

this requires a bump of the pmg-gui, which in turn needs a bump for
the widget toolkit, so the parameters passed to the template are
handled appropriately.

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
13 months agofix #4536: parse original filenames from gzip files
Leo Nunner [Fri, 3 Mar 2023 15:56:11 +0000 (16:56 +0100)]
fix #4536: parse original filenames from gzip files

GZIP provides the possiblity to store the original filename in the
optional FNAME header field, which we can use for 'Match Archive
Filename' rules.

IO::Uncompress::Gunzip is explicitly recommended for this purpose by the
documentation on Compress::Zlib, so an additional imnport was
introduced here. Consequently, libio-compress-perl was added as an extra
dependency to the debian control file.

Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
14 months agobump version to 7.2-4
Thomas Lamprecht [Wed, 25 Jan 2023 10:04:00 +0000 (11:04 +0100)]
bump version to 7.2-4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
14 months agoutils: skip checking headers for non-ascii characters
Stoiko Ivanov [Mon, 23 Jan 2023 15:55:20 +0000 (16:55 +0100)]
utils: skip checking headers for non-ascii characters

The fix for smtputf8 enablement in 191e470 ("utils: fix mailflow if
smtputf8 is disabled") was a bit too eager and broke the mail flow of
a few users, who have smtputf8 disabled in their postfix config
(because their downstream servers do not support this):

The issue here is that the mails they process have had
(non-rfc-compliant) non-ascii header contents, which used to work
before the patch. The postfix smtputf8 how-to explains quite well
that postfix never cared too much about headers (or local-parts of
addresses) before smtputf8 [1]

```
Postfix already permitted UTF-8 in message header values and in
address localparts. This does not change.
```

While the patch only ignores the headers and still could cause issues
with non-ascii local-parts, those should occur far less frequently in
the wild (none of the reporters in our forum had this).

Tested with a mail with an Euro sign in a 'X-From:' header.

Note that this is a stop-gap for re-working how to decide if smtputf8
is needed in a manner that better matches real world systems.

[0] https://forum.proxmox.com/threads/.120886/
[1] https://www.postfix.org/SMTPUTF8_README.html#enabling

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
 [ T: touch up commit message a bit ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
15 months agofix #4410: Remove non-null host bits from CIDR when writing postfix config
Christoph Heiss [Thu, 29 Dec 2022 09:45:17 +0000 (10:45 +0100)]
fix #4410: Remove non-null host bits from CIDR when writing postfix config

This will drop non-null host bits from `mynetworks` CIDRs when writing
the `main.cf` postfix template.
Backwards-compatibility with old entries in `/etc/pmg/mynetworks` is
thus also preserved.

Add an additional comment to the mynetworks API, indicating that unused
fields can/should be dropped with the next PMG version.

No GUI changes. The entries are written to `/etc/pmg/mynetworks` as the
user enters them. Suggested by Stoiko, see discussion in v2 thread [0].

[0] https://lists.proxmox.com/pipermail/pmg-devel/2022-December/002247.html

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
15 months agobump version to 7.2-3
Wolfgang Bumiller [Tue, 27 Dec 2022 10:19:56 +0000 (11:19 +0100)]
bump version to 7.2-3

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
15 months agopmgdb dump: encode ruledata before printing
Stoiko Ivanov [Wed, 30 Nov 2022 12:54:54 +0000 (13:54 +0100)]
pmgdb dump: encode ruledata before printing

was overlooked with the utf-8 support for rules and objects

this patch prevents a "Wide character in print at .." when dumping the
ruledata

Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
16 months agoutils: fix mailflow if smtputf8 is disabled
Stoiko Ivanov [Wed, 21 Dec 2022 14:53:43 +0000 (15:53 +0100)]
utils: fix mailflow if smtputf8 is disabled

with the recent addition of smtputf8 support for the rulesystem setups
explicitly disabling smtputf8 in postfix got broken.

This is mostly noticeable for the spamreports (the receivers are taken
from the database and potentially decoded from utf-8, which sets the
'is_utf8' flag, and then tries to use the smtputf8 extension when
reinjecting the mail, which fails (since smtputf8 is disabled)

Instead of checking for the internal flag, we check for occurence of
characters which are not ascii printable (everything excluding
controlcharacters - '[\x20-\x7E]') in the envelope-addresses and
headers (there also for [\r\n\t], due to searching all headers and
folding). - see
https://perldoc.perl.org/perlunifaq#What-is-%22the-UTF8-flag%22?  and
https://perldoc.perl.org/perlrecharclass#POSIX-Character-Classes

The only diversion from the requirements in the smptutf8 rfc
https://www.rfc-editor.org/rfc/rfc6531
is that we do not check the headers of all parts of a multipart
message (think suggested filename for an attachment), but I assume
that this should not be an issue in mail-transit

the addresses now always get encoded as UTF-8, as this is robust for
aascii-only addresses.

reported in our community forum:
https://forum.proxmox.com/threads/.119387/

issue is reproducible by setting
`smtputf8_enable = no` in postfix main.cf
and sending a spamreport using `pmgqm`

regular mailflow should not be affected in those setups (as no utf-8
addresses would come into the system)

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
16 months agorulecache: sort rules additionally by id
Stoiko Ivanov [Tue, 20 Dec 2022 10:57:35 +0000 (11:57 +0100)]
rulecache: sort rules additionally by id

When more rules have the same priority currently their order is not
stable - postgres returns them in a stable way, based on their last
changetime - e.g. disabling and reenabling a rule puts it in the front
of evaluation. Sortin by id (the primary key) in addition should make
rule evaluation robust to such updates

While there is no guarantee of ordering (within the same priority)
unexpected changes in which rule fires can cause confusion (at least
it confused me quite a bit).

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
16 months agoapi: file backup: indentation and code style fix
Thomas Lamprecht [Mon, 12 Dec 2022 12:18:34 +0000 (13:18 +0100)]
api: file backup: indentation and code style fix

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agobackup restore: ignore ENOENT on cleanup
Thomas Lamprecht [Mon, 12 Dec 2022 12:06:19 +0000 (13:06 +0100)]
backup restore: ignore ENOENT on cleanup

not really that likely here, but IMO just generally good to catch for
unlink, as "error on delete for got already deleted" feels always
rather odd.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agobackup restore: code style cleanup
Thomas Lamprecht [Mon, 12 Dec 2022 12:05:00 +0000 (13:05 +0100)]
backup restore: code style cleanup

find also takes a code ref directly, and the "wanted" name is a bit
non-ideal anyway, as it has no control over what find "wants" (i.e.,
descends into), but its return value is completely ignored.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agobackup: restore: keep directories in /etc/pmg for inotify
Stoiko Ivanov [Wed, 30 Nov 2022 17:07:27 +0000 (18:07 +0100)]
backup: restore: keep directories in /etc/pmg for inotify

By wiping the subdirectories in /etc/pmg/, we lose the inotify
watchers upon restore (/etc/pmg itself and thus most configs are
currently handled by the keep_root flag to rmtree)
This can lead to inconsistencies after restoring for parts relying on
config in a subdirectory (e.g. /etc/pmg/pbs/pbs.conf).

This patch uses File::Find (included in perl-modules-$perlver) to keep
all directories an unlink everything else.
This was chosen for future robustness over keeping an explicit list of
directories to keep, in case a new directory gets added.

quickly tested with a fifo, chardev, and socket in the directory.

an alternative approach would be to simply reload pmgdaemon/pmgproxy
upon config-restore, but that feels more likely to miss some
(potentially future) service, expecting inotify to work.

Reported-by: Fiona Ebner <f.ebner@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
16 months agobump version to 7.2-2
Thomas Lamprecht [Wed, 30 Nov 2022 09:46:08 +0000 (10:46 +0100)]
bump version to 7.2-2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>