Re: smtpd: srs and ruleset evaluation
Hello, As discussed, this looks correct to me > On 22 Sep 2021, at 15:46, Eric Faurot 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 - 1.95 > +++ lka_session.c 21 Sep 2021 19:21:18 - > @@ -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)); > } > } > >
Re: smtpd: srs and ruleset evaluation
On Wed, 22 Sep 2021 15:46:13 +0200, Eric Faurot wrote: > 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. Thanks for looking into this. OK millert@ - todd
smtpd: srs and ruleset evaluation
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 - 1.95 +++ lka_session.c 21 Sep 2021 19:21:18 - @@ -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)); } }