From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 9C6AB83A6 for ; Tue, 15 Nov 2022 13:41:13 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7E5D02835 for ; Tue, 15 Nov 2022 13:40:43 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Tue, 15 Nov 2022 13:40:42 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 698D143DAC for ; Tue, 15 Nov 2022 13:40:42 +0100 (CET) From: Stoiko Ivanov To: pmg-devel@lists.proxmox.com Date: Tue, 15 Nov 2022 13:40:14 +0100 Message-Id: <20221115124014.63658-1-s.ivanov@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: =?UTF-8?Q?0=0A=09?=AWL 0.171 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict =?UTF-8?Q?Alignment=0A=09?=SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF =?UTF-8?Q?Record=0A=09?=SPF_PASS -0.001 SPF: sender matches SPF =?UTF-8?Q?record=0A=09?=URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [metacpan.org, modfield.pm, proxmox.com] Subject: [pmg-devel] [PATCH pmg-api] ruledb: modfield: properly handle fields spanning multiple lines 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: , X-List-Received-Date: Tue, 15 Nov 2022 12:41:13 -0000 this commit fixes aa3a005a5e7e3ad69ed35e9957fa514f73315c72 MIME::Words::encode_mimewords does not deal with multiline headers (the warning about this being a 'quick and dirty' solution [0] partially tells as much). Instead - split the replacement value after variable substition on: '\r?\n\s*' (to capture multi-line values like __SPAM_INFO__, but also already folded headers, which are separated by '\r?\n\s+') and do the substitution for each line seperately. reported in our community forum: https://forum.proxmox.com/threads/.118001/ [0] https://metacpan.org/pod/MIME::Words#PUBLIC-INTERFACE Signed-off-by: Stoiko Ivanov --- src/PMG/RuleDB/ModField.pm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/PMG/RuleDB/ModField.pm b/src/PMG/RuleDB/ModField.pm index fb15076..4ebb618 100644 --- a/src/PMG/RuleDB/ModField.pm +++ b/src/PMG/RuleDB/ModField.pm @@ -98,10 +98,15 @@ sub execute { my ($self, $queue, $ruledb, $mod_group, $targets, $msginfo, $vars, $marks) = @_; - my $fvalue = PMG::Utils::subst_values ($self->{field_value}, $vars); + my $fvalue = ''; + + foreach my $line (split('\r?\n\s*',PMG::Utils::subst_values ($self->{field_value}, $vars))) { + $fvalue .= "\n" if $fvalue; + $fvalue .= encode_mimewords(encode('UTF-8', $line), 'Charset' => 'UTF-8'); + } # support for multiline values (i.e. __SPAM_INFO__) - $fvalue =~ s/\r?\n/\n\t/sg; # indent content + $fvalue =~ s/\n/\n\t/sg; # indent content $fvalue =~ s/\n\s*\n//sg; # remove empty line $fvalue =~ s/\n?\s*$//s; # remove trailing spaces @@ -109,7 +114,7 @@ sub execute { foreach my $ta (@$subgroups) { my ($tg, $e) = (@$ta[0], @$ta[1]); - $e->head->replace($self->{field}, encode_mimewords(encode('UTF-8', $fvalue), "Charset" => "UTF-8")); + $e->head->replace($self->{field}, $fvalue); } } -- 2.30.2