diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c
index 717afb0433cf1d1769f877939e3681b220a72180..1aea02896fdaab9b88a90819d2f08633099c921e 100644
--- a/src/plugins/imapsieve/imap-sieve.c
+++ b/src/plugins/imapsieve/imap-sieve.c
@@ -429,20 +429,18 @@ imap_sieve_run_open_script(struct imap_sieve_run *isrun,
 {
 	struct imap_sieve *isieve = isrun->isieve;
 	struct sieve_instance *svinst = isieve->svinst;
-	struct mail_user *user = isieve->client->user;
 	struct sieve_error_handler *ehandler;
 	struct sieve_binary *sbin;
 	const char *compile_name = "compile";
-	bool debug = user->mail_debug;
 
 	if (recompile) {
 		/* Warn */
-		sieve_sys_warning(svinst,
-			"Encountered corrupt binary: re-compiling script %s",
-			sieve_script_location(script));
+		e_warning(sieve_get_event(svinst),
+			  "Encountered corrupt binary: re-compiling script %s",
+			  sieve_script_location(script));
 		compile_name = "re-compile";
-	} else if (debug) {
-		sieve_sys_debug(svinst,
+	} else {
+		e_debug(sieve_get_event(svinst),
 			"Loading script %s", sieve_script_location(script));
 	}
 
@@ -464,16 +462,13 @@ imap_sieve_run_open_script(struct imap_sieve_run *isrun,
 		switch (*error_r) {
 		/* Script not found */
 		case SIEVE_ERROR_NOT_FOUND:
-			if (debug) {
-				sieve_sys_debug(svinst,
-					"Script `%s' is missing for %s",
-					sieve_script_location(script),
-					compile_name);
-			}
+			e_debug(sieve_get_event(svinst),
+				"Script `%s' is missing for %s",
+				sieve_script_location(script), compile_name);
 			break;
 		/* Temporary failure */
 		case SIEVE_ERROR_TEMP_FAILURE:
-			sieve_sys_error(svinst,
+			e_error(sieve_get_event(svinst),
 				"Failed to open script `%s' for %s "
 				"(temporary failure)",
 				sieve_script_location(script), compile_name);
@@ -481,21 +476,21 @@ imap_sieve_run_open_script(struct imap_sieve_run *isrun,
 		/* Compile failed */
 		case SIEVE_ERROR_NOT_VALID:
 			if (script == isrun->user_script &&
-			    isrun->userlog != NULL) {
-				sieve_sys_info(svinst,
-					"Failed to %s script `%s' "
-					"(view user logfile `%s' for more information)",
-					compile_name, sieve_script_location(script),
-					isrun->userlog);
+			   isrun->userlog != NULL ) {
+				e_info(sieve_get_event(svinst),
+				       "Failed to %s script `%s' "
+				       "(view user logfile `%s' for more information)",
+				       compile_name, sieve_script_location(script),
+				       isrun->userlog);
 				break;
 			}
-			sieve_sys_error(svinst,
+			e_error(sieve_get_event(svinst),
 				"Failed to %s script `%s'",
 				compile_name, sieve_script_location(script));
 			break;
 		/* Something else */
 		default:
-			sieve_sys_error(svinst,
+			e_error(sieve_get_event(svinst),
 				"Failed to open script `%s' for %s",
 				sieve_script_location(script), compile_name);
 			break;
@@ -517,19 +512,19 @@ imap_sieve_handle_exec_status(struct imap_sieve_run *isrun,
 	struct imap_sieve *isieve = isrun->isieve;
 	struct sieve_instance *svinst = isieve->svinst;
 	const char *userlog_notice = "";
-	sieve_sys_error_func_t error_func, user_error_func;
+	enum log_type log_level, user_log_level;
 	enum mail_error mail_error = MAIL_ERROR_NONE;
 	int ret = -1;
 
-	error_func = user_error_func = sieve_sys_error;
+	log_level = user_log_level = LOG_TYPE_ERROR;
 
 	if (estatus->last_storage != NULL && estatus->store_failed) {
 		mail_storage_get_last_error(estatus->last_storage, &mail_error);
 
 		/* Don't bother administrator too much with benign errors */
 		if (mail_error == MAIL_ERROR_NOQUOTA) {
-			error_func = sieve_sys_info;
-			user_error_func = sieve_sys_info;
+			log_level = LOG_TYPE_INFO;
+			user_log_level = LOG_TYPE_INFO;
 		}
 	}
 
@@ -537,35 +532,35 @@ imap_sieve_handle_exec_status(struct imap_sieve_run *isrun,
 		userlog_notice = t_strdup_printf(
 			" (user logfile %s may reveal additional details)",
 			isrun->userlog);
-		user_error_func = sieve_sys_info;
+		user_log_level = LOG_TYPE_INFO;
 	}
 
 	switch (status) {
 	case SIEVE_EXEC_FAILURE:
-		user_error_func(svinst,
+		e_log(sieve_get_event(svinst), user_log_level,
 			"Execution of script %s failed%s",
 			sieve_script_location(script), userlog_notice);
 		ret = 0;
 		break;
 	case SIEVE_EXEC_TEMP_FAILURE:
-		error_func(svinst,
-			"Execution of script %s was aborted "
-			"due to temporary failure%s",
-			sieve_script_location(script), userlog_notice);
+		e_log(sieve_get_event(svinst), log_level,
+		      "Execution of script %s was aborted "
+		      "due to temporary failure%s",
+		      sieve_script_location(script), userlog_notice);
 		ret = -1;
 		break;
 	case SIEVE_EXEC_BIN_CORRUPT:
-		sieve_sys_error(svinst,
+		e_error(sieve_get_event(svinst),
 			"!!BUG!!: Binary compiled from %s is still corrupt; "
 			"bailing out and reverting to default action",
 			sieve_script_location(script));
 		ret = 0;
 		break;
 	case SIEVE_EXEC_KEEP_FAILED:
-		error_func(svinst,
-			"Execution of script %s failed "
-			"with unsuccessful implicit keep%s",
-			sieve_script_location(script), userlog_notice);
+		e_log(sieve_get_event(svinst), log_level,
+		      "Execution of script %s failed "
+		      "with unsuccessful implicit keep%s",
+		      sieve_script_location(script), userlog_notice);
 		ret = 0;
 		break;
 	case SIEVE_EXEC_OK:
@@ -583,14 +578,12 @@ imap_sieve_run_scripts(struct imap_sieve_run *isrun,
 {
 	struct imap_sieve *isieve = isrun->isieve;
 	struct sieve_instance *svinst = isieve->svinst;
-	struct mail_user *user = isieve->client->user;
 	struct imap_sieve_run_script *scripts = isrun->scripts;
 	unsigned int count = isrun->scripts_count;
 	struct sieve_multiscript *mscript;
 	struct sieve_error_handler *ehandler;
 	struct sieve_script *last_script = NULL;
 	bool user_script = FALSE, more = TRUE;
-	bool debug = user->mail_debug;
 	enum sieve_compile_flags cpflags;
 	enum sieve_execute_flags exflags;
 	enum sieve_error compile_error = SIEVE_ERROR_NONE;
@@ -623,12 +616,9 @@ imap_sieve_run_scripts(struct imap_sieve_run *isrun,
 
 		/* Open */
 		if (sbin == NULL) {
-			if (debug) {
-				sieve_sys_debug(svinst,
-					"Opening script %d of %d from `%s'",
-					i+1, count,
-					sieve_script_location(script));
-			}
+			e_debug(sieve_get_event(svinst),
+				"Opening script %d of %d from `%s'",
+				i+1, count, sieve_script_location(script));
 
 			/* Already known to fail */
 			if (scripts[i].compile_error != SIEVE_ERROR_NONE) {
@@ -646,13 +636,11 @@ imap_sieve_run_scripts(struct imap_sieve_run *isrun,
 		}
 
 		/* Execute */
-		if (debug) {
-			sieve_sys_debug(svinst,
-				"Executing script from `%s'",
-				sieve_get_source(sbin));
-		}
-		more = sieve_multiscript_run(mscript, sbin, ehandler,
-					     ehandler, exflags);
+		e_debug(sieve_get_event(svinst),
+			"Executing script from `%s'",
+			sieve_get_source(sbin));
+		more = sieve_multiscript_run(mscript,
+			sbin, ehandler, ehandler, exflags);
 
 		if (!more) {
 			if (!scripts[i].binary_corrupt &&
@@ -702,9 +690,9 @@ imap_sieve_run_scripts(struct imap_sieve_run *isrun,
 
 	/* Don't log additional messages about compile failure */
 	if (compile_error != SIEVE_ERROR_NONE && ret == SIEVE_EXEC_FAILURE) {
-		sieve_sys_info(svinst,
-			"Aborted script execution sequence "
-			"with successful implicit keep");
+		e_info(sieve_get_event(svinst),
+		       "Aborted script execution sequence "
+		       "with successful implicit keep");
 		return 1;
 	}
 
@@ -757,7 +745,7 @@ int imap_sieve_run_mail(struct imap_sieve_run *isrun, struct mail *mail,
 		/* Compose script execution environment */
 
 		if (sieve_script_env_init(&scriptenv, user, &error) < 0) {
-			sieve_sys_error(svinst,
+			e_error(sieve_get_event(svinst),
 				"Failed to initialize script execution: %s",
 				error);
 			ret = -1;
diff --git a/src/plugins/imapsieve/sieve-imapsieve-plugin.c b/src/plugins/imapsieve/sieve-imapsieve-plugin.c
index 476573454afa7d67682f433ec16d0e2bea60523d..12611b3fa3a1c83b6003f4c5ada25611b1f3e026 100644
--- a/src/plugins/imapsieve/sieve-imapsieve-plugin.c
+++ b/src/plugins/imapsieve/sieve-imapsieve-plugin.c
@@ -1,7 +1,7 @@
 /* Copyright (c) 2016-2018 Pigeonhole authors, see the included COPYING file
  */
 
-#include "sieve-common.h"
+#include "sieve.h"
 #include "sieve-error.h"
 #include "sieve-extensions.h"
 
@@ -30,11 +30,9 @@ void sieve_imapsieve_plugin_load
 	pctx->ext_vnd_imapsieve = sieve_extension_register
 		(svinst, &vnd_imapsieve_extension_dummy, TRUE);
 
-	if ( svinst->debug ) {
-		sieve_sys_debug(svinst,
-			"Sieve imapsieve plugin for %s version %s loaded",
-			PIGEONHOLE_NAME, PIGEONHOLE_VERSION_FULL);
-	}
+	e_debug(sieve_get_event(svinst),
+		"Sieve imapsieve plugin for %s version %s loaded",
+		PIGEONHOLE_NAME, PIGEONHOLE_VERSION_FULL);
 
 	*context = (void *)pctx;
 }