From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 19B3F1FF191 for ; Tue, 23 Sep 2025 17:34:37 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 350F0127CC; Tue, 23 Sep 2025 17:35:07 +0200 (CEST) Date: Tue, 23 Sep 2025 17:34:32 +0200 From: Stoiko Ivanov To: "Max R. Carrara" Message-ID: <20250923173432.4002550e@rosa.proxmox.com> In-Reply-To: <20250923151929.415784-1-m.carrara@proxmox.com> References: <20250923151929.415784-1-m.carrara@proxmox.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758641660333 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.070 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pmg-devel] [PATCH pmg-api master v1] systemd: fix report services failing if triggered to early by timers X-BeenThere: pmg-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Mail Gateway development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pmg-devel@lists.proxmox.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pmg-devel-bounces@lists.proxmox.com Sender: "pmg-devel" Thanks for the patch - and thanks for the attention to detail you took to the logs on a fresh system - much appreciated! As said off-list - quickly reading through `systemd.timer(5)` I'm not sure the `Persistent=true` makes sense for those two particular timers: ``` ...This is useful to catch up on missed runs of the service when the system was powered down.... ``` Most PMG installations are probably not powered down over prolonged timespans, and even if they are it's probably not helping anyone to get a spamreport or adminreport covering the time before the system was stopped. (e.g. `pmgqm` cleans mails which are beyond the quarantine life-time setting and this runs after the reports are sent out - so it could probably happen that you get a report and when you view your quarantine all mails are gone already) If you find the time - testing if you observe any ill side-effects from dropping `Persistent=true` (false is the default according to the man-page) and sending this as a follow-up would be great! (if you get to that - maybe also add the actual log-messages you saw in the journal to the commit-message/notes below) as this can help in getting an overview what's happening) On Tue, 23 Sep 2025 17:19:24 +0200 "Max R. Carrara" wrote: > Currently, the `pmgreport.service` and `pmgspamreport.service` units > might fail if their corresponding timers activate them too early. > > To elaborate, both timers have `Persistent=true` in addition to their > `OnCalendar` option. `Persistent=true` means that the timer's service > unit will be triggered immediately when the timer is activated, but > only if it would have been triggered while the timer was inactive [0]. > > Since the timers are activated relatively early, they might trigger > their service units before postfix.service and postgresql.service have > come up, causing `pmgreport.service`, or `pmgspamreport.service`, or > both of them to fail. > > Fix this by letting both service units wait until postfix and postgres > are up, which are necessary for the units to run successfully. Do this > by adding the `After` and `Wants` options for `postfix.service` and > `postgresql.service` to both service units. > > Additional context: > > While this is somewhat hard to encounter / debug under normal > circumstances, it is possible to make this race condition much more > apparent by adding an arbitrarily long delay to `postgresql.service` > and `postfix.service` by adding an override for each: > > # systemctl edit postgresql.service > > Then add the following: > > [Service] > ExecStartPre=-sleep 15 > > Do the same for `postfix.service`. > > Afterwards, change both timers to activate a few seconds after every > boot by adding an override for each: > > # systemctl edit pmgreport.timer > > Then add the following: > > [Timer] > OnCalendar= > OnBootSec=5 > > Do the same for `pmgspamreport.timer`. > > A reboot should now suffice to make the issue reproducible. > Conversely, the issue should not appear if this commit is applied. > (Also, don't forget to remove the overrides again after debugging.) > > [0]: `man 5 systemd.timer` > > Signed-off-by: Max R. Carrara > --- > debian/pmgreport.service | 4 ++++ > debian/pmgspamreport.service | 4 ++++ > 2 files changed, 8 insertions(+) > > diff --git a/debian/pmgreport.service b/debian/pmgreport.service > index 6b05213..89e25c7 100644 > --- a/debian/pmgreport.service > +++ b/debian/pmgreport.service > @@ -1,6 +1,10 @@ > [Unit] > Description=Send Daily System Report Mail > ConditionPathExists=/usr/bin/pmgreport > +After=postfix.service > +After=postgresql.service > +Wants=postfix.service > +Wants=postgresql.service > > [Service] > Type=oneshot > diff --git a/debian/pmgspamreport.service b/debian/pmgspamreport.service > index a20214f..2b4f163 100644 > --- a/debian/pmgspamreport.service > +++ b/debian/pmgspamreport.service > @@ -1,6 +1,10 @@ > [Unit] > Description=Send Daily Spam Report Mails > ConditionPathExists=/usr/bin/pmgqm > +After=postfix.service > +After=postgresql.service > +Wants=postfix.service > +Wants=postgresql.service > > [Service] > Type=oneshot _______________________________________________ pmg-devel mailing list pmg-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel