diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c
index 3fbb6f3e44cd055fb46f93bcaff116afa9ff2b6f..ffe15a6474e7d16d5fb7d543cbda1a02dd48e9c6 100644
--- a/src/lib-sieve/sieve-interpreter.c
+++ b/src/lib-sieve/sieve-interpreter.c
@@ -122,6 +122,14 @@ _sieve_interpreter_create(struct sieve_binary *sbin,
 	interp->runenv.sblock = sblock;
 	sieve_binary_ref(sbin);
 
+	interp->runenv.event = event_create(eenv->event);
+	event_add_str(interp->runenv.event, "sieve_script_name",
+		      sieve_binary_script_name(sbin));
+	event_add_str(interp->runenv.event, "sieve_script_location",
+		      sieve_binary_script_location(sbin));
+	event_add_str(interp->runenv.event, "sieve_binary_path",
+		      sieve_binary_path(sbin));
+
 	svinst = sieve_binary_svinst(sbin);
 
 	if (senv->trace_log != NULL) {
@@ -295,6 +303,7 @@ void sieve_interpreter_free(struct sieve_interpreter **_interp)
 	sieve_binary_debug_reader_deinit(&interp->dreader);
 	sieve_binary_unref(&renv->sbin);
 	sieve_error_handler_unref(&renv->ehandler);
+	event_unref(&renv->event);
 
 	pool_unref(&interp->pool);
 	*_interp = NULL;
diff --git a/src/lib-sieve/sieve-runtime.h b/src/lib-sieve/sieve-runtime.h
index 8efe23d7c6ed0327a009f6d23d8c3dfae1b53680..fa5060299ed97bf4a11c3b6f009359fd6701b010 100644
--- a/src/lib-sieve/sieve-runtime.h
+++ b/src/lib-sieve/sieve-runtime.h
@@ -10,6 +10,7 @@
 
 struct sieve_runtime_env {
 	const struct sieve_execute_env *exec_env;
+	struct event *event;
 
 	/* Interpreter */
 	struct sieve_interpreter *interp;