From: Stephan Bosch Date: Sun, 10 Mar 2019 09:53:51 +0000 (+0100) Subject: lib-lda: mail-deliver - Add message fields to the deliver event. X-Git-Tag: 2.3.8~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caf98c47bbcbda747b3c9c1423f24893f538036d;p=thirdparty%2Fdovecot%2Fcore.git lib-lda: mail-deliver - Add message fields to the deliver event. --- diff --git a/src/lib-lda/mail-deliver.c b/src/lib-lda/mail-deliver.c index fde60276b2..00c9f85651 100644 --- a/src/lib-lda/mail-deliver.c +++ b/src/lib-lda/mail-deliver.c @@ -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;