diff --git a/smtpd/lka_session.c b/smtpd/lka_session.c index b6a385e..17ae701 100644 --- a/smtpd/lka_session.c +++ b/smtpd/lka_session.c @@ -534,8 +534,13 @@ lka_submit(struct lka_session *lks, struct rule *rule, struct expandnode *xn) ep->dest = lka_find_ancestor(xn, EXPAND_ADDRESS)->u.mailaddr; /* set username */ - if ((xn->type == EXPAND_FILTER || xn->type == EXPAND_FILENAME) - && xn->alias) { + if (xn->type == EXPAND_ADDRESS) { + (void)strlcpy(ep->agent.mda.username, + mailaddr_to_text(&xn->u.mailaddr), + sizeof(ep->agent.mda.username)); + } + else if ((xn->type == EXPAND_FILTER + || xn->type == EXPAND_FILENAME) && xn->alias) { (void)strlcpy(ep->agent.mda.username, SMTPD_USER, sizeof(ep->agent.mda.username)); } @@ -569,7 +574,8 @@ lka_submit(struct lka_session *lks, struct rule *rule, struct expandnode *xn) (void)strlcpy(ep->agent.mda.buffer, xn->u.buffer, sizeof ep->agent.mda.buffer); } - else if (xn->type == EXPAND_USERNAME) { + else if (xn->type == EXPAND_USERNAME + || xn->type == EXPAND_ADDRESS) { ep->agent.mda.method = rule->r_action; (void)strlcpy(ep->agent.mda.buffer, rule->r_value.buffer, sizeof ep->agent.mda.buffer);