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 515C181313 for ; Tue, 23 Nov 2021 07:25:24 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C279625D92 for ; Tue, 23 Nov 2021 07:25:23 +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 id EBBFF25D81 for ; Tue, 23 Nov 2021 07:25:21 +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 0163343E59 for ; Tue, 23 Nov 2021 07:16:04 +0100 (CET) Message-ID: <46367fc5-bd31-a8e3-1868-05a61e97278f@proxmox.com> Date: Tue, 23 Nov 2021 07:16:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Thunderbird/95.0 Content-Language: en-US To: Stoiko Ivanov , pmg-devel@lists.proxmox.com References: <20211122195010.359005-1-s.ivanov@proxmox.com> From: Thomas Lamprecht In-Reply-To: <20211122195010.359005-1-s.ivanov@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.155 Adjusted score from AWL reputation of From: address 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 Alignment NICE_REPLY_A -0.097 Looks like a legit reply (A) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, postfix.org, ietf.org, disclaimer.pm] Subject: Re: [pmg-devel] [PATCH pmg-api 1/1] rulesystem: limit linelength of disclaimer to 998 bytes 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, 23 Nov 2021 06:25:24 -0000 On 22.11.21 20:50, Stoiko Ivanov wrote: > As described in > http://www.postfix.org/postconf.5.html#smtp_line_length_limit > > postfix splits lines which are longer by inserting to > adhere with RFC 5322 (section 2.1.1): > https://datatracker.ietf.org/doc/html/rfc5322#section-2.1.1 > > If a longer line is part of the disclaimer pmg-smtp-filter adds it > without this modification, which breaks DKIM signatures (since the > body is modified by postfix after the body hash is computed) > > reported in our community forum: > https://forum.proxmox.com/threads/dkim-body-has-been-altered-when-enabling-disclaimer-function.97919/ > > Signed-off-by: Stoiko Ivanov > --- > src/PMG/RuleDB/Disclaimer.pm | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/src/PMG/RuleDB/Disclaimer.pm b/src/PMG/RuleDB/Disclaimer.pm > index 1b1accf..1c81b03 100644 > --- a/src/PMG/RuleDB/Disclaimer.pm > +++ b/src/PMG/RuleDB/Disclaimer.pm > @@ -84,6 +84,10 @@ sub save { > defined($self->{ogroup}) || die "undefined object attribute: ERROR"; > defined($self->{value}) || die "undefined object attribute: ERROR"; > > + if ($self->{value} =~ /^.{998,}$/m) { 1. a comment that the regex match is used to avoid the fact that the `length` function is working on characters (vs. bytes) only would be good, but.. 2. regex isn't actually _that_ better, if one adds a `use utf8` it also matches chars and not bytes here Maybe go for the more explicit variant? I think the following should work (but with encodings involved one is never sure..) if (length(Encode::encode("UTF-8", $self->{value})) > 998) > + die "too long line in disclaimer - breaks RFC 5322!\n"; > + } > + > if (defined ($self->{id})) { > # update > >