[pmg-devel] [PATCH pmg-api] fix #3924: ldap: skip non-smtp proxyAddresses
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Mar 23 13:03:23 CET 2022
On 18.03.22 13:37, Markus Frank wrote:
> When an entry in proxyAddresses starts with SIP (or everthing
> that is not smtp) no e-mail gets listed on the webpage.
> Therefore no quarantine notification messages are sent.
>
1. that statement doesn't really tells me any rationale or the actual
problem, also, which webpage? do you mean the web-interface (GUI)?
2. this loops not only over proxyAddresses but *all* mail attributes
(user configurable, default: mail, userPrincipalName, proxyAddresses,
othermailbox, mailAlternativeAddress) so unconditionally skipping all
that doesn't starts with smtp seems odd
3. the bug report shows that there is a smtp address, it just isn't on
the first line, should this rather cope with such multi-line stuff
and better extract the (any?) mail addresses there?
> To change this, every entry with another protocol than smtp,
> should be skipped.
>
> removed "SMTP" because of lowercase function is called before.
nit: could be a separate patch as its rather unrelated with the
skipping.
>
> Signed-off-by: Markus Frank <m.frank at proxmox.com>
> ---
> src/PMG/LDAPCache.pm | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/PMG/LDAPCache.pm b/src/PMG/LDAPCache.pm
> index df61454..8172329 100755
> --- a/src/PMG/LDAPCache.pm
> +++ b/src/PMG/LDAPCache.pm
> @@ -159,12 +159,17 @@ sub queryusers {
> next if !$user->{attributes}->{$attr};
> foreach my $mail (@{$user->{attributes}->{$attr}}) {
> $mail = lc($mail);
> +
> + # Check if proxyAddresses entry starts with anything
but it's not only 'proxyAddresses' that's accessed here (see 2. above).
> + # other than smtp and skip if true
> + next if ($mail =~ m/^(?!.*smtp).*[\:\$]/gs);
iff we'd do it this way a negated match (`!~` vs. `=~`) could be favorable over a
negative-lookahead readability wise.
> +
> # Test if the Line starts with one of the following lines:
> - # proxyAddresses: [smtp|SMTP]:
> + # proxyAddresses: [smtp]:
> # and also discard this starting string, so that $mail is only the
> # address without any other characters...
>
> - $mail =~ s/^(smtp|SMTP)[\:\$]//gs;
> + $mail =~ s/^smtp[\:\$]//gs;
>
> if ($mail !~ m/[\{\}\\\/]/ && $mail =~ m/^\S+\@\S+$/) {
> $umails->{$mail} = 1;
More information about the pmg-devel
mailing list