[pmg-devel] applied: [PATCH pmg-api v2] fix #1653: parse ipv6 xforward correctly

Thomas Lamprecht t.lamprecht at proxmox.com
Thu Jan 23 13:22:33 CET 2020


On 1/23/20 11:22 AM, Stoiko Ivanov wrote:
> Thanks for the v2!
> Tried it again (with a CIDR and an individual ipv6 address) - it works as
> expected.
> 
> On Wed, 22 Jan 2020 14:26:29 +0100
> Dominik Csapak <d.csapak at proxmox.com> wrote:
> 
>> postfix prepends an ipv6 address in the xforward message with 'IPv6:'
>> we did not remove it and our later checks in who objects fail silently.
>>
>> we now check if the addr is prefixed with this and remove it to
>> allow the who objects to work.
>>
>> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
>> ---
>> changes from v1:
>> * fix subject
>> * move prefix removal to 'from_match'
>>   since we actually need the xfoward field to keep that format for
>>   the postfix server that sends the email to the recipient
>>   we do not need to do this anyplace else, since 'to_match' does
>>   not get an ip anyway and there is no other place where we check who
>>   matches
>>
>>  src/PMG/RuleCache.pm | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/src/PMG/RuleCache.pm b/src/PMG/RuleCache.pm
>> index 0b97839..9b18e7e 100644
>> --- a/src/PMG/RuleCache.pm
>> +++ b/src/PMG/RuleCache.pm
>> @@ -239,6 +239,11 @@ sub from_match {
>>  
>>      return 1 if !defined ($from);
>>  
>> +    # postfix prefixes ipv6 addresses with IPv6:
>> +    if ($ip =~ /^IPv6:(.*)/) {
> hm - the v1 had a case-insensitive match for the IPv6 - maybe we want to
> add the 'i' in the end?
> As said - it works without it as well - and I guess it's very unlikely
> that postfix will change that part of it's output (since quite many
> proxies are using and relying on it ;)
> 
> apart from that option:
> Tested-By: Stoiko Ivanov <s.ivanov at proxmox.com>
> Reviewed-By: Stoiko Ivanov <s.ivanov at proxmox.com>
> 

With your T-b and R-b applied, thanks to both!

> 
>> +	$ip = $1;
>> +    }
>> +
>>      foreach my $obj (@$from) {
>>  	return 1 if $obj->who_match($addr, $ip, $ldap);
>>      }



More information about the pmg-devel mailing list