diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c index c26ac70e2ce789c91a94e4bc422a63f41e97b99d..398acc98fafbdfadfa573176c972449d327aaf1c 100644 --- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c +++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c @@ -114,6 +114,8 @@ imap_filter_sieve_init_trace_log(struct imap_filter_sieve_context *sctx, struct sieve_trace_log **trace_log_r) { struct sieve_instance *svinst = imap_filter_sieve_get_svinst(sctx); + struct client_command_context *cmd = sctx->filter_context->cmd; + struct mail_user *user = sctx->user; if (sctx->trace_log_initialized) { *trace_config_r = sctx->trace_config; @@ -132,6 +134,22 @@ imap_filter_sieve_init_trace_log(struct imap_filter_sieve_context *sctx, return; } + /* Write header for trace file */ + sieve_trace_log_printf(sctx->trace_log, + "Sieve trace log for IMAP FILTER=SIEVE:\n" + "\n" + " Username: %s\n", user->username); + if (user->session_id != NULL) { + sieve_trace_log_printf(sctx->trace_log, + " Session ID: %s\n", user->session_id); + } + sieve_trace_log_printf(sctx->trace_log, + " Mailbox: %s\n" + " Command: %s %s %s\n\n", + mailbox_get_vname(sctx->filter_context->box), + cmd->tag, cmd->name, + cmd->human_args != NULL ? cmd->human_args : ""); + *trace_config_r = sctx->trace_config; *trace_log_r = sctx->trace_log; } @@ -942,6 +960,14 @@ int imap_sieve_filter_run_mail(struct imap_filter_sieve_context *sctx, imap_filter_sieve_init_trace_log(sctx, &trace_config, &trace_log); T_BEGIN { + if (trace_log != NULL) { + /* Write trace header for message */ + sieve_trace_log_printf(trace_log, + "Filtering message:\n" + "\n" + " UID: %u\n", mail->uid); + } + /* Collect necessary message data */ imap_sieve_filter_get_msgdata(sctx, mail, &msgdata);