]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lmtp: Add username to recipient event.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Wed, 13 Feb 2019 23:36:41 +0000 (00:36 +0100)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 28 Jun 2019 07:09:57 +0000 (10:09 +0300)
src/lmtp/lmtp-commands.c
src/lmtp/lmtp-proxy.c

index 6e15325a09a59de2e3000698a87f8ba8ea861587..c61db396e0f43297f67dfa109dcac6d361bfcbac 100644 (file)
@@ -70,6 +70,18 @@ int client_default_cmd_rcpt(struct client *client,
        smtp_address_detail_parse_temp(
                client->unexpanded_lda_set->recipient_delimiter,
                rcpt->path, &username, &delim, &detail);
+
+       /* Make user name and detail available in the recipient event. The
+          mail_user event (for local delivery) also adds the user field, but
+          adding it here makes it available to the recipient event in general.
+          Additionally, the auth lookups performed for local and proxy delivery
+          can further override the "user" recipient event when the auth service
+          returns a different user name. In any case, we provide the initial
+          value here.
+        */
+       event_add_str(rcpt->event, "user", username);
+       event_add_str(rcpt->event, "detail", detail);
+
        if (client->lmtp_set->lmtp_proxy) {
                /* proxied? */
                if ((ret=lmtp_proxy_rcpt(client, cmd, lrcpt,
index c6dfec73421c3301f71f8b7efaf507a79b660643..c149430568d0ca4ea8c9cc583cb74f50d22442f3 100644 (file)
@@ -519,6 +519,11 @@ int lmtp_proxy_rcpt(struct client *client,
                return 0;
        }
        if (strcmp(username, orig_username) != 0) {
+               /* the existing "user" event field is overridden with the new
+                  user name, while old username is available as "orig_user" */
+               event_add_str(rcpt->event, "user", username);
+               event_add_str(rcpt->event, "orig_user", orig_username);
+
                if (smtp_address_parse_username(pool_datastack_create(),
                                                username, &user, &errstr) < 0) {
                        i_error("%s: Username `%s' returned by passdb lookup is not a valid SMTP address",