]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-lda: mail-deliver - Add message fields to the deliver event.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 10 Mar 2019 09:53:51 +0000 (10:53 +0100)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 13 Sep 2019 07:37:39 +0000 (10:37 +0300)
src/lib-lda/mail-deliver.c

index fde60276b2a44d6d53be18404d4c3d90dcfe20e7..00c9f85651dd44d7fea6cb17177af9e850cce5c9 100644 (file)
@@ -87,6 +87,16 @@ mail_deliver_get_address(struct mail *mail, const char *header)
        return smtp_addr;
 }
 
+static void
+mail_deliver_update_event(struct mail_deliver_context *ctx)
+{
+       event_add_str(ctx->event, "message_id", ctx->fields.message_id);
+       event_add_str(ctx->event, "message_subject", ctx->fields.subject);
+       event_add_str(ctx->event, "message_from", ctx->fields.from);
+       event_add_int(ctx->event, "message_size", ctx->fields.psize);
+       event_add_int(ctx->event, "message_vsize", ctx->fields.vsize);
+}
+
 static void
 update_str_field(pool_t pool, const char **old_str, const char *new_str)
 {
@@ -144,6 +154,8 @@ mail_deliver_ctx_get_log_var_expand_table(struct mail_deliver_context *ctx,
           mail deliveries. */
        ctx->fields.filled = FALSE;
 
+       mail_deliver_update_event(ctx);
+
        io_loop_time_refresh();
        delivery_time_msecs = timeval_diff_msecs(&ioloop_timeval,
                                                 &ctx->delivery_time_started);
@@ -312,6 +324,9 @@ void mail_deliver_init(struct mail_deliver_context *ctx,
        ctx->event = event_create(input->event_parent);
        event_add_category(ctx->event, &event_category_mail_delivery);
 
+       mail_deliver_fields_update(&ctx->fields, ctx->pool, ctx->src_mail);
+       mail_deliver_update_event(ctx);
+
        if (ctx->rcpt_to != NULL) {
                event_add_str(ctx->event, "rcpt_to",
                              smtp_address_encode(ctx->rcpt_to));
@@ -559,6 +574,9 @@ int mail_deliver(struct mail_deliver_context *ctx,
 
        i_assert(muser->deliver_ctx == NULL);
 
+       mail_deliver_fields_update(&ctx->fields, ctx->pool, ctx->src_mail);
+       mail_deliver_update_event(ctx);
+
        muser->want_storage_id =
                var_has_key(ctx->set->deliver_log_format, '\0', "storage_id");
 
@@ -690,8 +708,10 @@ mail_deliver_transaction_commit(struct mailbox_transaction_context *ctx,
           we also want to do this only for commits generated by sieve.
           other plugins or storage backends may be creating transactions as
           well, which we need to ignore. */
-       if ((box->flags & MAILBOX_FLAG_POST_SESSION) != 0)
+       if ((box->flags & MAILBOX_FLAG_POST_SESSION) != 0) {
                muser->deliver_ctx->fields = dt->deliver_fields;
+               mail_deliver_update_event(muser->deliver_ctx);
+       }
 
        if (mbox->module_ctx.super.transaction_commit(ctx, changes_r) < 0)
                return -1;