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)); > } > } > >
