Hello,

As discussed, this looks correct to me


> On 22 Sep 2021, at 15:46, Eric Faurot <[email protected]> wrote:
> 
> Hi.
> 
> A user reported that decoded SRS addresses are not correctly evaluated
> against the ruleset. That's because the ruleset always matches against
> the expanded address ("dest") and not the original address ("rcpt").
> This diff should fix it.
> 
> Eric.
> 
> 
> Index: lka_session.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/lka_session.c,v
> retrieving revision 1.95
> diff -u -p -r1.95 lka_session.c
> --- lka_session.c     14 Jun 2021 17:58:15 -0000      1.95
> +++ lka_session.c     21 Sep 2021 19:21:18 -0000
> @@ -280,19 +280,19 @@ lka_expand(struct lka_session *lks, stru
>               /* handle SRS */
>               if (env->sc_srs_key != NULL &&
>                   ep.sender.user[0] == '\0' &&
> -                 (strncasecmp(ep.rcpt.user, "SRS0=", 5) == 0 ||
> -                     strncasecmp(ep.rcpt.user, "SRS1=", 5) == 0)) {
> -                     srs_decoded = srs_decode(mailaddr_to_text(&ep.rcpt));
> +                 (strncasecmp(ep.dest.user, "SRS0=", 5) == 0 ||
> +                     strncasecmp(ep.dest.user, "SRS1=", 5) == 0)) {
> +                     srs_decoded = srs_decode(mailaddr_to_text(&ep.dest));
>                       if (srs_decoded &&
> -                         text_to_mailaddr(&ep.rcpt, srs_decoded)) {
> -                             /* flag envelope internal and override rcpt */
> +                         text_to_mailaddr(&ep.dest, srs_decoded)) {
> +                             /* flag envelope internal and override dest */
>                               ep.flags |= EF_INTERNAL;
> -                             xn->u.mailaddr = ep.rcpt;
> +                             xn->u.mailaddr = ep.dest;
>                               lks->envelope = ep;
>                       }
>                       else {
>                               log_warn("SRS failed to decode: %s",
> -                                 mailaddr_to_text(&ep.rcpt));
> +                                 mailaddr_to_text(&ep.dest));
>                       }
>               }
> 
> 

Reply via email to