diff --git a/src/lib-managesieve/managesieve-url.c b/src/lib-managesieve/managesieve-url.c
index d2d7658611bcbdf523b03089eaf1c5dec7ded396..f38b27ffc9d13ddc6443a772d416e782e5681d30 100644
--- a/src/lib-managesieve/managesieve-url.c
+++ b/src/lib-managesieve/managesieve-url.c
@@ -140,7 +140,7 @@ managesieve_url_parse_userinfo(struct managesieve_url_parser *url_parser,
 	if (auth->enc_userinfo == NULL)
 		return 0;
 	if ((url_parser->flags & MANAGESIEVE_URL_ALLOW_USERINFO_PART) == 0) {
-		parser->error = "Sieve URL does not allow `userinfo@' part";
+		parser->error = "Sieve URL does not allow 'userinfo@' part";
 		return -1;
 	}
 
@@ -312,7 +312,7 @@ static int managesieve_url_do_parse(struct managesieve_url_parser *url_parser)
 	 */
 	if (parser->cur >= parser->end || parser->cur[0] != '/' ||
 	    (parser->cur + 1) >= parser->end || parser->cur[1] != '/') {
-		parser->error = "Sieve URL requires `//' after `sieve:'";
+		parser->error = "Sieve URL requires '//' after 'sieve:'";
 		return -1;
 	}
 	parser->cur += 2;
diff --git a/src/lib-sieve/cmd-redirect.c b/src/lib-sieve/cmd-redirect.c
index 6a3b0a46ed8beb5dc5952cea3d82cff247ac406f..57a1554af58af1c031af2064645bd5af6de4ef2f 100644
--- a/src/lib-sieve/cmd-redirect.c
+++ b/src/lib-sieve/cmd-redirect.c
@@ -445,18 +445,18 @@ act_redirect_get_duplicate_id(struct act_redirect_context *ctx,
 	if (mail_get_first_header(mail, "resent-message-id", &resent_id) < 0) {
 		return sieve_result_mail_error(
 			aenv, mail,
-			"failed to read header field `resent-message-id'");
+			"failed to read header field 'resent-message-id'");
 	}
 	if (resent_id == NULL &&
 	    mail_get_first_header(mail, "resent-from", &resent_id) < 0) {
 		return sieve_result_mail_error(
 			aenv, mail,
-			"failed to read header field `resent-from'");
+			"failed to read header field 'resent-from'");
 	}
 	if (mail_get_first_header(mail, "list-id", &list_id) < 0) {
 		return sieve_result_mail_error(
 			aenv, mail,
-			"failed to read header field `list-id'");
+			"failed to read header field 'list-id'");
 	}
 
 	if ((eenv->flags & SIEVE_EXECUTE_FLAG_NO_ENVELOPE) == 0)
@@ -500,7 +500,7 @@ act_redirect_check_loop_header(const struct sieve_action_exec_env *aenv,
 	if (ret < 0) {
 		return sieve_result_mail_error(
 			aenv, mail, "failed to read header field "
-			"`x-sieve-redirected-from'");
+			"'x-sieve-redirected-from'");
 	}
 
 	if (ret == 0)
@@ -615,7 +615,7 @@ act_redirect_execute(const struct sieve_action_exec_env *aenv,
 	if (loop_detected) {
 		sieve_result_global_log(
 			aenv, "not forwarding message to <%s>: "
-			"the `x-sieve-redirected-from' header indicates a mail loop",
+			"the 'x-sieve-redirected-from' header indicates a mail loop",
 			smtp_address_encode(ctx->to_address));
 		trans->skip_redirect = TRUE;
 		return SIEVE_EXEC_OK;
diff --git a/src/lib-sieve/ext-envelope.c b/src/lib-sieve/ext-envelope.c
index 732ba58cbc55afa486ba69490f74efc0ce886788..9bb022ca3a2efae05c0fe127290433c6506c5885 100644
--- a/src/lib-sieve/ext-envelope.c
+++ b/src/lib-sieve/ext-envelope.c
@@ -428,7 +428,7 @@ sieve_envelope_address_list_next_item(struct sieve_address_list *_addrlist,
 		if (_addrlist->strlist.trace) {
 			sieve_runtime_trace(
 				_addrlist->strlist.runenv, 0,
-				"getting `%s' part from message envelope",
+				"getting '%s' part from message envelope",
 				str_sanitize(str_c(envp_item), 80));
 		}
 
diff --git a/src/lib-sieve/ext-fileinto.c b/src/lib-sieve/ext-fileinto.c
index fb6575838663eff2fa444dc43978fa2ee33210b5..9e697984cf12356836f82e7b68f3e92b190abd25 100644
--- a/src/lib-sieve/ext-fileinto.c
+++ b/src/lib-sieve/ext-fileinto.c
@@ -126,7 +126,7 @@ cmd_fileinto_validate(struct sieve_validator *valdtr, struct sieve_command *cmd)
 		if (!sieve_mailbox_check_name(folder, &error)) {
 			sieve_command_validate_error(
 				valdtr, cmd, "fileinto command: "
-				"invalid folder name `%s' specified: %s",
+				"invalid folder name '%s' specified: %s",
 				str_sanitize(folder, 256), error);
 			return FALSE;
 		}
@@ -205,13 +205,13 @@ ext_fileinto_operation_execute(const struct sieve_runtime_env *renv,
 	if (!sieve_mailbox_check_name(str_c(folder), &error)) {
 		sieve_runtime_error(
 			renv, NULL, "fileinto command: "
-			"invalid folder name `%s' specified: %s",
+			"invalid folder name '%s' specified: %s",
 			str_c(folder), error);
 		return SIEVE_EXEC_FAILURE;
 	}
 
 	if (trace) {
-		sieve_runtime_trace(renv, 0, "store message in mailbox `%s'",
+		sieve_runtime_trace(renv, 0, "store message in mailbox '%s'",
 				    str_sanitize(str_c(folder), 80));
 	}
 
diff --git a/src/lib-sieve/ext-reject.c b/src/lib-sieve/ext-reject.c
index 649c1f2fd20b83194237c1598305f9620c98bd9a..9ff7c758c3b92d1bcb5d89e352c86a1c067e25c5 100644
--- a/src/lib-sieve/ext-reject.c
+++ b/src/lib-sieve/ext-reject.c
@@ -414,7 +414,7 @@ ext_reject_operation_execute(const struct sieve_runtime_env *renv,
 			sieve_runtime_trace(renv, 0, "reject action");
 
 		sieve_runtime_trace_descend(renv);
-		sieve_runtime_trace(renv, 0, "reject message with reason `%s'",
+		sieve_runtime_trace(renv, 0, "reject message with reason '%s'",
 				    str_sanitize(str_c(reason), 64));
 	}
 
diff --git a/src/lib-sieve/plugins/date/ext-date-common.c b/src/lib-sieve/plugins/date/ext-date-common.c
index 53bd17e9fef7bb7a23d251d54b7c3d163f9f78b7..f2c2d9c87bcc44fced30bfeaf57f58407f0210a7 100644
--- a/src/lib-sieve/plugins/date/ext-date-common.c
+++ b/src/lib-sieve/plugins/date/ext-date-common.c
@@ -391,11 +391,11 @@ ext_date_time_part_get(struct tm *tm, int zone_offset ATTR_UNUSED)
 static const char *
 ext_date_iso8601_part_get(struct tm *tm, int zone_offset)
 {
-	/* From RFC: `The restricted ISO 8601 format is specified by the
-	              date-time ABNF production given in [RFC3339], Section 5.6,
-	              with the added restrictions that the letters "T" and "Z"
-	              MUST be in upper case, and a time zone offset of zero MUST
-	              be represented by "Z" and not "+00:00".`
+	/* From RFC: The restricted ISO 8601 format is specified by the
+	             date-time ABNF production given in [RFC3339], Section 5.6,
+	             with the added restrictions that the letters "T" and "Z"
+	             MUST be in upper case, and a time zone offset of zero MUST
+	             be represented by "Z" and not "+00:00".
 	 */
 	if (zone_offset == 0)
 		zone_offset = INT_MAX;
diff --git a/src/lib-sieve/plugins/date/tst-date.c b/src/lib-sieve/plugins/date/tst-date.c
index abb23d6128cbe11fd1c4b99fc668240dbd1fd1e3..eef43b8551d9ae3a32b39fc7b69035be68b5c642 100644
--- a/src/lib-sieve/plugins/date/tst-date.c
+++ b/src/lib-sieve/plugins/date/tst-date.c
@@ -284,7 +284,7 @@ tst_date_validate(struct sieve_validator *valdtr, struct sieve_command *tst)
 		if (ext_date_part_find(part) == NULL) {
 			sieve_argument_validate_warning(
 				valdtr, arg,
-				"specified date part `%s' is not known",
+				"specified date part '%s' is not known",
 				str_sanitize(part, 80));
 		}
 	}
@@ -460,7 +460,7 @@ tst_date_operation_execute(const struct sieve_runtime_env *renv,
 		if (!zone_literal) {
 			sieve_runtime_warning(
 				renv, NULL,
-				"specified :zone argument `%s' is not a valid timezone "
+				"specified :zone argument '%s' is not a valid timezone "
 				"(using local zone)",
 				str_sanitize(str_c(zone), 40));
 		}
@@ -471,7 +471,7 @@ tst_date_operation_execute(const struct sieve_runtime_env *renv,
 	if (dpart == NULL) {
 		sieve_runtime_warning(
 			renv, NULL,
-			"specified date part argument `%s' is not known",
+			"specified date part argument '%s' is not known",
 			str_sanitize(str_c(date_part), 40));
 		sieve_interpreter_set_test_result(renv->interp, FALSE);
 		return SIEVE_EXEC_OK;
diff --git a/src/lib-sieve/plugins/duplicate/tst-duplicate.c b/src/lib-sieve/plugins/duplicate/tst-duplicate.c
index 5ef54e8b734c285c0a24978e764f6a13d3435582..eb29a1039d91491ee19d5e554312d72ca630752e 100644
--- a/src/lib-sieve/plugins/duplicate/tst-duplicate.c
+++ b/src/lib-sieve/plugins/duplicate/tst-duplicate.c
@@ -392,7 +392,7 @@ tst_duplicate_operation_execute(const struct sieve_runtime_env *renv,
 			if (ret < 0) {
 				return sieve_runtime_mail_error(
 					renv, mail, "duplicate test: "
-					"failed to read header field `message-id'");
+					"failed to read header field 'message-id'");
 			}
 		} else {
 			ret = mail_get_first_header_utf8(mail, str_c(header),
@@ -400,7 +400,7 @@ tst_duplicate_operation_execute(const struct sieve_runtime_env *renv,
 			if (ret < 0) {
 				return sieve_runtime_mail_error(
 					renv, mail, "duplicate test: "
-					"failed to read header field `%s'",
+					"failed to read header field '%s'",
 					str_c(header));
 			}
 		}
diff --git a/src/lib-sieve/plugins/editheader/cmd-addheader.c b/src/lib-sieve/plugins/editheader/cmd-addheader.c
index 4e851ccfaaecc7b1df046f6e172b9823d748a931..3df61cc6d49a8ecda9630cc150d3cc943de8ea52 100644
--- a/src/lib-sieve/plugins/editheader/cmd-addheader.c
+++ b/src/lib-sieve/plugins/editheader/cmd-addheader.c
@@ -130,7 +130,7 @@ cmd_addheader_validate(struct sieve_validator *valdtr,
 						      str_len(fname))) {
 			sieve_argument_validate_error(
 				valdtr, arg, "addheader command: "
-				"specified field name `%s' is invalid",
+				"specified field name '%s' is invalid",
 				str_sanitize(str_c(fname), 80));
 			return FALSE;
 		}
@@ -138,7 +138,7 @@ cmd_addheader_validate(struct sieve_validator *valdtr,
 		if (!ext_editheader_header_allow_add(cmd->ext, str_c(fname))) {
 			sieve_argument_validate_warning(
 				valdtr, arg, "addheader command: "
-				"adding specified header field `%s' is forbidden; "
+				"adding specified header field '%s' is forbidden; "
 				"modification will be denied",
 				str_sanitize(str_c(fname), 80));
 		}
@@ -160,7 +160,7 @@ cmd_addheader_validate(struct sieve_validator *valdtr,
 		if (_str_contains_nul(fvalue)) {
 			sieve_argument_validate_error(
 				valdtr, arg,
-				"addheader command: specified value `%s' is invalid "
+				"addheader command: specified value '%s' is invalid "
 				"(contains NUL character)",
 				str_sanitize(str_c(fvalue), 80));
 			return FALSE;
@@ -170,7 +170,7 @@ cmd_addheader_validate(struct sieve_validator *valdtr,
 			fvalue), str_len(fvalue), TRUE, TRUE)) {
 			sieve_argument_validate_warning(
 				valdtr, arg,
-				"addheader command: specified value `%s' is invalid",
+				"addheader command: specified value '%s' is invalid",
 				str_sanitize(str_c(fvalue), 80));
 		}
 
@@ -178,7 +178,7 @@ cmd_addheader_validate(struct sieve_validator *valdtr,
 			cmd->ext, str_len(fvalue))) {
 			sieve_argument_validate_error(
 				valdtr, arg, "addheader command: "
-				"specified header value `%s' is too large (%zu bytes)",
+				"specified header value '%s' is too large (%zu bytes)",
 				str_sanitize(str_c(fvalue), 80),
 				str_len(fvalue));
 			return SIEVE_EXEC_FAILURE;
@@ -309,7 +309,7 @@ cmd_addheader_operation_execute(const struct sieve_runtime_env *renv,
 					      str_len(field_name))) {
 		sieve_runtime_error(
 			renv, NULL, "addheader action: "
-			"specified field name `%s' is invalid",
+			"specified field name '%s' is invalid",
 			str_sanitize(str_c(field_name), 80));
 		return SIEVE_EXEC_FAILURE;
 	}
@@ -317,7 +317,7 @@ cmd_addheader_operation_execute(const struct sieve_runtime_env *renv,
 	if (!ext_editheader_header_allow_add(this_ext, str_c(field_name))) {
 		sieve_runtime_warning(
 			renv, NULL, "addheader action: "
-			"adding specified header field `%s' is forbidden; "
+			"adding specified header field '%s' is forbidden; "
 			"modification denied",
 			str_sanitize(str_c(field_name), 80));
 		return SIEVE_EXEC_OK;
@@ -326,7 +326,7 @@ cmd_addheader_operation_execute(const struct sieve_runtime_env *renv,
 	if (_str_contains_nul(value)) {
 		sieve_runtime_error(
 			renv, NULL, "addheader action: "
-			"specified value `%s' is invalid (contains NUL character)",
+			"specified value '%s' is invalid (contains NUL character)",
 			str_sanitize(str_c(value), 80));
 		return SIEVE_EXEC_FAILURE;
 	}
@@ -334,7 +334,7 @@ cmd_addheader_operation_execute(const struct sieve_runtime_env *renv,
 	if (ext_editheader_header_too_large(this_ext, str_len(value))) {
 		sieve_runtime_error(
 			renv, NULL, "addheader action: "
-			"specified header value `%s' is too large (%zu bytes)",
+			"specified header value '%s' is too large (%zu bytes)",
 			str_sanitize(str_c(value), 80), str_len(value));
 		return SIEVE_EXEC_FAILURE;
 	}
diff --git a/src/lib-sieve/plugins/editheader/cmd-deleteheader.c b/src/lib-sieve/plugins/editheader/cmd-deleteheader.c
index c08dc54c51edf694357b8f83fee4939f75aec20e..4b8051c272abb9a09e6f6d7a58a2e4f519528bee 100644
--- a/src/lib-sieve/plugins/editheader/cmd-deleteheader.c
+++ b/src/lib-sieve/plugins/editheader/cmd-deleteheader.c
@@ -270,7 +270,7 @@ cmd_deleteheader_validate(struct sieve_validator *valdtr,
 						      str_len(fname))) {
 			sieve_argument_validate_error(
 				valdtr, arg, "deleteheader command:"
-				"specified field name `%s' is invalid",
+				"specified field name '%s' is invalid",
 				str_sanitize(str_c(fname), 80));
 			return FALSE;
 		}
@@ -279,7 +279,7 @@ cmd_deleteheader_validate(struct sieve_validator *valdtr,
 			cmd->ext, str_c(fname))) {
 			sieve_argument_validate_warning(
 				valdtr, arg, "deleteheader command: "
-				"deleting specified header field `%s' is forbidden; "
+				"deleting specified header field '%s' is forbidden; "
 				"modification will be denied",
 				str_sanitize(str_c(fname), 80));
 		}
@@ -447,7 +447,7 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 					      str_len(field_name))) {
 		sieve_runtime_error(
 			renv, NULL, "deleteheader action: "
-			"specified field name `%s' is invalid",
+			"specified field name '%s' is invalid",
 			str_sanitize(str_c(field_name), 80));
 		return SIEVE_EXEC_FAILURE;
 	}
@@ -455,7 +455,7 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 	if (!ext_editheader_header_allow_delete(this_ext, str_c(field_name))) {
 		sieve_runtime_warning(
 			renv, NULL, "deleteheader action: "
-			"deleting specified header field `%s' is forbidden; "
+			"deleting specified header field '%s' is forbidden; "
 			"modification denied",
 			str_sanitize(str_c(field_name), 80));
 		return SIEVE_EXEC_OK;
@@ -483,14 +483,14 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 			if (index_offset != 0) {
 				sieve_runtime_trace(
 					renv, 0,
-					"deleting matching occurrences of header `%s' at index %llu%s",
+					"deleting matching occurrences of header '%s' at index %llu%s",
 					str_c(field_name),
 					(unsigned long long)index_offset,
 					(index_last ? " from last": ""));
 			} else {
 				sieve_runtime_trace(
 					renv, 0,
-					"deleting matching occurrences of header `%s'",
+					"deleting matching occurrences of header '%s'",
 					str_c(field_name));
 			}
 		}
@@ -526,7 +526,7 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 						/* Remove it and iterate to next */
 						sieve_runtime_trace(
 							renv, 0,
-							"deleting header with value `%s'",
+							"deleting header with value '%s'",
 							value);
 
 						if (!edit_mail_headers_iterate_remove(edhiter))
@@ -548,12 +548,12 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 		}
 
 		if (ret == 0) {
-			sieve_runtime_trace(renv, 0, "header `%s' not found",
+			sieve_runtime_trace(renv, 0, "header '%s' not found",
 					    str_c(field_name));
 		} else if (ret < 0) {
 			sieve_runtime_warning(
 				renv, NULL, "deleteheader action: "
-				"failed to delete occurrences of header `%s' "
+				"failed to delete occurrences of header '%s' "
 				"(this should not happen!)",
 				str_c(field_name));
 		}
@@ -567,13 +567,13 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 			if (index_offset != 0) {
 				sieve_runtime_trace(
 					renv, 0,
-					"deleting header `%s' at index %llu%s",
+					"deleting header '%s' at index %llu%s",
 					str_c(field_name),
 					(unsigned long long)index_offset,
 					(index_last ? " from last": ""));
 			} else {
 				sieve_runtime_trace(
-					renv, 0, "deleting header `%s'",
+					renv, 0, "deleting header '%s'",
 					str_c(field_name));
 			}
 		}
@@ -583,13 +583,13 @@ cmd_deleteheader_operation_execute(const struct sieve_runtime_env *renv,
 		if (ret < 0) {
 			sieve_runtime_warning(
 				renv, NULL, "deleteheader action: "
-				"failed to delete occurrences of header `%s' "
+				"failed to delete occurrences of header '%s' "
 				"(this should not happen!)",
 				str_c(field_name));
 		} else if (trace) {
 			sieve_runtime_trace(
 				renv, 0,
-				"deleted %d occurrences of header `%s'",
+				"deleted %d occurrences of header '%s'",
 				ret, str_c(field_name));
 		}
 	}
diff --git a/src/lib-sieve/plugins/editheader/ext-editheader-common.c b/src/lib-sieve/plugins/editheader/ext-editheader-common.c
index 89fb180b311f30d4c9971bdd84f4c0a1a14391eb..094ceac596e4b2b8aafb6f5bb4c93a9be318c194 100644
--- a/src/lib-sieve/plugins/editheader/ext-editheader-common.c
+++ b/src/lib-sieve/plugins/editheader/ext-editheader-common.c
@@ -68,7 +68,7 @@ ext_editheader_config_headers(struct sieve_instance *svinst,
 				*headers, strlen(*headers))) {
 				e_warning(svinst->event, "editheader: "
 					  "setting %s contains invalid header field name "
-					  "`%s' (ignored)",
+					  "'%s' (ignored)",
 					  setting, *headers);
 				headers++;
 				continue;
diff --git a/src/lib-sieve/plugins/enotify/cmd-notify.c b/src/lib-sieve/plugins/enotify/cmd-notify.c
index 64e7024d2250ebe791f6759972bc6cda54f38d74..4e0503389291c3685fa232546d8e6e3259048e44 100644
--- a/src/lib-sieve/plugins/enotify/cmd-notify.c
+++ b/src/lib-sieve/plugins/enotify/cmd-notify.c
@@ -481,7 +481,7 @@ cmd_notify_operation_execute(const struct sieve_runtime_env *renv,
 	if (sieve_runtime_trace_active(renv, SIEVE_TRLVL_ACTIONS)) {
 		sieve_runtime_trace(renv, 0, "notify action");
 		sieve_runtime_trace_descend(renv);
-		sieve_runtime_trace(renv, 0, "notify with uri `%s'",
+		sieve_runtime_trace(renv, 0, "notify with uri '%s'",
 				    str_sanitize(str_c(method_uri), 80));
 	}
 
diff --git a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
index ffc584ffa223bc6ac9d1b4a940d0294bd28cb776..0234db970fe28bc267f5d098ed228774a9ef4d6c 100644
--- a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
+++ b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
@@ -788,9 +788,9 @@ ntfy_mailto_action_execute(const struct sieve_enotify_exec_env *nenv,
 	if (ret < 0) {
 		sieve_enotify_critical(
 			nenv, "mailto notification: "
-			"failed to read `auto-submitted' header field",
+			"failed to read 'auto-submitted' header field",
 			"mailto notification: "
-			"failed to read `auto-submitted' header field: %s",
+			"failed to read 'auto-submitted' header field: %s",
 			mailbox_get_last_internal_error(mail->box, NULL));
 		return -1;
 	}
diff --git a/src/lib-sieve/plugins/environment/tst-environment.c b/src/lib-sieve/plugins/environment/tst-environment.c
index a7928b4ae824249cbcb69df76663fd0a7f585749..0757d0191e3c5e1e1973b8ccfb13af2b7c80d3b2 100644
--- a/src/lib-sieve/plugins/environment/tst-environment.c
+++ b/src/lib-sieve/plugins/environment/tst-environment.c
@@ -212,7 +212,7 @@ tst_environment_operation_execute(const struct sieve_runtime_env *renv,
 
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(renv, SIEVE_TRLVL_TESTS,
-				    "environment item `%s' not found",
+				    "environment item '%s' not found",
 				    str_sanitize(str_c(name), 128));
 	}
 
diff --git a/src/lib-sieve/plugins/ihave/tst-ihave.c b/src/lib-sieve/plugins/ihave/tst-ihave.c
index 1e4f8a1ffaf51431bf70f172f4341dd420253b21..b5b19a85f8ff89d160044a95f3d0059ca4abf8e0 100644
--- a/src/lib-sieve/plugins/ihave/tst-ihave.c
+++ b/src/lib-sieve/plugins/ihave/tst-ihave.c
@@ -271,13 +271,13 @@ tst_ihave_operation_execute(const struct sieve_runtime_env *renv,
 		if (sret == SIEVE_EXEC_FAILURE) {
 			sieve_runtime_trace(
 				renv, SIEVE_TRLVL_TESTS,
-				"extension `%s' not available",
+				"extension '%s' not available",
 				sieve_extension_name(ext));
 			matched = FALSE;
 		} else if (sret == SIEVE_EXEC_OK) {
 			sieve_runtime_trace(
 				renv, SIEVE_TRLVL_TESTS,
-				"extension `%s' available",
+				"extension '%s' available",
 				sieve_extension_name(ext));
 		} else {
 			return sret;
diff --git a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
index eaff4298bbd515d1fca1b1f40932c119e11eb4f7..712b7a18566144ce8bc5263315609cec587424eb 100644
--- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
+++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
@@ -494,7 +494,7 @@ ext_imap4flags_get_flag_variable(const struct sieve_runtime_env *renv,
 			var_id = sieve_variable_get_varid(storage, var_index);
 
 			sieve_runtime_trace(renv, 0,
-					    "update variable `%s' [%s]",
+					    "update variable '%s' [%s]",
 					    var_name, var_id);
 		}
 
@@ -524,7 +524,7 @@ int sieve_ext_imap4flags_set_flags(const struct sieve_runtime_env *renv,
 		while ((ret = sieve_stringlist_next_item(
 			flags, &flags_item)) > 0) {
 			sieve_runtime_trace(renv, SIEVE_TRLVL_COMMANDS,
-					    "set flags `%s'",
+					    "set flags '%s'",
 					    str_c(flags_item));
 
 			flags_list_add_flags(cur_flags, flags_item);
@@ -553,7 +553,7 @@ int sieve_ext_imap4flags_add_flags(const struct sieve_runtime_env *renv,
 		while ((ret = sieve_stringlist_next_item(
 			flags, &flags_item)) > 0) {
 			sieve_runtime_trace(renv, SIEVE_TRLVL_COMMANDS,
-					    "add flags `%s'",
+					    "add flags '%s'",
 					    str_c(flags_item));
 
 			flags_list_add_flags(cur_flags, flags_item);
@@ -583,7 +583,7 @@ int sieve_ext_imap4flags_remove_flags(const struct sieve_runtime_env *renv,
 		while ((ret = sieve_stringlist_next_item(
 			flags, &flags_item)) > 0) {
 			sieve_runtime_trace(renv, SIEVE_TRLVL_COMMANDS,
-					    "remove flags `%s'",
+					    "remove flags '%s'",
 					    str_c(flags_item));
 
 			flags_list_remove_flags(cur_flags, flags_item);
diff --git a/src/lib-sieve/plugins/include/cmd-include.c b/src/lib-sieve/plugins/include/cmd-include.c
index 38135a773ac7c79d2069032fc3285a7ddd2cc5d8..3ca8d8df26ae23a3530776b5b09fad73b1dbee51 100644
--- a/src/lib-sieve/plugins/include/cmd-include.c
+++ b/src/lib-sieve/plugins/include/cmd-include.c
@@ -266,14 +266,14 @@ cmd_include_validate(struct sieve_validator *valdtr,
 		if (error == SIEVE_ERROR_NOT_FOUND) {
 			sieve_argument_validate_error(
 				valdtr, arg, "include: "
-				"%s location for included script `%s' is unavailable "
+				"%s location for included script '%s' is unavailable "
 				"(contact system administrator for more information)",
 				ext_include_script_location_name(ctx_data->location),
 				str_sanitize(script_name, 80));
 		} else {
 			sieve_argument_validate_error(
 				valdtr, arg, "include: "
-				"failed to access %s location for included script `%s' "
+				"failed to access %s location for included script '%s' "
 				"(contact system administrator for more information)",
 				ext_include_script_location_name(ctx_data->location),
 				str_sanitize(script_name, 80));
@@ -392,7 +392,7 @@ static bool opc_include_dump(const struct sieve_dumptime_env *denv,
 
 	sieve_code_descend(denv);
 	sieve_code_dumpf(
-		denv, "script: `%s' from %s %s%s[ID: %d, BLOCK: %d]",
+		denv, "script: '%s' from %s %s%s[ID: %d, BLOCK: %d]",
 		sieve_script_name(included->script),
 		sieve_script_location(included->script),
 		((flags & EXT_INCLUDE_FLAG_ONCE) != 0 ? "(once) " : ""),
diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c
index 04bc4b7f36c294c0e4076f8414a842ebd4c457aa..7249ad73da3f934f0972fa4160e7bd9c7ebc526c 100644
--- a/src/lib-sieve/plugins/include/ext-include-common.c
+++ b/src/lib-sieve/plugins/include/ext-include-common.c
@@ -91,7 +91,7 @@ bool ext_include_load(const struct sieve_extension *ext, void **context)
 	if (location == NULL) {
 		e_debug(svinst->event, "include: "
 			"sieve_global is not set; "
-			"it is currently not possible to include `:global' scripts.");
+			"it is currently not possible to include ':global' scripts.");
 	}
 
 	ctx->global_location = i_strdup(location);
@@ -154,7 +154,7 @@ ext_include_get_script_storage(const struct sieve_extension *ext,
 		if (ctx->global_location == NULL) {
 			e_info(svinst->event, "include: "
 				"sieve_global is unconfigured; "
-				"include of `:global' script `%s' is therefore not possible",
+				"include of ':global' script '%s' is therefore not possible",
 				str_sanitize(script_name, 80));
 			if (error_r != NULL)
 				*error_r = SIEVE_ERROR_NOT_FOUND;
diff --git a/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c b/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
index 34dfcbf63dc8d13033e5ab571a1292c579c04d3c..0d96980fa3c55088ea224d267a774909e0c6b854 100644
--- a/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
+++ b/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
@@ -84,7 +84,7 @@ tst_mailboxexists_mailbox_validate(void *context,
 		if (!sieve_mailbox_check_name(mailbox, &error)) {
 			sieve_argument_validate_warning(
 				valctx->valdtr, arg, "%s test: "
-				"invalid mailbox name `%s' specified: %s",
+				"invalid mailbox name '%s' specified: %s",
 				sieve_command_identifier(valctx->tst),
 				str_sanitize(mailbox, 256), error);
 		}
@@ -163,7 +163,7 @@ tst_mailboxexists_test_mailbox(const struct sieve_runtime_env *renv,
 	if (!sieve_mailbox_check_name(mailbox, &error)) {
 		sieve_runtime_warning(
 			renv, NULL, "mailboxexists test: "
-			"invalid mailbox name `%s' specified: %s",
+			"invalid mailbox name '%s' specified: %s",
 			str_sanitize(mailbox, 256), error);
 		*all_exist_r = FALSE;
 		return SIEVE_EXEC_OK;
@@ -178,7 +178,7 @@ tst_mailboxexists_test_mailbox(const struct sieve_runtime_env *renv,
 		if (trace) {
 			sieve_runtime_trace(
 				renv, 0,
-				"mailbox `%s' cannot be opened",
+				"mailbox '%s' cannot be opened",
 				str_sanitize(mailbox, 80));
 		}
 		mailbox_free(&box);
@@ -191,7 +191,7 @@ tst_mailboxexists_test_mailbox(const struct sieve_runtime_env *renv,
 		if (trace) {
 			sieve_runtime_trace(
 				renv, 0,
-				"mailbox `%s' is read-only",
+				"mailbox '%s' is read-only",
 				str_sanitize(mailbox, 80));
 		}
 		mailbox_free(&box);
@@ -204,7 +204,7 @@ tst_mailboxexists_test_mailbox(const struct sieve_runtime_env *renv,
 
 	if (trace) {
 		sieve_runtime_trace(
-			renv, 0, "mailbox `%s' exists",
+			renv, 0, "mailbox '%s' exists",
 			str_sanitize(mailbox, 80));
 	}
 
diff --git a/src/lib-sieve/plugins/metadata/tst-metadata.c b/src/lib-sieve/plugins/metadata/tst-metadata.c
index 2e1453549505a8bf3b3f1df382a44b60eae19ffe..cdeb9469af3b237942154da1020e793bf6365c9a 100644
--- a/src/lib-sieve/plugins/metadata/tst-metadata.c
+++ b/src/lib-sieve/plugins/metadata/tst-metadata.c
@@ -161,7 +161,7 @@ tst_metadata_validate(struct sieve_validator *valdtr, struct sieve_command *tst)
 			if (!sieve_mailbox_check_name(mailbox, &error)) {
 				sieve_argument_validate_warning(
 					valdtr, arg, "%s test: "
-					"invalid mailbox name `%s' specified: %s",
+					"invalid mailbox name '%s' specified: %s",
 					sieve_command_identifier(tst),
 					str_sanitize(mailbox, 256), error);
 			}
@@ -184,7 +184,7 @@ tst_metadata_validate(struct sieve_validator *valdtr, struct sieve_command *tst)
 		if (!imap_metadata_verify_entry_name(str_c(aname), &error)) {
 			sieve_argument_validate_warning(
 				valdtr, arg, "%s test: "
-				"specified annotation name `%s' is invalid: %s",
+				"specified annotation name '%s' is invalid: %s",
 				sieve_command_identifier(tst),
 				str_sanitize(str_c(aname), 256),
 				sieve_error_from_external(error));
@@ -300,7 +300,7 @@ tst_metadata_get_annotation(const struct sieve_runtime_env *renv,
 
 		sieve_runtime_error(
 			renv, NULL, "%s test: "
-			"failed to retrieve annotation `%s': %s%s",
+			"failed to retrieve annotation '%s': %s%s",
 			(mailbox != NULL ? "metadata" : "servermetadata"),
 			str_sanitize(aname, 256),
 			sieve_error_from_external(error),
@@ -375,7 +375,7 @@ tst_metadata_operation_execute(const struct sieve_runtime_env *renv,
 	if (!imap_metadata_verify_entry_name(str_c(aname), &error)) {
 		sieve_runtime_warning(
 			renv, NULL, "%s test: "
-			"specified annotation name `%s' is invalid: %s",
+			"specified annotation name '%s' is invalid: %s",
 			(metadata ? "metadata" : "servermetadata"),
 			str_sanitize(str_c(aname), 256),
 			sieve_error_from_external(error));
@@ -387,7 +387,7 @@ tst_metadata_operation_execute(const struct sieve_runtime_env *renv,
 		if (!sieve_mailbox_check_name(str_c(mailbox), &error)) {
 			sieve_runtime_warning(
 				renv, NULL, "metadata test: "
-				"invalid mailbox name `%s' specified: %s",
+				"invalid mailbox name '%s' specified: %s",
 				str_sanitize(str_c(mailbox), 256), error);
 			sieve_interpreter_set_test_result(renv->interp, FALSE);
 			return SIEVE_EXEC_OK;
@@ -395,13 +395,13 @@ tst_metadata_operation_execute(const struct sieve_runtime_env *renv,
 
 		sieve_runtime_trace(
 			renv, SIEVE_TRLVL_TESTS,
-			"retrieving annotation `%s' from mailbox `%s'",
+			"retrieving annotation '%s' from mailbox '%s'",
 			str_sanitize(str_c(aname), 256),
 			str_sanitize(str_c(mailbox), 80));
 	} else {
 		sieve_runtime_trace(
 			renv, SIEVE_TRLVL_TESTS,
-			"retrieving server annotation `%s'",
+			"retrieving server annotation '%s'",
 			str_sanitize(str_c(aname), 256));
 	}
 
diff --git a/src/lib-sieve/plugins/metadata/tst-metadataexists.c b/src/lib-sieve/plugins/metadata/tst-metadataexists.c
index 8c14ce27594c26a61f551bfe70031357712bc758..2719d1962f987569599a71b157037b442743fb4d 100644
--- a/src/lib-sieve/plugins/metadata/tst-metadataexists.c
+++ b/src/lib-sieve/plugins/metadata/tst-metadataexists.c
@@ -126,7 +126,7 @@ tst_metadataexists_annotation_validate(void *context,
 		if (!imap_metadata_verify_entry_name(aname, &error)) {
 			sieve_argument_validate_warning(
 				valctx->valdtr, arg, "%s test: "
-				"specified annotation name `%s' is invalid: %s",
+				"specified annotation name '%s' is invalid: %s",
 				sieve_command_identifier(valctx->tst),
 				str_sanitize(aname, 256),
 				sieve_error_from_external(error));
@@ -161,7 +161,7 @@ tst_metadataexists_validate(struct sieve_validator *valdtr,
 			if (!sieve_mailbox_check_name(mailbox, &error)) {
 				sieve_argument_validate_warning(
 					valdtr, arg, "%s test: "
-					"invalid mailbox name `%s' specified: %s",
+					"invalid mailbox name '%s' specified: %s",
 					sieve_command_identifier(tst),
 					str_sanitize(mailbox, 256), error);
 			}
@@ -249,7 +249,7 @@ tst_metadataexists_check_annotation(const struct sieve_runtime_env *renv,
 	if (!imap_metadata_verify_entry_name(aname, &error)) {
 		sieve_runtime_warning(
 			renv, NULL, "%s test: "
-			"specified annotation name `%s' is invalid: %s",
+			"specified annotation name '%s' is invalid: %s",
 			(mailbox != NULL ?
 			 "metadataexists" : "servermetadataexists"),
 			str_sanitize(aname, 256),
@@ -267,7 +267,7 @@ tst_metadataexists_check_annotation(const struct sieve_runtime_env *renv,
 			imtrans, &error_code);
 		sieve_runtime_error(
 			renv, NULL, "%s test: "
-			"failed to retrieve annotation `%s': %s%s",
+			"failed to retrieve annotation '%s': %s%s",
 			(mailbox != NULL ?
 			 "metadataexists" : "servermetadataexists"),
 			str_sanitize(aname, 256),
@@ -281,11 +281,11 @@ tst_metadataexists_check_annotation(const struct sieve_runtime_env *renv,
 	}
 	if (avalue.value == NULL && avalue.value_stream == NULL) {
 		sieve_runtime_trace(renv, 0,
-				    "annotation `%s': not found", aname);
+				    "annotation '%s': not found", aname);
 		*all_exist_r = FALSE;
 	}
 
-	sieve_runtime_trace(renv, 0, "annotation `%s': found", aname);
+	sieve_runtime_trace(renv, 0, "annotation '%s': found", aname);
 	return SIEVE_EXEC_OK;
 }
 
@@ -320,7 +320,7 @@ tst_metadataexists_check_annotations(const struct sieve_runtime_env *renv,
 	if (mailbox != NULL) {
 		sieve_runtime_trace(
 			renv, SIEVE_TRLVL_TESTS,
-			"checking annotations of mailbox `%s':",
+			"checking annotations of mailbox '%s':",
 			str_sanitize(mailbox, 80));
 	} else {
 		sieve_runtime_trace(
@@ -391,7 +391,7 @@ tst_metadataexists_operation_execute(const struct sieve_runtime_env *renv,
 	    !sieve_mailbox_check_name(str_c(mailbox), &error)) {
 		sieve_runtime_warning(
 			renv, NULL, "metadataexists test: "
-			"invalid mailbox name `%s' specified: %s",
+			"invalid mailbox name '%s' specified: %s",
 			str_sanitize(str_c(mailbox), 256), error);
 		sieve_interpreter_set_test_result(renv->interp, FALSE);
 		return SIEVE_EXEC_OK;
diff --git a/src/lib-sieve/plugins/mime/cmd-break.c b/src/lib-sieve/plugins/mime/cmd-break.c
index 4b0d4d1c0f22efa78f70329304e0ee735fcb2b3e..6a0bf64b10c666d7a03f5cefa3324e0b9bf1ead1 100644
--- a/src/lib-sieve/plugins/mime/cmd-break.c
+++ b/src/lib-sieve/plugins/mime/cmd-break.c
@@ -185,7 +185,7 @@ cmd_break_validate(struct sieve_validator *valdtr, struct sieve_command *cmd)
 			sieve_command_validate_error(
 				valdtr, cmd,
 				"the break command is not placed inside "
-				"a foreverypart loop named `%s'", name);
+				"a foreverypart loop named '%s'", name);
 		}
 		return FALSE;
 	}
diff --git a/src/lib-sieve/plugins/mime/cmd-extracttext.c b/src/lib-sieve/plugins/mime/cmd-extracttext.c
index 9d14e5a62ad2b5d36756a930ef2837bdd9e497c3..800738913e160d1be4dcfe741d00bbb085facb8f 100644
--- a/src/lib-sieve/plugins/mime/cmd-extracttext.c
+++ b/src/lib-sieve/plugins/mime/cmd-extracttext.c
@@ -375,7 +375,7 @@ cmd_extracttext_operation_execute(const struct sieve_runtime_env *renv,
 						    &var_name);
 		var_id = sieve_variable_get_varid(storage, var_index);
 
-		sieve_runtime_trace_here(renv, 0, "assign `%s' [%s] = \"%s\"",
+		sieve_runtime_trace_here(renv, 0, "assign '%s' [%s] = \"%s\"",
 					 var_name, var_id, str_c(value));
 	}
 
diff --git a/src/lib-sieve/plugins/mime/tag-mime.c b/src/lib-sieve/plugins/mime/tag-mime.c
index cfa8817d295a37f42cb63b3a8a9f78e55c115284..ff646c54a7f00f607f43a60cfc4cc7d8b34dfdae 100644
--- a/src/lib-sieve/plugins/mime/tag-mime.c
+++ b/src/lib-sieve/plugins/mime/tag-mime.c
@@ -332,7 +332,7 @@ content_type_param_next(struct content_header_stringlist *strlist)
 					/* Return raw value */
 					if (trace) {
 						sieve_runtime_trace(renv, 0,
-							"found mime parameter `%s' in mime header",
+							"found mime parameter '%s' in mime header",
 							*params);
 					}
 
diff --git a/src/lib-sieve/plugins/regex/mcht-regex.c b/src/lib-sieve/plugins/regex/mcht-regex.c
index 28db4aa922991e64de3a56e69353e787c2bd9f2b..2079bc5af59ffb4c8c1323e418e534a42696ed34 100644
--- a/src/lib-sieve/plugins/regex/mcht-regex.c
+++ b/src/lib-sieve/plugins/regex/mcht-regex.c
@@ -331,7 +331,7 @@ mcht_regex_match_keys(struct sieve_match_context *mctx,
 
 					if (trace) {
 						sieve_runtime_trace(renv, 0,
-							"with regex `%s' [id=%d] => %d",
+							"with regex '%s' [id=%d] => %d",
 							str_sanitize(str_c(key_item), 80),
 							array_count(&ctx->reg_expressions)-1, match);
 					}
diff --git a/src/lib-sieve/plugins/relational/mcht-count.c b/src/lib-sieve/plugins/relational/mcht-count.c
index 7680f8c1b85ecfa3280937ff14fda46f5141ca7f..e0f7036f5a98c0c4770d32f3ab94a3cba6821932 100644
--- a/src/lib-sieve/plugins/relational/mcht-count.c
+++ b/src/lib-sieve/plugins/relational/mcht-count.c
@@ -85,7 +85,7 @@ mcht_count_match(struct sieve_match_context *mctx,
 	str_printfa(value, "%d", count);
 
 	if (trace) {
-		sieve_runtime_trace(renv, 0, "matching count value `%s'",
+		sieve_runtime_trace(renv, 0, "matching count value '%s'",
 				    str_sanitize(str_c(value), 80));
 	}
 
@@ -102,7 +102,7 @@ mcht_count_match(struct sieve_match_context *mctx,
 			str_c(key_item), str_len(key_item));
 
 		if (trace) {
-			sieve_runtime_trace(renv, 0, "with key `%s' => %d",
+			sieve_runtime_trace(renv, 0, "with key '%s' => %d",
 					    str_sanitize(str_c(key_item), 80),
 					    ret);
 		}
diff --git a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c
index 803380df68abe21e344475b2a330bf9f4ade6173..78ae3cc86c7356a45f42735041b2b080603325c9 100644
--- a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c
+++ b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c
@@ -531,7 +531,7 @@ int ext_spamvirustest_get_value(const struct sieve_runtime_env *renv,
 				&header_value) < 0) {
 				return sieve_runtime_mail_error	(
 					renv, mail, "%s test: "
-					"failed to read header field `%s'",
+					"failed to read header field '%s'",
 					sieve_extension_name(ext),
 					max_header->header_name);
 			}
@@ -600,7 +600,7 @@ int ext_spamvirustest_get_value(const struct sieve_runtime_env *renv,
 	if (mail_get_first_header_utf8(mail, status_header->header_name,
 				       &header_value) < 0) {
 		return sieve_runtime_mail_error(
-			renv, mail, "%s test: failed to read header field `%s'",
+			renv, mail, "%s test: failed to read header field '%s'",
 			sieve_extension_name(ext), status_header->header_name);
 	}
 	if (header_value == NULL) {
diff --git a/src/lib-sieve/plugins/special-use/tag-specialuse.c b/src/lib-sieve/plugins/special-use/tag-specialuse.c
index d4ccaaf90e00e0522de0ca2e56688ec8616aa296..7a3850d73ddcb589da6c7520662f4c9c6c08c15b 100644
--- a/src/lib-sieve/plugins/special-use/tag-specialuse.c
+++ b/src/lib-sieve/plugins/special-use/tag-specialuse.c
@@ -117,7 +117,7 @@ tag_specialuse_validate(struct sieve_validator *valdtr,
 		if (!ext_special_use_flag_valid(use_flag)) {
 			sieve_argument_validate_error(
 				valdtr, *arg, "specialuse tag: "
-				"invalid special-use flag `%s' specified",
+				"invalid special-use flag '%s' specified",
 				str_sanitize(use_flag, 64));
 			return FALSE;
 		}
@@ -200,7 +200,7 @@ seff_specialuse_read_context(
 	if (!ext_special_use_flag_valid(use_flag)) {
 		sieve_runtime_error(
 			renv, NULL, "specialuse tag: "
-			"invalid special-use flag `%s' specified",
+			"invalid special-use flag '%s' specified",
 			str_sanitize(use_flag, 64));
 		return SIEVE_EXEC_FAILURE;
 	}
@@ -241,7 +241,7 @@ seff_specialuse_print(const struct sieve_side_effect *seffect,
 
 	sieve_result_seffect_printf(
 		rpenv,
-		"use mailbox with special-use flag `%s' instead if accessible",
+		"use mailbox with special-use flag '%s' instead if accessible",
 		ctx->special_use_flag);
 }
 
diff --git a/src/lib-sieve/plugins/special-use/tst-specialuse-exists.c b/src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
index 5d471fc09eaf9c1cfcbd4a182e8652338e8d4621..0ff90f16045e57d85b2affb8da84d81665abf70a 100644
--- a/src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
+++ b/src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
@@ -84,7 +84,7 @@ tst_specialuse_exists_flag_validate(void *context,
 		if (!ext_special_use_flag_valid(flag)) {
 			sieve_argument_validate_error(
 				valctx->valdtr, arg, "%s test: "
-				"invalid special-use flag `%s' specified",
+				"invalid special-use flag '%s' specified",
 				sieve_command_identifier(valctx->tst),
 				str_sanitize(flag, 64));
 		}
@@ -149,7 +149,7 @@ tst_specialuse_exists_validate(struct sieve_validator *valdtr,
 			if (!sieve_mailbox_check_name(mailbox, &error)) {
 				sieve_argument_validate_warning(
 					valdtr, arg, "%s test: "
-					"invalid mailbox name `%s' specified: %s",
+					"invalid mailbox name '%s' specified: %s",
 					sieve_command_identifier(tst),
 					str_sanitize(mailbox, 256), error);
 			}
@@ -265,7 +265,7 @@ tst_specialuse_find_mailbox(const struct sieve_runtime_env *renv,
 
 		if (trace) {
 			sieve_runtime_trace(
-				renv, 0, "mailbox `%s' cannot be opened: %s",
+				renv, 0, "mailbox '%s' cannot be opened: %s",
 				str_sanitize(mailbox, 256), error);
 		}
 
@@ -274,7 +274,7 @@ tst_specialuse_find_mailbox(const struct sieve_runtime_env *renv,
 		if (error_code == MAIL_ERROR_TEMP) {
 			sieve_runtime_error(
 				renv, NULL,	"specialuse_exists test: "
-				"failed to open mailbox `%s': %s",
+				"failed to open mailbox '%s': %s",
 				str_sanitize(mailbox, 256), error);
 			return -1;
 		}
@@ -285,7 +285,7 @@ tst_specialuse_find_mailbox(const struct sieve_runtime_env *renv,
 	if (mailbox_is_readonly(box)) {
 		if (trace) {
 			sieve_runtime_trace(
-				renv, 0, "mailbox `%s' is read-only",
+				renv, 0, "mailbox '%s' is read-only",
 				str_sanitize(mailbox, 256));
 		}
 
@@ -320,7 +320,7 @@ tst_specialuse_find_specialuse(const struct sieve_runtime_env *renv,
 
 		if (trace) {
 			sieve_runtime_trace(
-				renv, 0, "mailbox with special-use flag `%s' "
+				renv, 0, "mailbox with special-use flag '%s' "
 				"cannot be opened: %s",
 				str_sanitize(special_use, 64), error);
 		}
@@ -330,7 +330,7 @@ tst_specialuse_find_specialuse(const struct sieve_runtime_env *renv,
 		if (error_code == MAIL_ERROR_TEMP) {
 			sieve_runtime_error(
 				renv, NULL, "specialuse_exists test: "
-				"failed to open mailbox with special-use flag`%s': %s",
+				"failed to open mailbox with special-use flag'%s': %s",
 				str_sanitize(special_use, 64), error);
 			return -1;
 		}
@@ -342,7 +342,7 @@ tst_specialuse_find_specialuse(const struct sieve_runtime_env *renv,
 		if (trace) {
 			sieve_runtime_trace(
 				renv, 0,
-				"mailbox with special-use flag `%s' is read-only",
+				"mailbox with special-use flag '%s' is read-only",
 				str_sanitize(special_use, 64));
 		}
 
@@ -364,7 +364,7 @@ tst_specialuse_exists_check_flag(const struct sieve_runtime_env *renv,
 	if (!ext_special_use_flag_valid(use_flag)) {
 		sieve_runtime_error(
 			renv, NULL, "specialuse_exists test: "
-			"invalid special-use flag `%s' specified",
+			"invalid special-use flag '%s' specified",
 			str_sanitize(use_flag, 64));
 		return SIEVE_EXEC_FAILURE;
 	}
@@ -388,7 +388,7 @@ tst_specialuse_exists_check_flag(const struct sieve_runtime_env *renv,
 
 	if (trace) {
 		sieve_runtime_trace(
-			renv, 0, "special-use flag `%s' exists",
+			renv, 0, "special-use flag '%s' exists",
 			str_sanitize(use_flag, 80));
 	}
 
@@ -457,7 +457,7 @@ tst_specialuse_exists_operation_execute(const struct sieve_runtime_env *renv,
 		if (!sieve_mailbox_check_name(str_c(mailbox), &error)) {
 			sieve_runtime_warning(
 				renv, NULL, "specialuse_exists test: "
-				"invalid mailbox name `%s' specified: %s",
+				"invalid mailbox name '%s' specified: %s",
 				str_sanitize(str_c(mailbox), 256), error);
 			sieve_interpreter_set_test_result(renv->interp, FALSE);
 			return SIEVE_EXEC_OK;
@@ -469,7 +469,7 @@ tst_specialuse_exists_operation_execute(const struct sieve_runtime_env *renv,
 
 	if (box == NULL && mailbox != NULL) {
 		sieve_runtime_trace(
-			renv, 0, "mailbox `%s' is not accessible",
+			renv, 0, "mailbox '%s' is not accessible",
 			str_sanitize(str_c(mailbox), 80));
 		sieve_interpreter_set_test_result(renv->interp, FALSE);
 		return SIEVE_EXEC_OK;
@@ -477,7 +477,7 @@ tst_specialuse_exists_operation_execute(const struct sieve_runtime_env *renv,
 
 	if (mailbox != NULL) {
 		sieve_runtime_trace(
-			renv, 0, "mailbox `%s' is accessible",
+			renv, 0, "mailbox '%s' is accessible",
 			str_sanitize(str_c(mailbox), 80));
 	}
 
diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c
index 349ec07472570b7a9b1151cc7fc0b963d8819a26..a02916dfcc335dd72af8257f4b6c4a203e164687 100644
--- a/src/lib-sieve/plugins/vacation/cmd-vacation.c
+++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c
@@ -679,7 +679,7 @@ ext_vacation_operation_execute(const struct sieve_runtime_env *renv,
 	if (sieve_runtime_trace_active(renv, SIEVE_TRLVL_ACTIONS)) {
 		sieve_runtime_trace(renv, 0, "vacation action");
 		sieve_runtime_trace_descend(renv);
-		sieve_runtime_trace(renv, 0, "auto-reply with message `%s'",
+		sieve_runtime_trace(renv, 0, "auto-reply with message '%s'",
 				    str_sanitize(str_c(reason), 80));
 	}
 
@@ -998,7 +998,7 @@ _get_full_reply_recipient(const struct sieve_action_exec_env *aenv,
 		if (ret < 0) {
 			return sieve_result_mail_error(
 				aenv, msgdata->mail,
-				"failed to read header field `%s'", *hdsp);
+				"failed to read header field '%s'", *hdsp);
 		}
 		if (ret == 0 || header == NULL)
 			continue;
@@ -1042,7 +1042,7 @@ act_vacation_get_default_subject(const struct sieve_action_exec_env *aenv,
 	if (ret < 0) {
 		return sieve_result_mail_error(
 			aenv, msgdata->mail,
-			"failed to read header field `subject'");
+			"failed to read header field 'subject'");
 	}
 	if (ret == 0)
 		return SIEVE_EXEC_OK;
@@ -1155,7 +1155,7 @@ act_vacation_send(const struct sieve_action_exec_env *aenv,
 		sieve_smtp_abort(sctx);
 		return sieve_result_mail_error(
 			aenv, msgdata->mail,
-			"failed to read header field `references'");
+			"failed to read header field 'references'");
 	}
 
 	if (msgdata->id != NULL) {
@@ -1339,7 +1339,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 		if (ret < 0) {
 			return sieve_result_mail_error(
 				aenv, mail,
-				"failed to read header field `%s'", *hdsp);
+				"failed to read header field '%s'", *hdsp);
 		}
 
 		if (ret > 0 && headers[0] != NULL) {
@@ -1358,7 +1358,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 	if (ret < 0) {
 		return sieve_result_mail_error(
 			aenv, mail,
-			"failed to read header field `auto-submitted'");
+			"failed to read header field 'auto-submitted'");
 	}
 	/* Theoretically multiple headers could exist, so lets make sure */
 	if (ret > 0) {
@@ -1379,7 +1379,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 	ret = mail_get_headers(mail, "precedence", &headers);
 	if (ret < 0) {
 		return sieve_result_mail_error(
-			aenv, mail, "failed to read header field `precedence'");
+			aenv, mail, "failed to read header field 'precedence'");
 	}
 	/* Theoretically multiple headers could exist, so lets make sure */
 	if (ret > 0) {
@@ -1403,7 +1403,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 	if (ret < 0) {
 		return sieve_result_mail_error(
 			aenv, mail,
-			"failed to read header field `x-auto-response-suppress'");
+			"failed to read header field 'x-auto-response-suppress'");
 	}
 	/* Theoretically multiple headers could exist, so lets make sure */
 	if (ret > 0) {
@@ -1418,7 +1418,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 				    strcasecmp(flag, "OOF") == 0) {
 					sieve_result_global_log(
 						aenv, "discarding vacation response to message from <%s> "
-						"(`%s' flag found in x-auto-response-suppress header)",
+						"('%s' flag found in x-auto-response-suppress header)",
 						smtp_address_encode(sender), flag);
 					return SIEVE_EXEC_OK;
 				}
@@ -1451,7 +1451,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 		ret = mail_get_headers(mail, *hdsp, &headers);
 		if (ret < 0) {
 			return sieve_result_mail_error(
-				aenv, mail, "failed to read header field `%s'",
+				aenv, mail, "failed to read header field '%s'",
 				*hdsp);
 		}
 		if (ret > 0 && headers[0] != NULL) {
@@ -1535,7 +1535,7 @@ act_vacation_commit(const struct sieve_action_exec_env *aenv,
 			sieve_result_global_log(
 				aenv, "discarding vacation response for implicitly delivered message; "
 				"no known (envelope) recipient address found in message headers "
-				"(recipient=<%s>, %s%sand%s additional `:addresses' are specified)",
+				"(recipient=<%s>, %s%sand%s additional ':addresses' are specified)",
 				smtp_address_encode(recipient),
 				orig_rcpt_str, user_email_str,
 				(ctx->addresses == NULL || *ctx->addresses == NULL ?
diff --git a/src/lib-sieve/plugins/variables/cmd-set.c b/src/lib-sieve/plugins/variables/cmd-set.c
index 95c9a77430c055f1252e061066ceacbd6634e7b3..2e7b9b41592601417d23ef6702090087a4ee1ad6 100644
--- a/src/lib-sieve/plugins/variables/cmd-set.c
+++ b/src/lib-sieve/plugins/variables/cmd-set.c
@@ -227,7 +227,7 @@ cmd_set_operation_execute(const struct sieve_runtime_env *renv,
 						    &var_name);
 		var_id = sieve_variable_get_varid(storage, var_index);
 
-		sieve_runtime_trace_here(renv, 0, "assign `%s' [%s] = \"%s\"",
+		sieve_runtime_trace_here(renv, 0, "assign '%s' [%s] = \"%s\"",
 					 var_name, var_id, str_c(value));
 	}
 
diff --git a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c
index 7367d2e8f8e353d87553c4b5f4a5643ca0b83208..e4b45160b74620c7f07cd6a2be81f73a54d19153 100644
--- a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c
+++ b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c
@@ -73,7 +73,7 @@ vnspc_vnd_environment_validate(
 		if (name_elements[i].num_variable >= 0) {
 			sieve_argument_validate_error(
 				valdtr, arg, "vnd.dovecot.environment: "
-				"invalid variable name within env namespace `env.%d': "
+				"invalid variable name within env namespace 'env.%d': "
 				"encountered numeric variable name",
 				name_elements[i].num_variable);
 			return FALSE;
@@ -88,7 +88,7 @@ vnspc_vnd_environment_validate(
 	if (assignment) {
 		sieve_argument_validate_error(
 			valdtr, arg, "vnd.dovecot.environment: "
-			"cannot assign to environment variable `env.%s'",
+			"cannot assign to environment variable 'env.%s'",
 			variable);
 		return FALSE;
 	}
diff --git a/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c b/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c
index f96a1b4eba3fd83d9c98c61959d96d61f574c15e..109d1b36da73746a0d4779d4591a50145fa64e7b 100644
--- a/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c
+++ b/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c
@@ -178,7 +178,7 @@ cmd_report_validate(struct sieve_validator *valdtr, struct sieve_command *cmd)
 			if (feedback_type == NULL) {
 				sieve_argument_validate_error(
 					valdtr, arg,
-					"specified feedback type `%s' is invalid",
+					"specified feedback type '%s' is invalid",
 					str_sanitize(str_c(fbtype),128));
 			}
 		} T_END;
@@ -346,7 +346,7 @@ cmd_report_operation_execute(const struct sieve_runtime_env *renv,
 	if (feedback_type == NULL) {
 		sieve_runtime_error(
 			renv, NULL,
-			"specified report feedback type `%s' is invalid",
+			"specified report feedback type '%s' is invalid",
 			str_sanitize(str_c(fbtype), 256));
 		return SIEVE_EXEC_FAILURE;
 	}
@@ -366,7 +366,7 @@ cmd_report_operation_execute(const struct sieve_runtime_env *renv,
 		sieve_runtime_trace(renv, 0, "report action");
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(
-			renv, 0, "report incoming message as `%s' to address %s",
+			renv, 0, "report incoming message as '%s' to address %s",
 			str_sanitize(str_c(fbtype), 32),
 			smtp_address_encode_path(parsed_address));
 	}
@@ -425,7 +425,7 @@ act_report_print(const struct sieve_action *action,
 		(struct act_report_data *)action->context;
 
 	sieve_result_action_printf(rpenv,
-		"report incoming message as `%s' to: %s",
+		"report incoming message as '%s' to: %s",
 		str_sanitize(rdd->feedback_type, 32),
 		smtp_address_encode_path(rdd->to_address));
 }
@@ -475,7 +475,7 @@ act_report_send(const struct sieve_action_exec_env *aenv,
 	if (ret < 0) {
 		return sieve_result_mail_error(
 			aenv, msgdata->mail,
-			"failed to read header field `subject'");
+			"failed to read header field 'subject'");
 	}
 	if (ret > 0 && headers[0] != NULL)
 		subject = t_strconcat("Report: ", headers[0], NULL);
@@ -635,14 +635,14 @@ act_report_send(const struct sieve_action_exec_env *aenv,
 	if (ret <= 0) {
 		if (ret < 0) {
 			sieve_result_global_error(
-				aenv, "failed to send `%s' report to <%s>: %s "
+				aenv, "failed to send '%s' report to <%s>: %s "
 				"(temporary failure)",
 				str_sanitize(act->feedback_type, 32),
 				smtp_address_encode(act->to_address),
 				str_sanitize(error, 512));
 		} else {
 			sieve_result_global_log_error(
-				aenv, "failed to send `%s' report to <%s>: %s "
+				aenv, "failed to send '%s' report to <%s>: %s "
 				"(permanent failure)",
 				str_sanitize(act->feedback_type, 32),
 				smtp_address_encode(act->to_address),
@@ -659,7 +659,7 @@ act_report_send(const struct sieve_action_exec_env *aenv,
 				str_sanitize(act->feedback_type, 32));
 
 		sieve_result_event_log(aenv, e->event(),
-				       "sent `%s' report to <%s>",
+				       "sent '%s' report to <%s>",
 				       str_sanitize(act->feedback_type, 32),
 				       smtp_address_encode(act->to_address));
 	}
diff --git a/src/lib-sieve/sieve-address-parts.c b/src/lib-sieve/sieve-address-parts.c
index 849d7a9a75ce39ef9fc22b1517c9cce92300c4c6..fdda12b471c45b7d0dc12afe8ec734610c3ea9dc 100644
--- a/src/lib-sieve/sieve-address-parts.c
+++ b/src/lib-sieve/sieve-address-parts.c
@@ -298,7 +298,7 @@ sieve_address_part_stringlist_next_item(struct sieve_stringlist *_strlist,
 				if (_strlist->trace) {
 					sieve_runtime_trace(
 						_strlist->runenv, 0,
-						"extracting `%s' part from non-address value `%s'",
+						"extracting '%s' part from non-address value '%s'",
 						sieve_address_part_name(strlist->addrp),
 						str_sanitize(str_c(item_unparsed), 80));
 				}
@@ -314,7 +314,7 @@ sieve_address_part_stringlist_next_item(struct sieve_stringlist *_strlist,
 			if (_strlist->trace) {
 				sieve_runtime_trace(
 					_strlist->runenv, 0,
-					"extracting `%s' part from address %s",
+					"extracting '%s' part from address %s",
 					sieve_address_part_name(strlist->addrp),
 					smtp_address_encode_path(&item));
 			}
diff --git a/src/lib-sieve/sieve-address.c b/src/lib-sieve/sieve-address.c
index c0d982a538e10c35e17792374e455a79f56f665e..96f3a6566935176e8879e088cfd0fdf934bb9fe2 100644
--- a/src/lib-sieve/sieve-address.c
+++ b/src/lib-sieve/sieve-address.c
@@ -111,7 +111,7 @@ sieve_header_address_list_next_item(struct sieve_address_list *_addrlist,
 			if (trace) {
 				sieve_runtime_trace(
 					runenv, 0,
-					"invalid address value `%s'",
+					"invalid address value '%s'",
 					str_sanitize(str_c(value_item), 80));
 			}
 			if (unparsed_r != NULL)
@@ -122,7 +122,7 @@ sieve_header_address_list_next_item(struct sieve_address_list *_addrlist,
 			if (trace) {
 				sieve_runtime_trace(
 					runenv, 0,
-					"address value `%s'",
+					"address value '%s'",
 					str_sanitize(smtp_address_encode(addr_r),
 						     80));
 			}
@@ -148,7 +148,7 @@ sieve_header_address_list_next_item(struct sieve_address_list *_addrlist,
 		if (trace) {
 			sieve_runtime_trace(
 				runenv, 0,
-				"parsing address header value `%s'",
+				"parsing address header value '%s'",
 				str_sanitize(str_c(value_item), 80));
 		}
 
diff --git a/src/lib-sieve/sieve-binary-file.c b/src/lib-sieve/sieve-binary-file.c
index 30e13603701e0dcedeea7f19fafe97f5ae10dd1b..d0f7e6fb277f447950e12c497add531e1d2ee16d 100644
--- a/src/lib-sieve/sieve-binary-file.c
+++ b/src/lib-sieve/sieve-binary-file.c
@@ -824,7 +824,7 @@ static int _read_extensions(struct sieve_binary_block *sblock)
 
 				if (ext == NULL) {
 					e_error(sbin->event, "open: "
-						"binary requires unknown extension `%s'",
+						"binary requires unknown extension '%s'",
 						str_sanitize(str_c(extension), 128));
 					result = 0;
 				} else {
@@ -837,7 +837,7 @@ static int _read_extensions(struct sieve_binary_block *sblock)
 					} else if (!sieve_extension_version_is(ext, version)) {
 						e_debug(sbin->event, "open: "
 							"binary was compiled with different version "
-							"of the `%s' extension (compiled v%d, expected v%d;"
+							"of the '%s' extension (compiled v%d, expected v%d;"
 							"automatically fixed when re-compiled)",
 							sieve_extension_name(ext), version,
 							sieve_extension_version(ext));
diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c
index 274e142d4616142cf6e0c8eda86c25e356919935..e0bd6ee3159eeddf89755321d80338a88a6536be 100644
--- a/src/lib-sieve/sieve-interpreter.c
+++ b/src/lib-sieve/sieve-interpreter.c
@@ -225,7 +225,7 @@ _sieve_interpreter_create(struct sieve_binary *sbin,
 				if (ext->global &&
 				    (eenv->flags & SIEVE_EXECUTE_FLAG_NOGLOBAL) != 0) {
 					sieve_runtime_error(&interp->runenv, NULL,
-						"failed to enable extension `%s': "
+						"failed to enable extension '%s': "
 						"its use is restricted to global scripts",
 						sieve_extension_name(ext));
 					success = FALSE;
@@ -297,7 +297,7 @@ void sieve_interpreter_free(struct sieve_interpreter **_interp)
 			event_create_passthrough(interp->runenv.event)->
 			set_name("sieve_runtime_script_finished")->
 			add_str("error", "Aborted");
-		e_debug(e->event(), "Aborted running script `%s'",
+		e_debug(e->event(), "Aborted running script '%s'",
 			sieve_binary_source(interp->runenv.sbin));
 
 		interp->running = FALSE;
@@ -1001,7 +1001,7 @@ int sieve_interpreter_continue(struct sieve_interpreter *interp,
 			/* Not supposed to occur at runtime */
 			i_unreached();
 		}
-		e_debug(e->event(), "Finished running script `%s' "
+		e_debug(e->event(), "Finished running script '%s' "
 			"(status=%s, resource usage: %s)",
 			sieve_binary_source(interp->runenv.sbin),
 			sieve_execution_exitcode_to_str(ret),
@@ -1023,7 +1023,7 @@ int sieve_interpreter_start(struct sieve_interpreter *interp,
 	struct event_passthrough *e =
 		event_create_passthrough(interp->runenv.event)->
 		set_name("sieve_runtime_script_started");
-	e_debug(e->event(), "Started running script `%s'",
+	e_debug(e->event(), "Started running script '%s'",
 		sieve_binary_source(interp->runenv.sbin));
 
 	interp->running = TRUE;
diff --git a/src/lib-sieve/sieve-match.c b/src/lib-sieve/sieve-match.c
index cdb3b1600c2c852d1b1cff7282e0103528454b12..f67aaae405a87e37983de5231d891656a30d69c1 100644
--- a/src/lib-sieve/sieve-match.c
+++ b/src/lib-sieve/sieve-match.c
@@ -53,7 +53,7 @@ sieve_match_begin(const struct sieve_runtime_env *renv,
 	if (mctx->trace) {
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(
-			renv, 0, "starting `:%s' match with `%s' comparator:",
+			renv, 0, "starting ':%s' match with '%s' comparator:",
 			sieve_match_type_name(mcht),
 			sieve_comparator_name(cmp));
 	}
@@ -74,7 +74,7 @@ int sieve_match_value(struct sieve_match_context *mctx,
 	int match, ret;
 
 	if (mctx->trace) {
-		sieve_runtime_trace(renv, 0, "matching value `%s'",
+		sieve_runtime_trace(renv, 0, "matching value '%s'",
 				    str_sanitize(value, 80));
 	}
 
@@ -104,7 +104,7 @@ int sieve_match_value(struct sieve_match_context *mctx,
 				str_c(key_item), str_len(key_item));
 			if (mctx->trace) {
 				sieve_runtime_trace(
-					renv, 0, "with key `%s' => %d",
+					renv, 0, "with key '%s' => %d",
 					str_sanitize(str_c(key_item), 80),
 					match);
 			}
diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index baba1510a2036b36915dcfc481b5856f4e1871a7..995a7cf672d31e4c113be33a89c54d701e8dfcf7 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -534,7 +534,7 @@ sieve_message_header_list_next_item(struct sieve_header_list *_hdrlist,
 		if (_hdrlist->strlist.trace) {
 			sieve_runtime_trace
 				(renv, 0,
-				"extracting `%s' headers from message",
+				"extracting '%s' headers from message",
 				str_sanitize(str_c(hdr_item), 80));
 		}
 
@@ -551,7 +551,7 @@ sieve_message_header_list_next_item(struct sieve_header_list *_hdrlist,
 			_hdrlist->strlist.exec_status =
 				sieve_runtime_mail_error(
 					renv, mail,
-					"failed to read header field `%s'",
+					"failed to read header field '%s'",
 					str_c(hdr_item));
 			return -1;
 		}
@@ -1820,7 +1820,7 @@ sieve_mime_header_list_next_item(struct sieve_header_list *_hdrlist,
 			if (_hdrlist->strlist.trace) {
 				sieve_runtime_trace(
 					renv, 0,
-					"extracting `%s' headers from message part",
+					"extracting '%s' headers from message part",
 					str_sanitize(str_c(hdr_item), 80));
 			}
 
diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index c6df3730b6e88ff4952959f41360deabee84d91a..7e552cf3b1ac7fe55bbf225c420e05b75858158c 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -106,7 +106,7 @@ void sieve_script_init(struct sieve_script *script,
 		event_set_append_log_prefix(script->event, "script: ");
 	else {
 		event_set_append_log_prefix(
-			script->event, t_strdup_printf("script `%s': ", name));
+			script->event, t_strdup_printf("script '%s': ", name));
 	}
 
 	sieve_storage_ref(storage);
@@ -189,10 +189,10 @@ int sieve_script_open(struct sieve_script *script, enum sieve_error *error_r)
 	script->open = TRUE;
 
 	if (*script->name != '\0') {
-		e_debug(script->event, "Opened script `%s' from `%s'",
+		e_debug(script->event, "Opened script '%s' from '%s'",
 			script->name, script->location);
 	} else {
-		e_debug(script->event, "Opened nameless script from `%s'",
+		e_debug(script->event, "Opened nameless script from '%s'",
 			script->location);
 	}
 	return 0;
@@ -395,15 +395,15 @@ int sieve_script_binary_read_metadata(struct sieve_script *script,
 	/* storage class */
 	if (!sieve_binary_read_string(sblock, offset, &storage_class)) {
 		e_error(script->event,
-			"Binary `%s' has invalid metadata for script `%s': "
+			"Binary '%s' has invalid metadata for script '%s': "
 			"Invalid storage class",
 			sieve_binary_path(sbin), script->location);
 		return -1;
 	}
 	if (strcmp(str_c(storage_class), script->driver_name) != 0) {
 		e_debug(script->event,
-			"Binary `%s' reports unexpected driver name for script `%s' "
-			"(`%s' rather than `%s')",
+			"Binary '%s' reports unexpected driver name for script '%s' "
+			"('%s' rather than '%s')",
 			sieve_binary_path(sbin), script->location,
 			str_c(storage_class), script->driver_name);
 		return 0;
@@ -412,15 +412,15 @@ int sieve_script_binary_read_metadata(struct sieve_script *script,
 	/* version */
 	if (!sieve_binary_read_unsigned(sblock, offset, &version)) {
 		e_error(script->event,
-			"Binary `%s' has invalid metadata for script `%s': "
+			"Binary '%s' has invalid metadata for script '%s': "
 			"Invalid version",
 			sieve_binary_path(sbin), script->location);
 		return -1;
 	}
 	if (script->storage->version != version) {
 		e_debug(script->event,
-			"Binary `%s' was compiled with "
-			"a different version of the `%s' script storage class "
+			"Binary '%s' was compiled with "
+			"a different version of the '%s' script storage class "
 			"(compiled v%d, expected v%d; "
 				"automatically fixed when re-compiled)",
 			sieve_binary_path(sbin), script->driver_name,
@@ -431,7 +431,7 @@ int sieve_script_binary_read_metadata(struct sieve_script *script,
 	/* location */
 	if (!sieve_binary_read_string(sblock, offset, &location)) {
 		e_error(script->event,
-			"Binary `%s' has invalid metadata for script `%s': "
+			"Binary '%s' has invalid metadata for script '%s': "
 			"Invalid location",
 			sieve_binary_path(sbin), script->location);
 		return -1;
@@ -439,8 +439,8 @@ int sieve_script_binary_read_metadata(struct sieve_script *script,
 	i_assert(script->location != NULL);
 	if (strcmp(str_c(location), script->location) != 0) {
 		e_debug(script->event,
-			"Binary `%s' reports different location "
-			"for script `%s' (binary points to `%s')",
+			"Binary '%s' reports different location "
+			"for script '%s' (binary points to '%s')",
 			sieve_binary_path(sbin), script->location,
 			str_c(location));
 		return 0;
@@ -595,7 +595,7 @@ sieve_script_copy_from_default(struct sieve_script *script, const char *newname)
 
 		if (ret < 0) {
 			e_error(storage->event,
-				"Failed to implicitly activate script `%s' "
+				"Failed to implicitly activate script '%s' "
 				"after rename",	newname);
 			sieve_storage_copy_error(storage->default_for, storage);
 		}
@@ -617,7 +617,7 @@ int sieve_script_rename(struct sieve_script *script, const char *newname)
 	if (!sieve_script_name_is_valid(newname)) {
 		sieve_script_set_error(script,
 			SIEVE_ERROR_BAD_PARAMS,
-			"Invalid new Sieve script name `%s'.",
+			"Invalid new Sieve script name '%s'.",
 			str_sanitize(newname, 80));
 		return -1;
 	}
@@ -653,7 +653,7 @@ int sieve_script_rename(struct sieve_script *script, const char *newname)
 		set_name("sieve_script_renamed");
 
 	if (ret >= 0) {
-		e_debug(event->event(), "Script renamed to `%s'", newname);
+		e_debug(event->event(), "Script renamed to '%s'", newname);
 	} else {
 		event = event->add_str("error", storage->error);
 
diff --git a/src/lib-sieve/sieve-settings.c b/src/lib-sieve/sieve-settings.c
index 47f70da4c47c73d151aeb34f9c27679eedd3a566..82a6ce09f72fa92dbf153687b8b6ed2a770cb690 100644
--- a/src/lib-sieve/sieve-settings.c
+++ b/src/lib-sieve/sieve-settings.c
@@ -262,7 +262,7 @@ void sieve_settings_load(struct sieve_instance *svinst)
 			&address, &error) < 0) {
 			e_warning(svinst->event,
 				  "Invalid address value for setting "
-				  "`sieve_user_email': %s", error);
+				  "'sieve_user_email': %s", error);
 		} else {
 			svinst->user_email = address;
 		}
diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 096f457e7b2fb902aece625d6b3f3a5aeb5ac127..52eceb44affa136607cf312168a714a77229f7a4 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -157,11 +157,11 @@ sieve_storage_driver_parse(struct sieve_instance *svinst, const char **data,
 		storage_class = sieve_storage_find_class(svinst, driver);
 		if (storage_class == NULL) {
 			e_error(svinst->event,
-				"Unknown storage driver module `%s'",
+				"Unknown storage driver module '%s'",
 				driver);
 		} else if (storage_class->v.alloc == NULL) {
 			e_error(svinst->event,
-				"Support not compiled in for storage driver `%s'",
+				"Support not compiled in for storage driver '%s'",
 				driver);
 			storage_class = NULL;
 		}
@@ -208,7 +208,7 @@ sieve_storage_data_parse(struct sieve_storage *storage, const char *data,
 					if (!sieve_script_name_is_valid(value)) {
 						e_error(storage->event,
 							"Failed to parse storage location: "
-							"Invalid script name `%s'.",
+							"Invalid script name '%s'.",
 							str_sanitize(value, 80));
 						return -1;
 					}
@@ -509,7 +509,7 @@ sieve_storage_create_main(struct sieve_instance *svinst, struct mail_user *user,
 		if (set_default_name != NULL && *set_default_name != '\0' &&
 		    !sieve_script_name_is_valid(set_default_name)) {
 			e_error(storage->event,
-				"Invalid script name `%s' for `sieve_default_name' setting.",
+				"Invalid script name '%s' for 'sieve_default_name' setting.",
 				str_sanitize(set_default_name, 80));
 			set_default_name = NULL;
 		}
@@ -519,7 +519,7 @@ sieve_storage_create_main(struct sieve_instance *svinst, struct mail_user *user,
 		if (storage->default_location != NULL &&
 			storage->default_name != NULL) {
 			e_debug(storage->event,
-				"Default script at `%s' is visible by name `%s'",
+				"Default script at '%s' is visible by name '%s'",
 				storage->default_location, storage->default_name);
 		}
 	} else if (*error_r != SIEVE_ERROR_TEMP_FAILURE &&
@@ -533,7 +533,7 @@ sieve_storage_create_main(struct sieve_instance *svinst, struct mail_user *user,
 				"No default script location configured");
 		} else {
 			e_debug(svinst->event, "storage: "
-				"Trying default script location `%s'",
+				"Trying default script location '%s'",
 				set_default);
 
 			storage = sieve_storage_create(svinst, set_default, 0,
@@ -542,18 +542,18 @@ sieve_storage_create_main(struct sieve_instance *svinst, struct mail_user *user,
 				switch (*error_r) {
 				case SIEVE_ERROR_NOT_FOUND:
 					e_debug(svinst->event, "storage: "
-						"Default script location `%s' not found",
+						"Default script location '%s' not found",
 						set_default);
 					break;
 				case SIEVE_ERROR_TEMP_FAILURE:
 					e_error(svinst->event, "storage: "
-						"Failed to access default script location `%s' "
+						"Failed to access default script location '%s' "
 						"(temporary failure)",
 						set_default);
 					break;
 				default:
 					e_error(svinst->event, "storage: "
-						"Failed to access default script location `%s'",
+						"Failed to access default script location '%s'",
 						set_default);
 					break;
 				}
@@ -686,7 +686,7 @@ sieve_storage_get_script_direct(struct sieve_storage *storage, const char *name,
 	if (name != NULL && !sieve_script_name_is_valid(name)) {
 		sieve_storage_set_error(storage,
 			SIEVE_ERROR_BAD_PARAMS,
-			"Invalid script name `%s'.",
+			"Invalid script name '%s'.",
 			str_sanitize(name, 80));
 		if (error_r != NULL)
 			*error_r = storage->error_code;
@@ -1050,7 +1050,7 @@ sieve_storage_save_create_event(struct sieve_storage *storage,
 		event_set_append_log_prefix(event, "save: ");
 	} else {
 		event_set_append_log_prefix(
-			event, t_strdup_printf("script `%s': save: ",
+			event, t_strdup_printf("script '%s': save: ",
 					       scriptname));
 	}
 
@@ -1087,7 +1087,7 @@ sieve_storage_save_init(struct sieve_storage *storage, const char *scriptname,
 		if (!sieve_script_name_is_valid(scriptname)) {
 			sieve_storage_set_error(storage,
 				SIEVE_ERROR_BAD_PARAMS,
-				"Invalid Sieve script name `%s'.",
+				"Invalid Sieve script name '%s'.",
 				str_sanitize(scriptname, 80));
 			return NULL;
 		}
@@ -1260,7 +1260,7 @@ int sieve_storage_save_commit(struct sieve_storage_save_context **_sctx)
 
 		if (ret < 0) {
 			e_error(sctx->event,
-				"Failed to implicitly activate script `%s' "
+				"Failed to implicitly activate script '%s' "
 				"while replacing the default active script",
 				scriptname);
 		}
diff --git a/src/lib-sieve/sieve-validator.c b/src/lib-sieve/sieve-validator.c
index c174479eaa47311eaa07ed0b001fedce903efe83..63d5103bab2a89a04c3f6a7fb4536160edc8bac1 100644
--- a/src/lib-sieve/sieve-validator.c
+++ b/src/lib-sieve/sieve-validator.c
@@ -615,7 +615,7 @@ bool sieve_validator_extension_load(struct sieve_validator *valdtr,
 					sieve_command_type_name(cmd)));
 		sieve_argument_validate_error(
 			valdtr, ext_arg,
-			"%sfailed to load Sieve capability `%s': "
+			"%sfailed to load Sieve capability '%s': "
 			"its use is restricted to global scripts",
 			cmd_prefix, sieve_extension_name(ext));
 		return FALSE;
@@ -641,7 +641,7 @@ bool sieve_validator_extension_load(struct sieve_validator *valdtr,
 					sieve_command_type_name(cmd)));
 		sieve_argument_validate_error(
 			valdtr, ext_arg,
-			"%sfailed to load Sieve capability `%s'",
+			"%sfailed to load Sieve capability '%s'",
 			cmd_prefix, sieve_extension_name(ext));
 		return FALSE;
 	}
@@ -690,7 +690,7 @@ sieve_validator_extension_load_by_name(struct sieve_validator *valdtr,
 		if (core_test || core_command) {
 			sieve_argument_validate_error(
 				valdtr, ext_arg,
-				"%s %s: `%s' is not known as a Sieve capability, "
+				"%s %s: '%s' is not known as a Sieve capability, "
 				"but it is known as a Sieve %s that is always available",
 				sieve_command_identifier(cmd),
 				sieve_command_type_name(cmd),
@@ -699,7 +699,7 @@ sieve_validator_extension_load_by_name(struct sieve_validator *valdtr,
 		} else {
 			sieve_argument_validate_error(
 				valdtr, ext_arg,
-				"%s %s: unknown Sieve capability `%s'",
+				"%s %s: unknown Sieve capability '%s'",
 				sieve_command_identifier(cmd),
 				sieve_command_type_name(cmd),
 				str_sanitize(ext_name, 128));
diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index 957925eb76e2b532082b2563c7c47170e91f3090..9c09c60fd4690c29110e062158ff84e0a721c503 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -328,7 +328,7 @@ sieve_compile(struct sieve_instance *svinst, const char *script_location,
 	sbin = sieve_compile_script(script, ehandler, flags, error_r);
 	if (sbin != NULL) {
 		e_debug(svinst->event,
-			"Script `%s' from %s successfully compiled",
+			"Script '%s' from %s successfully compiled",
 			sieve_script_name(script),
 			sieve_script_location(script));
 	}
@@ -420,7 +420,7 @@ sieve_open_script_real(struct sieve_script *script,
 			return NULL;
 
 		e_debug(svinst->event,
-			"Script `%s' from %s successfully compiled",
+			"Script '%s' from %s successfully compiled",
 			sieve_script_name(script),
 			sieve_script_location(script));
 
@@ -810,7 +810,7 @@ bool sieve_multiscript_run(struct sieve_multiscript *mscript,
 		return FALSE;
 	}
 
-	e_debug(mscript->event, "Run script `%s'", sieve_binary_source(sbin));
+	e_debug(mscript->event, "Run script '%s'", sieve_binary_source(sbin));
 
 	/* Run the script */
 	mscript->exec_env.flags = flags;
@@ -858,7 +858,7 @@ void sieve_multiscript_run_discard(struct sieve_multiscript *mscript,
 	}
 	i_assert(!mscript->discard_handled);
 
-	e_debug(mscript->event, "Run discard script `%s'",
+	e_debug(mscript->event, "Run discard script '%s'",
 		sieve_binary_source(sbin));
 
 	sieve_result_set_keep_action(mscript->result, NULL, &act_store);
diff --git a/src/lib-sieve/storage/dict/sieve-dict-script.c b/src/lib-sieve/storage/dict/sieve-dict-script.c
index 2aae20cd3cb317845c2a84dc9caa7da9658d3f5d..ea20e782d3b3b3e7d8ab8f5e2f821ddcf21c644b 100644
--- a/src/lib-sieve/storage/dict/sieve-dict-script.c
+++ b/src/lib-sieve/storage/dict/sieve-dict-script.c
@@ -90,9 +90,9 @@ sieve_dict_script_open(struct sieve_script *script, enum sieve_error *error_r)
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 		} else {
 			e_debug(script->event,
-				"Script `%s' not found at path %s", name, path);
+				"Script '%s' not found at path %s", name, path);
 			sieve_script_set_error(script, SIEVE_ERROR_NOT_FOUND,
-					       "Sieve script `%s' not found",
+					       "Sieve script '%s' not found",
 					       name);
 			*error_r = SIEVE_ERROR_NOT_FOUND;
 		}
@@ -128,12 +128,12 @@ sieve_dict_script_get_stream(struct sieve_script *script,
 	if (ret <= 0) {
 		if (ret < 0) {
 			sieve_script_set_critical(script,
-				"Failed to lookup data with id `%s' "
-				"for script `%s' from path %s: %s",
+				"Failed to lookup data with id '%s' "
+				"for script '%s' from path %s: %s",
 				dscript->data_id, name, path, error);
 		} else {
 			sieve_script_set_critical(script,
-				"Data with id `%s' for script `%s' not found at path %s",
+				"Data with id '%s' for script '%s' not found at path %s",
 				dscript->data_id, name, path);
 		}
 		*error_r = SIEVE_ERROR_TEMP_FAILURE;
@@ -160,15 +160,15 @@ sieve_dict_script_binary_read_metadata(struct sieve_script *script,
 
 	if (!sieve_binary_read_string(sblock, offset, &data_id)) {
 		e_error(script->event,
-			"Binary `%s' has invalid metadata for script `%s'",
+			"Binary '%s' has invalid metadata for script '%s'",
 			sieve_binary_path(sbin), sieve_script_location(script));
 		return -1;
 	}
 	i_assert(dscript->data_id != NULL);
 	if (strcmp(str_c(data_id), dscript->data_id) != 0) {
 		e_debug(script->event,
-			"Binary `%s' reports different data ID for script `%s' "
-			"(`%s' rather than `%s')",
+			"Binary '%s' reports different data ID for script '%s' "
+			"('%s' rather than '%s')",
 			sieve_binary_path(sbin), sieve_script_location(script),
 			str_c(data_id), dscript->data_id);
 		return 0;
diff --git a/src/lib-sieve/storage/dict/sieve-dict-storage.c b/src/lib-sieve/storage/dict/sieve-dict-storage.c
index 80b11da6452430322e92679bb05a1a113d7d60b1..4ac82cfd17e9e12d46eb6369bebe21345a672b28 100644
--- a/src/lib-sieve/storage/dict/sieve-dict-storage.c
+++ b/src/lib-sieve/storage/dict/sieve-dict-storage.c
@@ -44,7 +44,7 @@ sieve_dict_storage_init(struct sieve_storage *storage,
 				username = option+5;
 			} else {
 				sieve_storage_set_critical(
-					storage, "Invalid option `%s'", option);
+					storage, "Invalid option '%s'", option);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				return -1;
 			}
@@ -100,7 +100,7 @@ sieve_dict_storage_get_dict(struct sieve_dict_storage *dstorage,
 				       &dstorage->dict, &error);
 		if (ret < 0) {
 			sieve_storage_set_critical(storage,
-				"Failed to initialize dict with data `%s' for user `%s': %s",
+				"Failed to initialize dict with data '%s' for user '%s': %s",
 				dstorage->uri, dstorage->username, error);
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 			return -1;
diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c
index fdb16746fae21cafb4bb6ed6927ae26c0978e381..a427b254ef13a40710e779c579722946ad99f5a2 100644
--- a/src/lib-sieve/storage/file/sieve-file-script.c
+++ b/src/lib-sieve/storage/file/sieve-file-script.c
@@ -67,9 +67,9 @@ sieve_file_script_handle_error(struct sieve_file_script *fscript,
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 			break;
 		}
-		e_debug(script->event, "File `%s' not found", abspath);
+		e_debug(script->event, "File '%s' not found", abspath);
 		sieve_script_set_error(script, SIEVE_ERROR_NOT_FOUND,
-				       "Sieve script `%s' not found", name);
+				       "Sieve script '%s' not found", name);
 		*error_r = SIEVE_ERROR_NOT_FOUND;
 		break;
 	case EACCES:
@@ -120,7 +120,7 @@ sieve_file_script_init_from_filename(struct sieve_file_storage *fstorage,
 		if (strcmp(filename, fstorage->active_fname) == 0) {
 			sieve_storage_set_error(
 				storage, SIEVE_ERROR_NOT_FOUND,
-				"Script `%s' does not exist.", scriptname);
+				"Script '%s' does not exist.", scriptname);
 			return NULL;
 		}
 	}
@@ -455,7 +455,7 @@ sieve_file_script_get_stream(struct sieve_script *script,
 	/* Re-check the file type just to be sure */
 	} else if (!S_ISREG(st.st_mode)) {
 		sieve_script_set_critical(
-			script,	"Sieve script file `%s' is not a regular file",
+			script,	"Sieve script file '%s' is not a regular file",
 			fscript->path);
 		*error_r = SIEVE_ERROR_TEMP_FAILURE;
 		result = NULL;
@@ -507,8 +507,8 @@ sieve_file_script_binary_read_metadata(struct sieve_script *script,
 	     ST_MTIME_NSEC(*bstat) <= ST_MTIME_NSEC(*sstat))) {
 		if (svinst->debug) {
 			e_debug(script->event,
-				"Sieve binary `%s' is not newer "
-				"than the Sieve script `%s' (%s.%lu <= %s.%lu)",
+				"Sieve binary '%s' is not newer "
+				"than the Sieve script '%s' (%s.%lu <= %s.%lu)",
 				sieve_binary_path(sbin),
 				sieve_script_location(script),
 				t_strflocaltime("%Y-%m-%d %H:%M:%S",
@@ -600,7 +600,7 @@ static int sieve_file_storage_script_delete(struct sieve_script *script)
 		} else {
 			sieve_script_set_critical(
 				script,
-				"Performing unlink() failed on sieve file `%s': %m",
+				"Performing unlink() failed on sieve file '%s': %m",
 				fscript->path);
 		}
 	}
diff --git a/src/lib-sieve/storage/file/sieve-file-storage-active.c b/src/lib-sieve/storage/file/sieve-file-storage-active.c
index 7e8f6ab9d8630ea7f8c89a6c57fb5ac0c38f5f3e..4509e427e6116ff64a70ea442c0f6dc10fc0e7fd 100644
--- a/src/lib-sieve/storage/file/sieve-file-storage-active.c
+++ b/src/lib-sieve/storage/file/sieve-file-storage-active.c
@@ -262,7 +262,7 @@ sieve_file_storage_active_script_open(struct sieve_storage *storage)
 			if (storage->error_code != SIEVE_ERROR_NOT_FOUND) {
 				sieve_storage_set_critical(
 					storage,
-					"Failed to open active path `%s' as regular file: %s",
+					"Failed to open active path '%s' as regular file: %s",
 					fstorage->active_path, storage->error);
 			}
 			return NULL;
diff --git a/src/lib-sieve/storage/file/sieve-file-storage-save.c b/src/lib-sieve/storage/file/sieve-file-storage-save.c
index ded73f487d94d60f438db18e1f40ef3e763cee7a..94bbd260c69902769eba1b0a1223b5e27d8f7241 100644
--- a/src/lib-sieve/storage/file/sieve-file-storage-save.c
+++ b/src/lib-sieve/storage/file/sieve-file-storage-save.c
@@ -238,7 +238,7 @@ int sieve_file_storage_save_init(struct sieve_storage_save_context *sctx,
 					    scriptname)) {
 				sieve_storage_set_error(
 					storage, SIEVE_ERROR_BAD_PARAMS,
-					"Script name `%s' is reserved for internal use.",
+					"Script name '%s' is reserved for internal use.",
 					scriptname);
 				return -1;
 			}
@@ -367,14 +367,14 @@ sieve_file_storage_save_get_tempscript(struct sieve_storage_save_context *sctx)
 		if (error == SIEVE_ERROR_NOT_FOUND) {
 			sieve_storage_set_critical(
 				sctx->storage, "save: "
-				"Temporary script file `%s' got lost, "
+				"Temporary script file '%s' got lost, "
 				"which should not happen "
 				"(possibly deleted externally).",
 				fsctx->tmp_path);
 		} else {
 			sieve_storage_set_critical(
 				sctx->storage, "save: "
-				"Failed to open temporary script file `%s'",
+				"Failed to open temporary script file '%s'",
 				fsctx->tmp_path);
 		}
 		return NULL;
diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c
index b09cc54a59daf3a74ac2e23433852379d8610428..3f470c10cce369f82687d972d77164f71f8df79a 100644
--- a/src/lib-sieve/storage/file/sieve-file-storage.c
+++ b/src/lib-sieve/storage/file/sieve-file-storage.c
@@ -73,7 +73,7 @@ sieve_file_storage_stat(struct sieve_file_storage *fstorage, const char *path,
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 			break;
 		}
-		e_debug(storage->event, "Storage path `%s' not found", abspath);
+		e_debug(storage->event, "Storage path '%s' not found", abspath);
 		sieve_storage_set_internal_error(storage); // should be overriden
 		*error_r = SIEVE_ERROR_NOT_FOUND;
 		break;
@@ -257,7 +257,7 @@ sieve_file_storage_get_full_path(struct sieve_file_storage *fstorage,
 		} else {
 			sieve_storage_set_critical(
 				storage,
-				"Sieve storage path `%s' is relative to home directory, "
+				"Sieve storage path '%s' is relative to home directory, "
 				"but home directory is not available.", path);
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 			return -1;
@@ -292,7 +292,7 @@ sieve_file_storage_get_full_active_path(struct sieve_file_storage *fstorage,
 		} else {
 			sieve_storage_set_critical(
 				storage,
-				"Sieve storage active script path `%s' is relative to home directory, "
+				"Sieve storage active script path '%s' is relative to home directory, "
 				"but home directory is not available.", path);
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 			return -1;
@@ -522,7 +522,7 @@ sieve_file_storage_init(struct sieve_storage *storage,
 				active_path = value;
 			} else {
 				sieve_storage_set_critical(
-					storage, "Invalid option `%s'", option);
+					storage, "Invalid option '%s'", option);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				return -1;
 			}
@@ -560,8 +560,8 @@ sieve_file_storage_init(struct sieve_storage *storage,
 				if (!S_ISREG(fstorage->lnk_st.st_mode))
 					return -1;
 				e_debug(storage->event,
-					"Sieve storage path `%s' not found, "
-					"but the active script `%s' is a regular file, "
+					"Sieve storage path '%s' not found, "
+					"but the active script '%s' is a regular file, "
 					"so this is used for backwards compatibility.",
 					storage_path, active_path);
 				storage_path = NULL;
@@ -572,15 +572,15 @@ sieve_file_storage_init(struct sieve_storage *storage,
 			if (!S_ISDIR(fstorage->st.st_mode)) {
 				if ((storage->flags & SIEVE_STORAGE_FLAG_READWRITE) != 0) {
 					sieve_storage_set_critical(storage,
-						"Sieve storage path `%s' is not a directory, "
+						"Sieve storage path '%s' is not a directory, "
 						"but it is to be opened for write access", storage_path);
 					*error_r = SIEVE_ERROR_TEMP_FAILURE;
 					return -1;
 				}
 				if (active_path != NULL && *active_path != '\0') {
 					e_warning(storage->event,
-						  "Explicitly specified active script path `%s' is ignored; "
-						  "storage path `%s' is not a directory",
+						  "Explicitly specified active script path '%s' is ignored; "
+						  "storage path '%s' is not a directory",
 						  active_path, storage_path);
 				}
 				active_path = storage_path;
@@ -629,7 +629,7 @@ sieve_file_storage_autodetect(struct sieve_file_storage *fstorage,
 		if (access("/sieve", mode) == 0) {
 			*storage_path_r = "/sieve";
 			e_debug(storage->event,
-				"Directory `/sieve' exists, assuming chroot");
+				"Directory '/sieve' exists, assuming chroot");
 		} else {
 			*storage_path_r = NULL;
 		}
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-db.c b/src/lib-sieve/storage/ldap/sieve-ldap-db.c
index 9abbb056446da17ba16441e391a1a4a1efa9b31e..99c3a45cdb411ba2300040b0fa59f29b49c2212f 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-db.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-db.c
@@ -1103,7 +1103,7 @@ sieve_ldap_db_get_script_modattr(struct ldap_connection *conn,
 
 			if (vals[1] != NULL) {
 				e_warning(storage->event, "db: "
-					  "Search returned more than one Sieve modified attribute `%s'; "
+					  "Search returned more than one Sieve modified attribute '%s'; "
 					  "using only the first one.",
 					  set->sieve_ldap_mod_attr);
 			}
@@ -1143,7 +1143,7 @@ sieve_ldap_db_get_script(struct ldap_connection *conn, LDAPMessage *entry,
 
 			if (vals[1] != NULL) {
 				e_warning(storage->event, "db: "
-					  "Search returned more than one Sieve script attribute `%s'; "
+					  "Search returned more than one Sieve script attribute '%s'; "
 					  "using only the first one.",
 					  set->sieve_ldap_script_attr);
 			}
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-script.c b/src/lib-sieve/storage/ldap/sieve-ldap-script.c
index 5916b2ed7118e37f5994c3c7e47f6822dbd7ff76..1df215410630636b1f2e804d8c6bf3c45f3b9a9b 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-script.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-script.c
@@ -131,8 +131,8 @@ sieve_ldap_script_binary_read_metadata(struct sieve_script *script,
 	if (bmtime <= lstorage->set_mtime) {
 		if (svinst->debug) {
 			e_debug(script->event,
-				"Sieve binary `%s' is not newer "
-				"than the LDAP configuration `%s' (%s <= %s)",
+				"Sieve binary '%s' is not newer "
+				"than the LDAP configuration '%s' (%s <= %s)",
 				sieve_binary_path(sbin), lstorage->config_file,
 				t_strflocaltime("%Y-%m-%d %H:%M:%S", bmtime),
 				t_strflocaltime("%Y-%m-%d %H:%M:%S",
@@ -148,8 +148,8 @@ sieve_ldap_script_binary_read_metadata(struct sieve_script *script,
 	/* If modattr not found, recompile always */
 	if (lscript->modattr == NULL || *lscript->modattr == '\0') {
 		e_error(script->event,
-			"LDAP entry for script `%s' "
-			"has no modified attribute `%s'",
+			"LDAP entry for script '%s' "
+			"has no modified attribute '%s'",
 			sieve_script_location(script),
 			lstorage->set.sieve_ldap_mod_attr);
 		return 0;
@@ -158,7 +158,7 @@ sieve_ldap_script_binary_read_metadata(struct sieve_script *script,
 	/* Compare DN in binary and from search result */
 	if (!sieve_binary_read_string(sblock, offset, &dn)) {
 		e_error(script->event,
-			"Binary `%s' has invalid metadata for script `%s': "
+			"Binary '%s' has invalid metadata for script '%s': "
 			"Invalid DN",
 			sieve_binary_path(sbin), sieve_script_location(script));
 		return -1;
@@ -166,8 +166,8 @@ sieve_ldap_script_binary_read_metadata(struct sieve_script *script,
 	i_assert(lscript->dn != NULL);
 	if (strcmp(str_c(dn), lscript->dn) != 0) {
 		e_debug(script->event,
-			"Binary `%s' reports different LDAP DN for script `%s' "
-			"(`%s' rather than `%s')",
+			"Binary '%s' reports different LDAP DN for script '%s' "
+			"('%s' rather than '%s')",
 			sieve_binary_path(sbin), sieve_script_location(script),
 			str_c(dn), lscript->dn);
 		return 0;
@@ -176,15 +176,15 @@ sieve_ldap_script_binary_read_metadata(struct sieve_script *script,
 	/* Compare modattr in binary and from search result */
 	if (!sieve_binary_read_string(sblock, offset, &modattr)) {
 		e_error(script->event,
-			"Binary `%s' has invalid metadata for script `%s': "
+			"Binary '%s' has invalid metadata for script '%s': "
 			"Invalid modified attribute",
 			sieve_binary_path(sbin), sieve_script_location(script));
 		return -1;
 	}
 	if (strcmp(str_c(modattr), lscript->modattr) != 0) {
 		e_debug(script->event,
-			"Binary `%s' reports different modified attribute content "
-			"for script `%s' (`%s' rather than `%s')",
+			"Binary '%s' reports different modified attribute content "
+			"for script '%s' ('%s' rather than '%s')",
 			sieve_binary_path(sbin), sieve_script_location(script),
 			str_c(modattr), lscript->modattr);
 		return 0;
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-storage-settings.c b/src/lib-sieve/storage/ldap/sieve-ldap-storage-settings.c
index 0e0e7c41bc2b83b5ec281421f11ce048abaa2b41..addec4357aaa8f43d61efa2f3a10c069a8eebe2e 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-storage-settings.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-storage-settings.c
@@ -107,21 +107,21 @@ int sieve_ldap_storage_read_settings(struct sieve_ldap_storage *lstorage,
 	if (!settings_read_nosection(config_path, parse_setting, lstorage,
 				     &error)) {
 		sieve_storage_set_critical(
-			storage, "Failed to read LDAP storage config `%s': %s",
+			storage, "Failed to read LDAP storage config '%s': %s",
 			config_path, error);
 		return -1;
 	}
 
 	if (lstorage->set.base == NULL) {
 		sieve_storage_set_critical(
-			storage, "Invalid LDAP storage config `%s': "
+			storage, "Invalid LDAP storage config '%s': "
 			"No search base given", config_path);
 		return -1;
 	}
 
 	if (lstorage->set.uris == NULL && lstorage->set.hosts == NULL) {
 		sieve_storage_set_critical(
-			storage, "Invalid LDAP storage config `%s': "
+			storage, "Invalid LDAP storage config '%s': "
 			"No uris or hosts set", config_path);
 		return -1;
 	}
@@ -130,7 +130,7 @@ int sieve_ldap_storage_read_settings(struct sieve_ldap_storage *lstorage,
 		str = getenv("LDAPRC");
 		if (str != NULL && strcmp(str, lstorage->set.ldaprc_path) != 0) {
 			sieve_storage_set_critical(
-				storage, "Invalid LDAP storage config `%s': "
+				storage, "Invalid LDAP storage config '%s': "
 				"Multiple different ldaprc_path settings not allowed "
 				"(%s and %s)", config_path, str,
 				lstorage->set.ldaprc_path);
@@ -142,16 +142,16 @@ int sieve_ldap_storage_read_settings(struct sieve_ldap_storage *lstorage,
 	if (ldap_deref_from_str(lstorage->set.deref,
 				&lstorage->set.ldap_deref) < 0) {
 		sieve_storage_set_critical(
-			storage, "Invalid LDAP storage config `%s': "
-			"Invalid deref option `%s'",
+			storage, "Invalid LDAP storage config '%s': "
+			"Invalid deref option '%s'",
 			config_path, lstorage->set.deref);;
 	}
 
 	if (ldap_scope_from_str(lstorage->set.scope,
 				&lstorage->set.ldap_scope) < 0) {
 		sieve_storage_set_critical(
-			storage, "Invalid LDAP storage config `%s': "
-			"Invalid scope option `%s'",
+			storage, "Invalid LDAP storage config '%s': "
+			"Invalid scope option '%s'",
 			config_path, lstorage->set.scope);;
 	}
 
@@ -161,8 +161,8 @@ int sieve_ldap_storage_read_settings(struct sieve_ldap_storage *lstorage,
 		lstorage->set.tls_require_cert,
 		&lstorage->set.ldap_tls_require_cert) < 0) {
 		sieve_storage_set_critical(
-			storage, "Invalid LDAP storage config `%s': "
-			"Invalid tls_require_cert option `%s'",
+			storage, "Invalid LDAP storage config '%s': "
+			"Invalid tls_require_cert option '%s'",
 			config_path, lstorage->set.tls_require_cert);
 	}
 #endif
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-storage.c b/src/lib-sieve/storage/ldap/sieve-ldap-storage.c
index 3387113c5d9e7d6a9158702c0aff9e9cc87d3668..6da5fe9b10b4715ffe5a1e84aa85dca8288c09f8 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-storage.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-storage.c
@@ -57,7 +57,7 @@ sieve_ldap_storage_init(struct sieve_storage *storage,
 				username = value;
 			} else {
 				sieve_storage_set_critical(
-					storage, "Invalid option `%s'", option);
+					storage, "Invalid option '%s'", option);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				return -1;
 			}
diff --git a/src/lib-sieve/tst-exists.c b/src/lib-sieve/tst-exists.c
index 063799f7404a6e70575ceb085ca63ad875575111..076556220c197de54006e77df561052fc1ea4cb0 100644
--- a/src/lib-sieve/tst-exists.c
+++ b/src/lib-sieve/tst-exists.c
@@ -168,7 +168,7 @@ tst_exists_operation_execute(const struct sieve_runtime_env *renv,
 
 		sieve_runtime_trace(
 			renv, SIEVE_TRLVL_MATCHING,
-			"header `%s' %s", str_sanitize(str_c(hdr_item), 80),
+			"header '%s' %s", str_sanitize(str_c(hdr_item), 80),
 			(matched ? "exists" : "is missing"));
 	}
 
diff --git a/src/lib-sieve/util/edit-mail.c b/src/lib-sieve/util/edit-mail.c
index 8f61e0164648d53e0ce31d3b72f4515bcbed9e75..eae775a70ce76f1473c667d4d5350d2be9618790 100644
--- a/src/lib-sieve/util/edit-mail.c
+++ b/src/lib-sieve/util/edit-mail.c
@@ -771,7 +771,7 @@ static int edit_mail_headers_parse(struct edit_mail *edmail)
 			/* Skip bad headers */
 			if (hdr->name_len == 0)
 				continue;
-			/* We deny the existence of any `Content-Length:'
+			/* We deny the existence of any 'Content-Length:'
 			   header. This header is non-standard and it can wreak
 			   havok when the message is modified.
 			 */
diff --git a/src/managesieve-login/managesieve-proxy.c b/src/managesieve-login/managesieve-proxy.c
index fc322067231bf879fad5a2553e02f9a7d929f165..4f706e224bb435612cdfbcfa06be54b3d2e65b2c 100644
--- a/src/managesieve-login/managesieve-proxy.c
+++ b/src/managesieve-login/managesieve-proxy.c
@@ -205,7 +205,7 @@ proxy_input_auth_challenge(struct managesieve_client *client, const char *line,
 		/* Do not accept faulty server */
 		const char *reason = t_strdup_printf(
 			"Protocol parse error(%d) int SASL challenge line: %s "
-			"(line=`%s')", ret, error_str, line);
+			"(line='%s')", ret, error_str, line);
 		login_proxy_failed(client->common.login_proxy,
 			login_proxy_get_event(client->common.login_proxy),
 			LOGIN_PROXY_FAILURE_TYPE_PROTOCOL, reason);
@@ -392,7 +392,7 @@ proxy_input_capability(struct managesieve_client *client, const char *line,
 		/* Do not accept faulty server */
 		const char *reason = t_strdup_printf(
 			"Protocol parse error(%d) in capability/greeting line: %s "
-			"(line=`%s')", ret, error_str, line);
+			"(line='%s')", ret, error_str, line);
 		login_proxy_failed(client->common.login_proxy,
 			login_proxy_get_event(client->common.login_proxy),
 			LOGIN_PROXY_FAILURE_TYPE_PROTOCOL, reason);
diff --git a/src/managesieve/cmd-deletescript.c b/src/managesieve/cmd-deletescript.c
index a8be5c93b9776ce2b6060213c14e89b8cf54b886..d7a8ef094545faa3bbcb54d5f13794f91a4bec2f 100644
--- a/src/managesieve/cmd-deletescript.c
+++ b/src/managesieve/cmd-deletescript.c
@@ -26,14 +26,14 @@ bool cmd_deletescript(struct client_command_context *cmd)
 	script = sieve_storage_open_script(storage, scriptname, NULL);
 	if (script == NULL || sieve_script_delete(script, FALSE) < 0) {
 		client_command_storage_error(
-			cmd, "Failed to delete script `%s'", scriptname);
+			cmd, "Failed to delete script '%s'", scriptname);
 		sieve_script_unref(&script);
 		return TRUE;
 	}
 
 	struct event_passthrough *e =
 		client_command_create_finish_event(cmd);
-	e_debug(e->event(), "Deleted script `%s'", scriptname);
+	e_debug(e->event(), "Deleted script '%s'", scriptname);
 
 	client->deleted_count++;
 	client_send_ok(client, "Deletescript completed.");
diff --git a/src/managesieve/cmd-getscript.c b/src/managesieve/cmd-getscript.c
index a0d18211446031b7580ae048c078b1c3792a2aa8..17f1093904e456f55138771b804c2441e0323df7 100644
--- a/src/managesieve/cmd-getscript.c
+++ b/src/managesieve/cmd-getscript.c
@@ -40,7 +40,7 @@ static bool cmd_getscript_finish(struct cmd_getscript_context *ctx)
 		}
 
 		client_command_storage_error(
-			cmd, "Failed to retrieve script `%s'", ctx->scriptname);
+			cmd, "Failed to retrieve script '%s'", ctx->scriptname);
 		return TRUE;
 	}
 
@@ -50,7 +50,7 @@ static bool cmd_getscript_finish(struct cmd_getscript_context *ctx)
 	struct event_passthrough *e =
 		client_command_create_finish_event(cmd)->
 		add_int("script_size", ctx->script_size);
-	e_debug(e->event(), "Retrieved script `%s'", ctx->scriptname);
+	e_debug(e->event(), "Retrieved script '%s'", ctx->scriptname);
 
 	client_send_line(client, "");
 	client_send_ok(client, "Getscript completed.");
@@ -68,7 +68,7 @@ static bool cmd_getscript_continue(struct client_command_context *cmd)
 		    !ctx->failed) {
 			/* Input stream gave less data than expected */
 			sieve_storage_set_critical(
-				ctx->storage, "GETSCRIPT for script `%s' "
+				ctx->storage, "GETSCRIPT for script '%s' "
 				"from %s got too little data: "
 				"%"PRIuUOFF_T" vs %"PRIuUOFF_T,
 				sieve_script_name(ctx->script),
@@ -84,7 +84,7 @@ static bool cmd_getscript_continue(struct client_command_context *cmd)
 		return FALSE;
 	case OSTREAM_SEND_ISTREAM_RESULT_ERROR_INPUT:
 		sieve_storage_set_critical(ctx->storage,
-			"o_stream_send_istream() failed for script `%s' "
+			"o_stream_send_istream() failed for script '%s' "
 			"from %s: %s",
 			sieve_script_name(ctx->script),
 			sieve_script_location(ctx->script),
@@ -138,7 +138,7 @@ bool cmd_getscript(struct client_command_context *cmd)
 
 	if (sieve_script_get_size(ctx->script, &ctx->script_size) <= 0) {
 		sieve_storage_set_critical(ctx->storage,
-			"failed to obtain script size for script `%s' from %s",
+			"failed to obtain script size for script '%s' from %s",
 			sieve_script_name(ctx->script),
 			sieve_script_location(ctx->script));
 		ctx->failed = TRUE;
diff --git a/src/managesieve/cmd-havespace.c b/src/managesieve/cmd-havespace.c
index 5af2bb11b805f6966f6b008462b6fe7333da3fd3..0ba2613ed0db39dfa4e7f3dd102f8dcc67f8f949 100644
--- a/src/managesieve/cmd-havespace.c
+++ b/src/managesieve/cmd-havespace.c
@@ -52,7 +52,7 @@ bool cmd_havespace(struct client_command_context *cmd)
 
 	struct event_passthrough *e =
 		client_command_create_finish_event(cmd);
-	e_debug(e->event(), "Quota is within limits for script `%s' "
+	e_debug(e->event(), "Quota is within limits for script '%s' "
 		"with size %"PRIuUOFF_T, scriptname, size);
 
 	client_send_ok(client, "Putscript would succeed.");
diff --git a/src/managesieve/cmd-putscript.c b/src/managesieve/cmd-putscript.c
index 5484174fa77a2f105036f07d267c2cb06345f27b..374d37c721daf129ed75eab78b2dcb5d8a714689 100644
--- a/src/managesieve/cmd-putscript.c
+++ b/src/managesieve/cmd-putscript.c
@@ -151,7 +151,7 @@ static void cmd_putscript_storage_error(struct cmd_putscript_context *ctx)
 	if (ctx->scriptname == NULL)
 		client_command_storage_error(cmd, "Failed to check script");
 	else {
-		client_command_storage_error(cmd, "Failed to store script `%s'",
+		client_command_storage_error(cmd, "Failed to store script '%s'",
 					     ctx->scriptname);
 	}
 }
@@ -207,7 +207,7 @@ cmd_putscript_finish_script(struct cmd_putscript_context *ctx,
 		}
 
 		action = (ctx->scriptname != NULL ?
-			  t_strdup_printf("store script `%s'",
+			  t_strdup_printf("store script '%s'",
 					  ctx->scriptname) :
 			  "check script");
 
@@ -262,7 +262,7 @@ cmd_putscript_finish_script(struct cmd_putscript_context *ctx,
 			add_int("compile_warnings",
 				sieve_get_warnings(ehandler));
 		if (ctx->scriptname != NULL) {
-			e_debug(e->event(), "Stored script `%s' successfully "
+			e_debug(e->event(), "Stored script '%s' successfully "
 				"(%u warnings)", ctx->scriptname,
 				sieve_get_warnings(ehandler));
 		} else {
diff --git a/src/managesieve/cmd-renamescript.c b/src/managesieve/cmd-renamescript.c
index 4864f34955804e99c6dde9d6ea53ed8dfbbd80c5..5018d12a36fb218cd53e8754fe59091673b22309 100644
--- a/src/managesieve/cmd-renamescript.c
+++ b/src/managesieve/cmd-renamescript.c
@@ -28,21 +28,21 @@ bool cmd_renamescript(struct client_command_context *cmd)
 	script = sieve_storage_open_script(storage, scriptname, NULL);
 	if (script == NULL) {
 		client_command_storage_error(
-			cmd, "Failed to open script `%s' for rename to `%s'",
+			cmd, "Failed to open script '%s' for rename to '%s'",
 			scriptname, newname);
 		return TRUE;
 	}
 
 	if (sieve_script_rename(script, newname) < 0) {
 		client_command_storage_error(
-			cmd, "Failed to rename script `%s' to `%s'",
+			cmd, "Failed to rename script '%s' to '%s'",
 			scriptname, newname);
 	} else {
 		client->renamed_count++;
 
 		struct event_passthrough *e =
 			client_command_create_finish_event(cmd);
-		e_debug(e->event(), "Renamed script `%s' to `%s'",
+		e_debug(e->event(), "Renamed script '%s' to '%s'",
 			scriptname, newname);
 
 		client_send_ok(client, "Renamescript completed.");
diff --git a/src/managesieve/cmd-setactive.c b/src/managesieve/cmd-setactive.c
index 07844c5e3d4013c4b155311d47d8d09ecaa1578a..b1a86c0afe88b8906300de99755f24ce16fe602a 100644
--- a/src/managesieve/cmd-setactive.c
+++ b/src/managesieve/cmd-setactive.c
@@ -29,7 +29,7 @@ cmd_setactive_activate(struct client_command_context *cmd,
 	script = sieve_storage_open_script(storage, scriptname, NULL);
 	if (script == NULL) {
 		client_command_storage_error(
-			cmd, "Failed to open script `%s' for activation",
+			cmd, "Failed to open script '%s' for activation",
 			scriptname);
 		return;
 	}
@@ -76,13 +76,13 @@ cmd_setactive_activate(struct client_command_context *cmd,
 		ret = sieve_script_activate(script, (time_t)-1);
 		if (ret < 0) {
 			client_command_storage_error(
-				cmd, "Failed to activate script `%s'",
+				cmd, "Failed to activate script '%s'",
 				scriptname);
 		} else {
 			struct event_passthrough *e =
 				client_command_create_finish_event(cmd)->
 				add_int("compile_warnings", warning_count);
-			e_debug(e->event(), "Activated script `%s' "
+			e_debug(e->event(), "Activated script '%s' "
 				" (%u warnings%s)",
 				scriptname, warning_count,
 				(ret == 0 ? ", redundant" : ""));
@@ -104,7 +104,7 @@ cmd_setactive_activate(struct client_command_context *cmd,
 			add_str("error", "Compilation failed")->
 			add_int("compile_errors", error_count)->
 			add_int("compile_warnings", warning_count);
-		e_debug(e->event(), "Failed to activate script `%s': "
+		e_debug(e->event(), "Failed to activate script '%s': "
 			"Compilation failed (%u errors, %u warnings)",
 			scriptname, error_count, warning_count);
 
@@ -113,7 +113,7 @@ cmd_setactive_activate(struct client_command_context *cmd,
 		struct event_passthrough *e =
 			client_command_create_finish_event(cmd)->
 			add_str("error", errormsg);
-		e_debug(e->event(), "Failed to activate script `%s': %s",
+		e_debug(e->event(), "Failed to activate script '%s': %s",
 			scriptname, errormsg);
 
 		client_send_no(client, errormsg);
diff --git a/src/managesieve/managesieve-quota.c b/src/managesieve/managesieve-quota.c
index 01c0e5fbfe16f5c2768e6d7942e4242634ee25cb..b06a8e942636efa9248fa84cb249f41b3158f555 100644
--- a/src/managesieve/managesieve-quota.c
+++ b/src/managesieve/managesieve-quota.c
@@ -55,7 +55,7 @@ bool managesieve_quota_check_all(struct client_command_context *cmd,
 		return TRUE;
 	if (ret < 0) {
 		client_command_storage_error(
-			cmd, "Failed to check quota for script `%s' "
+			cmd, "Failed to check quota for script '%s' "
 			     "(size %zu bytes)", scriptname, size);
 		return FALSE;
 	}
@@ -88,7 +88,7 @@ bool managesieve_quota_check_all(struct client_command_context *cmd,
 		client_command_create_finish_event(cmd)->
 		add_str("error", error_msg);
 	e_debug(e->event(),
-		"Quota check failed for script `%s' (size %zu bytes): %s",
+		"Quota check failed for script '%s' (size %zu bytes): %s",
 		scriptname, size, error_msg);
 
 	client_send_noresp(client, resp_code, error_msg);
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
index dca1ffc71fc6cedbbbe1d89f606d45716490c4b9..0b3874fd60d02c3cb0f21d792b314aded6edf901 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
@@ -400,7 +400,7 @@ sieve_attribute_set(struct mailbox_transaction_context *t,
 				"(time: %Y-%m-%d %H:%M:%S)",
 				ioloop_time);
 		}
-		e_debug(suser->event, "Assigned value for key `%s' %s",
+		e_debug(suser->event, "Assigned value for key '%s' %s",
 			key, change);
 
 		/* FIXME: set value len to sieve script size / active name
@@ -584,11 +584,11 @@ sieve_attribute_get(struct mailbox *box,
 
 			if (ret > 0) {
 				e_debug(user->event,
-					"Retrieved value for key `%s'%s",
+					"Retrieved value for key '%s'%s",
 					key, timestamp);
 			} else {
 				e_debug(suser->event,
-					"Value missing for key `%s'%s",
+					"Value missing for key '%s'%s",
 					key, timestamp);
 			}
 		}
diff --git a/src/plugins/imap-filter-sieve/cmd-filter-sieve.c b/src/plugins/imap-filter-sieve/cmd-filter-sieve.c
index 2d8847b41e6c6533d7ac7049650857d833d0464c..6965b511b9dbeb0a70fd48ea7fbe938779287625 100644
--- a/src/plugins/imap-filter-sieve/cmd-filter-sieve.c
+++ b/src/plugins/imap-filter-sieve/cmd-filter-sieve.c
@@ -368,7 +368,7 @@ bool cmd_filter_sieve(struct client_command_context *cmd)
 		type = IMAP_FILTER_SIEVE_TYPE_SCRIPT;
 	} else {
 		client_send_command_error(cmd, t_strdup_printf(
-			"Unknown SIEVE filter sub-type `%s'",
+			"Unknown SIEVE filter sub-type '%s'",
 			sieve_type));
 		return TRUE;
 	}
diff --git a/src/plugins/imap-filter-sieve/cmd-filter.c b/src/plugins/imap-filter-sieve/cmd-filter.c
index 24580477b24d837c1c5c7342f418a5abdb1df76d..7b280ecad86e3ef700e8c2e6d5cf800bc3b591d1 100644
--- a/src/plugins/imap-filter-sieve/cmd-filter.c
+++ b/src/plugins/imap-filter-sieve/cmd-filter.c
@@ -26,7 +26,7 @@ cmd_filter_parse_spec(struct imap_filter_context *ctx,
 	}
 	if (strcasecmp(filter_type, "SIEVE") != 0) {
 		client_send_command_error(cmd, t_strdup_printf(
-			"Unknown filter type `%s'", filter_type));
+			"Unknown filter type '%s'", filter_type));
 		return TRUE;
 	}
 
diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
index 1d9ccbe05d87e3a7b1866c1a81538f894b2e294d..bdfa1f9dc2c61876a5c0f2c350f15031057677d0 100644
--- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c
+++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
@@ -233,7 +233,7 @@ imap_filter_sieve_get_global_storage(struct imap_filter_sieve_context *sctx,
 	if (location == NULL) {
 		e_info(sieve_get_event(svinst),
 		       "include: sieve_global is unconfigured; "
-		       "include of `:global' script is therefore not possible");
+		       "include of ':global' script is therefore not possible");
 		*error_code_r = MAIL_ERROR_NOTFOUND;
 		*error_r = "No global Sieve scripts available";
 		return -1;
@@ -375,13 +375,13 @@ imap_sieve_filter_open_script(struct imap_filter_sieve_context *sctx,
 		/* Script not found */
 		case SIEVE_ERROR_NOT_FOUND:
 			e_debug(sieve_get_event(svinst),
-				"Script `%s' is missing for %s",
+				"Script '%s' is missing for %s",
 				sieve_script_location(script), compile_name);
 			break;
 		/* Temporary failure */
 		case SIEVE_ERROR_TEMP_FAILURE:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s "
+				"Failed to open script '%s' for %s "
 				"(temporary failure)",
 				sieve_script_location(script), compile_name);
 			break;
@@ -390,20 +390,20 @@ imap_sieve_filter_open_script(struct imap_filter_sieve_context *sctx,
 			if (script == sctx->user_script)
 				break;
 			e_error(sieve_get_event(svinst),
-				"Failed to %s script `%s'",
+				"Failed to %s script '%s'",
 				compile_name, sieve_script_location(script));
 			break;
 		/* Cumulative resource limit exceeded */
 		case SIEVE_ERROR_RESOURCE_LIMIT:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s "
+				"Failed to open script '%s' for %s "
 				"(cumulative resource limit exceeded)",
 				sieve_script_location(script), compile_name);
 			break;
 		/* Something else */
 		default:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s",
+				"Failed to open script '%s' for %s",
 				sieve_script_location(script), compile_name);
 			break;
 		}
@@ -823,7 +823,7 @@ imap_sieve_filter_run_scripts(struct imap_filter_sieve_context *sctx,
 
 		if (sbin == NULL) {
 			e_debug(sieve_get_event(svinst),
-				"Skipping script from `%s'",
+				"Skipping script from '%s'",
 				sieve_script_location(script));
 			continue;
 		}
@@ -850,7 +850,7 @@ imap_sieve_filter_run_scripts(struct imap_filter_sieve_context *sctx,
 
 		/* Execute */
 		e_debug(sieve_get_event(svinst),
-			"Executing script from `%s'",
+			"Executing script from '%s'",
 			sieve_get_source(sbin));
 		more = sieve_multiscript_run(mscript,
 			sbin, ehandler, ehandler, exflags);
@@ -1019,7 +1019,7 @@ imap_sieve_filter_get_msgdata(struct imap_filter_sieve_context *sctx,
 		else if (smtp_address_parse_username(sctx->pool, user->username,
 						     &user_addr, &error) < 0) {
 			e_warning(sieve_get_event(svinst),
-				  "Cannot obtain SMTP address from username `%s': %s",
+				  "Cannot obtain SMTP address from username '%s': %s",
 				  user->username, error);
 		} else {
 			if (user_addr->domain == NULL)
diff --git a/src/plugins/imapsieve/imap-sieve-storage.c b/src/plugins/imapsieve/imap-sieve-storage.c
index 63f52bece6fb95c24a08915113ae92a87b48ee80..2f03e73c287192b8a6d3647f82925026e1a48499 100644
--- a/src/plugins/imapsieve/imap-sieve-storage.c
+++ b/src/plugins/imapsieve/imap-sieve-storage.c
@@ -153,7 +153,7 @@ imap_sieve_mailbox_get_script_real(struct mailbox *box,
 	if (ret > 0) {
 		e_debug(isbox->event, "Mailbox attribute /shared/"
 			MAILBOX_ATTRIBUTE_IMAPSIEVE_SCRIPT" "
-			"points to Sieve script `%s'", value.value);
+			"points to Sieve script '%s'", value.value);
 	/* If not found, get the name of the Sieve script from server METADATA.
 	 */
 	} else {
@@ -190,7 +190,7 @@ imap_sieve_mailbox_get_script_real(struct mailbox *box,
 
 		e_debug(isbox->event, "Server attribute /shared/"
 			MAIL_SERVER_ATTRIBUTE_IMAPSIEVE_SCRIPT" "
-			"points to Sieve script `%s'", value.value);
+			"points to Sieve script '%s'", value.value);
 	}
 
 	*script_name_r = value.value;
@@ -893,7 +893,7 @@ static void imap_sieve_mailbox_rules_init(struct mail_user *user)
 		     !rule_pattern_has_wildcards(mbrule->from)) &&
 		    hash_table_lookup(isuser->mbox_rules, mbrule) != NULL) {
 			e_warning(isuser->event,
-				  "Duplicate static mailbox rule [%u] for mailbox `%s' "
+				  "Duplicate static mailbox rule [%u] for mailbox '%s' "
 				  "(skipped)", i, mbrule->mailbox);
 			continue;
 		}
@@ -913,7 +913,7 @@ static void imap_sieve_mailbox_rules_init(struct mail_user *user)
 			}
 			if (*cause != NULL) {
 				e_warning(isuser->event,
-					  "Static mailbox rule [%u] has invalid event cause `%s' "
+					  "Static mailbox rule [%u] has invalid event cause '%s' "
 					  "(skipped)", i, *cause);
 				continue;
 			}
@@ -935,17 +935,17 @@ static void imap_sieve_mailbox_rules_init(struct mail_user *user)
 		mbrule->copy_source_after = p_strdup_empty(user->pool, setval);
 
 		e_debug(isuser->event, "Static mailbox rule [%u]: "
-			"mailbox=`%s' from=`%s' causes=(%s) => "
+			"mailbox='%s' from='%s' causes=(%s) => "
 			"before=%s after=%s%s",
 			mbrule->index, mbrule->mailbox,
 			(mbrule->from == NULL ? "*" : mbrule->from),
 			t_strarray_join(mbrule->causes, " "),
 			(mbrule->before == NULL ? "(none)" :
-			 t_strconcat("`", mbrule->before, "'", NULL)),
+			 t_strconcat("'", mbrule->before, "'", NULL)),
 			(mbrule->after == NULL ? "(none)" :
-			 t_strconcat("`", mbrule->after, "'", NULL)),
+			 t_strconcat("'", mbrule->after, "'", NULL)),
 			(mbrule->copy_source_after == NULL ? "":
-			 t_strconcat(" copy_source_after=`",
+			 t_strconcat(" copy_source_after='",
 				     mbrule->copy_source_after, "'", NULL)));
 
 		if ((strcmp(mbrule->mailbox, "*") == 0 ||
diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c
index fa82b1a0f92ef9fab3a4569d1705e20f3d1ece43..683491b7565d18d43b0d575812f8345ee4455164 100644
--- a/src/plugins/imapsieve/imap-sieve.c
+++ b/src/plugins/imapsieve/imap-sieve.c
@@ -559,13 +559,13 @@ imap_sieve_run_open_script(struct imap_sieve_run *isrun,
 		/* Script not found */
 		case SIEVE_ERROR_NOT_FOUND:
 			e_debug(sieve_get_event(svinst),
-				"Script `%s' is missing for %s",
+				"Script '%s' is missing for %s",
 				sieve_script_location(script), compile_name);
 			break;
 		/* Temporary failure */
 		case SIEVE_ERROR_TEMP_FAILURE:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s "
+				"Failed to open script '%s' for %s "
 				"(temporary failure)",
 				sieve_script_location(script), compile_name);
 			break;
@@ -574,27 +574,27 @@ imap_sieve_run_open_script(struct imap_sieve_run *isrun,
 			if (script == isrun->user_script &&
 			   isrun->userlog != NULL ) {
 				e_info(sieve_get_event(svinst),
-				       "Failed to %s script `%s' "
-				       "(view user logfile `%s' for more information)",
+				       "Failed to %s script '%s' "
+				       "(view user logfile '%s' for more information)",
 				       compile_name, sieve_script_location(script),
 				       isrun->userlog);
 				break;
 			}
 			e_error(sieve_get_event(svinst),
-				"Failed to %s script `%s'",
+				"Failed to %s script '%s'",
 				compile_name, sieve_script_location(script));
 			break;
 		/* Cumulative resource limit exceeded */
 		case SIEVE_ERROR_RESOURCE_LIMIT:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s "
+				"Failed to open script '%s' for %s "
 				"(cumulative resource limit exceeded)",
 				sieve_script_location(script), compile_name);
 			break;
 		/* Something else */
 		default:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s",
+				"Failed to open script '%s' for %s",
 				sieve_script_location(script), compile_name);
 			break;
 		}
@@ -744,7 +744,7 @@ imap_sieve_run_scripts(struct imap_sieve_run *isrun,
 		/* Open */
 		if (sbin == NULL) {
 			e_debug(sieve_get_event(svinst),
-				"Opening script %d of %d from `%s'",
+				"Opening script %d of %d from '%s'",
 				i+1, count, sieve_script_location(script));
 
 			/* Already known to fail */
@@ -764,7 +764,7 @@ imap_sieve_run_scripts(struct imap_sieve_run *isrun,
 
 		/* Execute */
 		e_debug(sieve_get_event(svinst),
-			"Executing script from `%s'",
+			"Executing script from '%s'",
 			sieve_get_source(sbin));
 		more = sieve_multiscript_run(mscript, sbin, ehandler, ehandler,
 					     exflags);
diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index e6aea20f34a68b43207db06c35832529ad51383a..baae819f843e8ed0bf59d8af64745c4618c73e1c 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -301,7 +301,7 @@ lda_sieve_multiscript_get_scripts(struct sieve_instance *svinst,
 				break;
 			case SIEVE_ERROR_TEMP_FAILURE:
 				e_error(sieve_get_event(svinst),
-					"Failed to access %s script from `%s' "
+					"Failed to access %s script from '%s' "
 					"(temporary failure)",
 					label, location);
 				ret = -1;
@@ -332,7 +332,7 @@ lda_sieve_binary_save(struct lda_sieve_run_context *srctx,
 		e_error(sieve_get_event(srctx->svinst),
 			"The LDA Sieve plugin does not have permission "
 			"to save global Sieve script binaries; "
-			"global Sieve scripts like `%s' need to be "
+			"global Sieve scripts like '%s' need to be "
 			"pre-compiled using the sievec tool",
 			sieve_script_location(script));
 	}
@@ -378,14 +378,14 @@ sieve_binary *lda_sieve_open(struct lda_sieve_run_context *srctx,
 		/* Script not found */
 		case SIEVE_ERROR_NOT_FOUND:
 			e_debug(sieve_get_event(svinst),
-				"Script `%s' is missing for %s",
+				"Script '%s' is missing for %s",
 				sieve_script_location(script),
 				compile_name);
 			break;
 		/* Temporary failure */
 		case SIEVE_ERROR_TEMP_FAILURE:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s "
+				"Failed to open script '%s' for %s "
 				"(temporary failure)",
 				sieve_script_location(script), compile_name);
 			break;
@@ -394,28 +394,28 @@ sieve_binary *lda_sieve_open(struct lda_sieve_run_context *srctx,
 			if (script == srctx->user_script &&
 			    srctx->userlog != NULL ) {
 				e_info(sieve_get_event(svinst),
-				       "Failed to %s script `%s' "
-				       "(view user logfile `%s' for more information)",
+				       "Failed to %s script '%s' "
+				       "(view user logfile '%s' for more information)",
 				       compile_name,
 				       sieve_script_location(script),
 				       srctx->userlog);
 				break;
 			}
 			e_error(sieve_get_event(svinst),
-				"Failed to %s script `%s'",
+				"Failed to %s script '%s'",
 				compile_name, sieve_script_location(script));
 			break;
 		/* Cumulative resource limit exceeded */
 		case SIEVE_ERROR_RESOURCE_LIMIT:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s "
+				"Failed to open script '%s' for %s "
 				"(cumulative resource limit exceeded)",
 				sieve_script_location(script), compile_name);
 			break;
 		/* Something else */
 		default:
 			e_error(sieve_get_event(svinst),
-				"Failed to open script `%s' for %s",
+				"Failed to open script '%s' for %s",
 				sieve_script_location(script), compile_name);
 			break;
 		}
@@ -541,12 +541,12 @@ lda_sieve_execute_script(struct lda_sieve_run_context *srctx,
 
 	if (!discard_script) {
 		e_debug(sieve_get_event(svinst),
-			"Opening script %d of %d from `%s'",
+			"Opening script %d of %d from '%s'",
 			index, srctx->script_count,
 			sieve_script_location(script));
 	} else {
 		e_debug(sieve_get_event(svinst),
-			"Opening discard script from `%s'",
+			"Opening discard script from '%s'",
 			sieve_script_location(script));
 	}
 
@@ -557,7 +557,7 @@ lda_sieve_execute_script(struct lda_sieve_run_context *srctx,
 	/* Execute */
 
 	e_debug(sieve_get_event(svinst),
-		"Executing script from `%s'",
+		"Executing script from '%s'",
 		sieve_get_source(sbin));
 
 	if (!discard_script) {
@@ -725,19 +725,19 @@ static int lda_sieve_find_scripts(struct lda_sieve_run_context *srctx)
 			switch (error) {
 			case SIEVE_ERROR_NOT_FOUND:
 				e_debug(sieve_get_event(svinst),
-					"User has no active script in storage `%s'",
+					"User has no active script in storage '%s'",
 					sieve_storage_location(main_storage));
 				break;
 			case SIEVE_ERROR_TEMP_FAILURE:
 				e_error(sieve_get_event(svinst),
-					"Failed to access active Sieve script in user storage `%s' "
+					"Failed to access active Sieve script in user storage '%s' "
 					"(temporary failure)",
 					sieve_storage_location(main_storage));
 				ret = -1;
 				break;
 			default:
 				e_error(sieve_get_event(svinst),
-					"Failed to access active Sieve script in user storage `%s'",
+					"Failed to access active Sieve script in user storage '%s'",
 					sieve_storage_location(main_storage));
 				break;
 			}
diff --git a/src/plugins/sieve-extprograms/cmd-execute.c b/src/plugins/sieve-extprograms/cmd-execute.c
index 16d9367106a2e4518fcc103923fc6a164065c937..7fa114b57e85c20692dbc27bdc42247e430104b4 100644
--- a/src/plugins/sieve-extprograms/cmd-execute.c
+++ b/src/plugins/sieve-extprograms/cmd-execute.c
@@ -396,7 +396,7 @@ cmd_execute_operation_execute(const struct sieve_runtime_env *renv,
 	sieve_runtime_trace(renv, SIEVE_TRLVL_ACTIONS, "execute action");
 	sieve_runtime_trace_descend(renv);
 	sieve_runtime_trace(renv, SIEVE_TRLVL_ACTIONS,
-			    "execute program `%s'",
+			    "execute program '%s'",
 			    str_sanitize(program_name, 128));
 
 	sprog = sieve_extprogram_create(this_ext, eenv->scriptenv,
@@ -461,13 +461,13 @@ cmd_execute_operation_execute(const struct sieve_runtime_env *renv,
 		if (error == SIEVE_ERROR_NOT_FOUND) {
 			sieve_runtime_error(
 				renv, NULL,
-				"execute action: program `%s' not found",
+				"execute action: program '%s' not found",
 				str_sanitize(program_name, 80));
 		} else {
 			sieve_extprogram_exec_error(
 				renv->ehandler,
 				sieve_runtime_get_full_command_location(renv),
-				"execute action: failed to execute to program `%s'",
+				"execute action: failed to execute to program '%s'",
 				str_sanitize(program_name, 80));
 		}
 	} else {
diff --git a/src/plugins/sieve-extprograms/cmd-filter.c b/src/plugins/sieve-extprograms/cmd-filter.c
index 1710c4fa997eca074f6e0d8fe3a30997f25c5468..555c52d4caec3c305ad9ae6cb0b13490cad088cb 100644
--- a/src/plugins/sieve-extprograms/cmd-filter.c
+++ b/src/plugins/sieve-extprograms/cmd-filter.c
@@ -183,7 +183,7 @@ cmd_filter_operation_execute(const struct sieve_runtime_env *renv,
 	sieve_runtime_trace(renv, SIEVE_TRLVL_ACTIONS, "filter action");
 	sieve_runtime_trace_descend(renv);
 	sieve_runtime_trace(renv, SIEVE_TRLVL_ACTIONS,
-		"execute program `%s'", str_sanitize(program_name, 128));
+		"execute program '%s'", str_sanitize(program_name, 128));
 
 	sprog = sieve_extprogram_create(this_ext, eenv->scriptenv,
 					eenv->msgdata, "filter",
@@ -229,14 +229,14 @@ cmd_filter_operation_execute(const struct sieve_runtime_env *renv,
 	} else if (ret < 0) {
 		if (error == SIEVE_ERROR_NOT_FOUND) {
 			sieve_runtime_error(renv, NULL, "filter action: "
-					    "program `%s' not found",
+					    "program '%s' not found",
 					    str_sanitize(program_name, 80));
 		} else {
 			sieve_extprogram_exec_error(
 				renv->ehandler,
 				sieve_runtime_get_full_command_location(renv),
 				"filter action: "
-				"failed to execute to program `%s'",
+				"failed to execute to program '%s'",
 				str_sanitize(program_name, 80));
 		}
 
diff --git a/src/plugins/sieve-extprograms/cmd-pipe.c b/src/plugins/sieve-extprograms/cmd-pipe.c
index be90122c6bd250025c91f06d52b8e62b76a61a92..1c6ff90e2cc08104bd87975f6eb6a626a4a2d0ce 100644
--- a/src/plugins/sieve-extprograms/cmd-pipe.c
+++ b/src/plugins/sieve-extprograms/cmd-pipe.c
@@ -411,7 +411,7 @@ act_pipe_commit(const struct sieve_action_exec_env *aenv,
 				str_sanitize(act->program_name, 256));
 
 		sieve_result_event_log(aenv, e->event(),
-				       "piped message to program `%s'",
+				       "piped message to program '%s'",
 				       str_sanitize(act->program_name, 128));
 
 		/* Indicate that message was successfully 'forwarded' */
@@ -422,18 +422,18 @@ act_pipe_commit(const struct sieve_action_exec_env *aenv,
 				sieve_result_error(
 					aenv,
 					"failed to pipe message to program: "
-					"program `%s' not found",
+					"program '%s' not found",
 					str_sanitize(act->program_name, 80));
 			} else {
 				sieve_extprogram_exec_error(
 					aenv->ehandler, NULL,
-					"failed to pipe message to program `%s'",
+					"failed to pipe message to program '%s'",
 					str_sanitize(act->program_name, 80));
 			}
 		} else {
 			sieve_extprogram_exec_error(
 				aenv->ehandler, NULL,
-				"failed to execute to program `%s'",
+				"failed to execute to program '%s'",
 				str_sanitize(act->program_name, 80));
 		}
 
diff --git a/src/plugins/sieve-extprograms/sieve-extprograms-common.c b/src/plugins/sieve-extprograms/sieve-extprograms-common.c
index cb3de92f259a56f08bc12bc3ccfa854c905ed498..352090d2eed892f6930f544208a30605c013f806 100644
--- a/src/plugins/sieve-extprograms/sieve-extprograms-common.c
+++ b/src/plugins/sieve-extprograms/sieve-extprograms-common.c
@@ -229,7 +229,7 @@ _arg_validate(void *context, struct sieve_ast_argument *item)
 		if (!sieve_extprogram_arg_is_valid(arg)) {
 			sieve_argument_validate_error(
 				actx->valdtr, item,
-				"%s %s: specified external program argument `%s' is invalid",
+				"%s %s: specified external program argument '%s' is invalid",
 				sieve_command_identifier(actx->cmd),
 				sieve_command_type_name(actx->cmd),
 				str_sanitize(str_c(arg), 128));
@@ -349,7 +349,7 @@ int sieve_extprogram_command_read_operands(
 	       (ret = sieve_stringlist_next_item(*args_list_r, &arg)) > 0) {
 		if (!sieve_extprogram_arg_is_valid(arg)) {
 			sieve_runtime_error(renv, NULL,
-				"specified :args item `%s' is invalid",
+				"specified :args item '%s' is invalid",
 				str_sanitize(str_c(arg), 128));
 			return SIEVE_EXEC_FAILURE;
 		}
@@ -423,7 +423,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 	if (ext_config == NULL ||
 	    (ext_config->bin_dir == NULL && ext_config->socket_dir == NULL)) {
 		e_error(svinst->event, "action %s: "
-			"failed to execute program `%s': "
+			"failed to execute program '%s': "
 			"vnd.dovecot.%s extension is unconfigured",
 			action, program_name, action);
 		*error_r = SIEVE_ERROR_NOT_FOUND;
@@ -439,7 +439,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 			switch (errno) {
 			case ENOENT:
 				e_debug(svinst->event, "action %s: "
-					"socket path `%s' for program `%s' not found",
+					"socket path '%s' for program '%s' not found",
 					action, path, program_name);
 				break;
 			case EACCES:
@@ -450,7 +450,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 				return NULL;
 			default:
 				e_error(svinst->event, "action %s: "
-					"failed to stat socket `%s': %m",
+					"failed to stat socket '%s': %m",
 					action, path);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				return NULL;
@@ -458,7 +458,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 			path = NULL;
 		} else if (!S_ISSOCK(st.st_mode)) {
 			e_error(svinst->event, "action %s: "
-				"socket path `%s' for program `%s' is not a socket",
+				"socket path '%s' for program '%s' is not a socket",
 				action, path, program_name);
 			*error_r = SIEVE_ERROR_NOT_POSSIBLE;
 			return NULL;
@@ -474,7 +474,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 			switch (errno) {
 			case ENOENT:
 				e_debug(svinst->event, "action %s: "
-					"executable path `%s' for program `%s' not found",
+					"executable path '%s' for program '%s' not found",
 					action, path, program_name);
 				*error_r = SIEVE_ERROR_NOT_FOUND;
 				break;
@@ -486,7 +486,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 				break;
 			default:
 				e_error(svinst->event, "action %s: "
-					"failed to stat program `%s': %m",
+					"failed to stat program '%s': %m",
 					action, path);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				break;
@@ -495,13 +495,13 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 			return NULL;
 		} else if (!S_ISREG(st.st_mode)) {
 			e_error(svinst->event, "action %s: "
-				"executable `%s' for program `%s' is not a regular file",
+				"executable '%s' for program '%s' is not a regular file",
 				action, path, program_name);
 			*error_r = SIEVE_ERROR_NOT_POSSIBLE;
 			return NULL;
 		} else if ((st.st_mode & S_IWOTH) != 0) {
 			e_error(svinst->event, "action %s: "
-				"executable `%s' for program `%s' is world-writable",
+				"executable '%s' for program '%s' is world-writable",
 				action, path, program_name);
 			*error_r = SIEVE_ERROR_NO_PERMISSION;
 			return NULL;
@@ -511,7 +511,7 @@ sieve_extprogram_create(const struct sieve_extension *ext,
 	/* None found ? */
 	if (path == NULL) {
 		e_error(svinst->event, "action %s: "
-			"program `%s' not found", action, program_name);
+			"program '%s' not found", action, program_name);
 		*error_r = SIEVE_ERROR_NOT_FOUND;
 		return NULL;
 	}
diff --git a/src/sieve-tools/sieve-filter.c b/src/sieve-tools/sieve-filter.c
index 560d2e96ccc36ebe98368f9938e3c6533b54b3ec..8b4a78ac9358dc5453cb553fe27d17483aba53f8 100644
--- a/src/sieve-tools/sieve-filter.c
+++ b/src/sieve-tools/sieve-filter.c
@@ -134,7 +134,7 @@ static int filter_message(struct sieve_filter_context *sfctx, struct mail *mail)
 	/* Execute script */
 	if (execute) {
 		sieve_info(ehandler, NULL,
-			   "filtering: [%s; %"PRIuUOFF_T" bytes] `%s'",
+			   "filtering: [%s; %"PRIuUOFF_T" bytes] '%s'",
 			   date, size, str_sanitize(subject, 40));
 
 		ret = sieve_execute(sbin, &msgdata, senv, ehandler, ehandler,
@@ -164,7 +164,7 @@ static int filter_message(struct sieve_filter_context *sfctx, struct mail *mail)
 		if (!source_write) {
 			/* READ-ONLY; Do nothing */
 		} else if (estatus.keep_original) {
-			/* Explicitly `stored' in source box; just keep it there */
+			/* Explicitly 'stored' in source box; just keep it there */
 			sieve_info(ehandler, NULL,
 				   "message kept in source mailbox");
 		} else if (estatus.message_saved) {
@@ -487,7 +487,7 @@ int main(int argc, char **argv)
 				i_fatal_status(
 					EX_USAGE,
 					"Invalid <discard-action> argument: "
-					"the `move' action requires mailbox argument");
+					"the 'move' action requires mailbox argument");
 			}
 		} else if (strcmp(srcact, "delete") == 0) {
 			discard_action = SIEVE_FILTER_DACT_DELETE;
diff --git a/src/testsuite/cmd-test-binary.c b/src/testsuite/cmd-test-binary.c
index 7d76c4548ada942767e484c7cdfe36197c15f46b..00cbea01830048d2d209d406e1848c41fb2d8000 100644
--- a/src/testsuite/cmd-test-binary.c
+++ b/src/testsuite/cmd-test-binary.c
@@ -182,7 +182,7 @@ cmd_test_binary_operation_execute(const struct sieve_runtime_env *renv,
 			sieve_runtime_trace(renv, 0, "testsuite: "
 					    "test_binary_load command");
 			sieve_runtime_trace_descend(renv);
-			sieve_runtime_trace(renv, 0, "load binary `%s'",
+			sieve_runtime_trace(renv, 0, "load binary '%s'",
 					    str_c(binary_name));
 		}
 
@@ -202,7 +202,7 @@ cmd_test_binary_operation_execute(const struct sieve_runtime_env *renv,
 			sieve_runtime_trace(renv, 0, "testsuite: "
 					    "test_binary_save command");
 			sieve_runtime_trace_descend(renv);
-			sieve_runtime_trace(renv, 0, "save binary `%s'",
+			sieve_runtime_trace(renv, 0, "save binary '%s'",
 					    str_c(binary_name));
 		}
 
diff --git a/src/testsuite/cmd-test-config.c b/src/testsuite/cmd-test-config.c
index 0143cf1a0356ffc3f80db2e3d020cee970c8ed09..ec5e73c54869b670d1f6296d74d40963886ca0d2 100644
--- a/src/testsuite/cmd-test-config.c
+++ b/src/testsuite/cmd-test-config.c
@@ -379,7 +379,7 @@ cmd_test_config_set_operation_execute(const struct sieve_runtime_env *renv,
 			renv, 0, "testsuite: test_config_set command");
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(
-			renv, 0, "set config `%s' = `%s'",
+			renv, 0, "set config '%s' = '%s'",
 			str_c(setting), str_c(value));
 	}
 
@@ -413,7 +413,7 @@ cmd_test_config_unset_operation_execute(const struct sieve_runtime_env *renv,
 			renv, 0, "testsuite: test_config_unset command");
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(
-			renv, 0, "unset config `%s'", str_c(setting));
+			renv, 0, "unset config '%s'", str_c(setting));
 	}
 
 	testsuite_setting_unset(str_c(setting));
@@ -482,7 +482,7 @@ cmd_test_config_reload_operation_execute(const struct sieve_runtime_env *renv,
 		if (sieve_runtime_trace_active(renv, SIEVE_TRLVL_COMMANDS)) {
 			sieve_runtime_trace(
 				renv, 0,
-				"reload configuration for extension `%s'",
+				"reload configuration for extension '%s'",
 				str_c(extension));
 		}
 
diff --git a/src/testsuite/cmd-test-imap-metadata.c b/src/testsuite/cmd-test-imap-metadata.c
index 7308d4cd56eef195f64f311263631f7d1971383c..806113e52727b7ed8055c77b848ef8795cb16479 100644
--- a/src/testsuite/cmd-test-imap-metadata.c
+++ b/src/testsuite/cmd-test-imap-metadata.c
@@ -283,11 +283,11 @@ cmd_test_imap_metadata_operation_execute(const struct sieve_runtime_env *renv,
 			sieve_runtime_trace_descend(renv);
 			if (mailbox == NULL) {
 				sieve_runtime_trace(renv, 0,
-					"set server annotation `%s'",
+					"set server annotation '%s'",
 					str_c(annotation));
 			} else {
 				sieve_runtime_trace(renv, 0,
-					"set annotation `%s' for mailbox `%s'",
+					"set annotation '%s' for mailbox '%s'",
 					str_c(annotation), str_c(mailbox));
 			}
 		}
diff --git a/src/testsuite/cmd-test-mailbox.c b/src/testsuite/cmd-test-mailbox.c
index b5d946ce42e7576e461b1a0fea96464b1bff204e..4e9033c4e659855b9c842f87e7c29e0093eaeb91 100644
--- a/src/testsuite/cmd-test-mailbox.c
+++ b/src/testsuite/cmd-test-mailbox.c
@@ -117,7 +117,7 @@ cmd_test_mailbox_validate(struct sieve_validator *valdtr,
 		if ( !sieve_mailbox_check_name(folder, &error) ) {
 			sieve_command_validate_error(
 				valdtr, cmd, "%s command: "
-				"invalid mailbox `%s' specified: %s",
+				"invalid mailbox '%s' specified: %s",
 				sieve_command_identifier(cmd),
 				str_sanitize(folder, 256), error);
 			return FALSE;
@@ -193,7 +193,7 @@ cmd_test_mailbox_create_execute(const struct sieve_runtime_env *renv,
 			"testsuite/test_mailbox_create command");
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(
-			renv, 0, "create mailbox `%s'", mailbox);
+			renv, 0, "create mailbox '%s'", mailbox);
 	}
 
 	testsuite_mailstore_mailbox_create(renv, mailbox);
@@ -210,7 +210,7 @@ cmd_test_mailbox_delete_execute(const struct sieve_runtime_env *renv,
 			"testsuite/test_mailbox_delete command");
 		sieve_runtime_trace_descend(renv);
 		sieve_runtime_trace(
-			renv, 0, "delete mailbox `%s'", mailbox);
+			renv, 0, "delete mailbox '%s'", mailbox);
 	}
 
 	/* FIXME: implement */
@@ -240,7 +240,7 @@ cmd_test_mailbox_operation_execute(const struct sieve_runtime_env *renv,
 	if (!sieve_mailbox_check_name(str_c(mailbox), &error)) {
 		sieve_runtime_error(
 			renv, NULL, "%s command: "
-			"invalid mailbox `%s' specified: %s",
+			"invalid mailbox '%s' specified: %s",
 			cmd_test_mailbox_get_command_name(oprtn),
 			str_c(mailbox), error);
 		return SIEVE_EXEC_FAILURE;
diff --git a/src/testsuite/cmd-test-message.c b/src/testsuite/cmd-test-message.c
index ff3670495c736cc3b6ce57afe05af3283384cefd..83095aed1ea66edf89d69f543a2a017873fb2fd5 100644
--- a/src/testsuite/cmd-test-message.c
+++ b/src/testsuite/cmd-test-message.c
@@ -262,7 +262,7 @@ cmd_test_message_validate_folder_tag(struct sieve_validator *valdtr,
 		if ( !sieve_mailbox_check_name(folder, &error) ) {
 			sieve_command_validate_error(
 				valdtr, cmd, "%s command: "
-				"invalid mailbox `%s' specified: %s",
+				"invalid mailbox '%s' specified: %s",
 				sieve_command_identifier(cmd),
 				str_sanitize(folder, 256), error);
 			return FALSE;
@@ -491,7 +491,7 @@ cmd_test_message_mailbox_operation_execute(const struct sieve_runtime_env *renv,
 
 	if (!sieve_mailbox_check_name(str_c(folder), &error)) {
 		return testsuite_test_failf(
-			renv, "invalid mailbox `%s' specified: %s",
+			renv, "invalid mailbox '%s' specified: %s",
 			str_c(folder), error);
 	}
 
@@ -506,7 +506,7 @@ cmd_test_message_mailbox_operation_execute(const struct sieve_runtime_env *renv,
 			sieve_runtime_trace_descend(renv);
 			sieve_runtime_trace(
 				renv, 0, "check and retrieve mailbox message "
-				"[mailbox=`%s' index=%llu]",
+				"[mailbox='%s' index=%llu]",
 				str_c(folder), (unsigned long long)msg_index);
 		}
 	} else {
@@ -516,7 +516,7 @@ cmd_test_message_mailbox_operation_execute(const struct sieve_runtime_env *renv,
 			sieve_runtime_trace_descend(renv);
 			sieve_runtime_trace(
 				renv, 0, "retrieve mailbox message "
-				"[mailbox=`%s' index=%llu]",
+				"[mailbox='%s' index=%llu]",
 				str_c(folder), (unsigned long long)msg_index);
 		}
 	}
diff --git a/src/testsuite/testsuite-mailstore.c b/src/testsuite/testsuite-mailstore.c
index 6d0c1ff5b253983d2d9ae5d4fe0fdeb3e2e3e958..5c8133eff0de9c4d6f10a38f78fd1936cb094a6f 100644
--- a/src/testsuite/testsuite-mailstore.c
+++ b/src/testsuite/testsuite-mailstore.c
@@ -185,7 +185,7 @@ testsuite_mailstore_open(const char *folder)
 
 	if (!sieve_mailbox_check_name(folder, &error)) {
 		e_error(testsuite_sieve_instance->event,
-			"testsuite: invalid mailbox name `%s' specified: %s",
+			"testsuite: invalid mailbox name '%s' specified: %s",
 			folder, error);
 		return NULL;
 	}
@@ -314,7 +314,7 @@ int testsuite_mailstore_set_imap_metadata(const char *mailbox,
 	if (!imap_metadata_verify_entry_name(annotation, &error)) {
 		e_error(testsuite_sieve_instance->event,
 			"testsuite: imap metadata: "
-			"specified annotation name `%s' is invalid: %s",
+			"specified annotation name '%s' is invalid: %s",
 			str_sanitize(annotation, 256), error);
 		return -1;
 	}
@@ -347,7 +347,7 @@ int testsuite_mailstore_set_imap_metadata(const char *mailbox,
 	if (ret < 0) {
 		e_error(testsuite_sieve_instance->event,
 			"testsuite: imap metadata: "
-			"failed to assign annotation `%s': %s",
+			"failed to assign annotation '%s': %s",
 			str_sanitize(annotation, 256), error);
 		return -1;
 	}
diff --git a/src/testsuite/testsuite-message.c b/src/testsuite/testsuite-message.c
index 68e20ebe678d96de715c486c263ed5d7a4aec0df..2defe5dc6161d2922925ecfa491dffc152cf0d37 100644
--- a/src/testsuite/testsuite-message.c
+++ b/src/testsuite/testsuite-message.c
@@ -261,7 +261,7 @@ void testsuite_envelope_set_sender(const struct sieve_runtime_env *renv,
 				    &address, &error) < 0) {
 		e_error(testsuite_sieve_instance->event,
 			"testsuite: envelope sender address "
-			"`%s' is invalid: %s", value, error);
+			"'%s' is invalid: %s", value, error);
 	}
 	testsuite_envelope_set_sender_address(renv, address);
 }
@@ -293,7 +293,7 @@ void testsuite_envelope_set_recipient(const struct sieve_runtime_env *renv,
 				    &address, &error) < 0) {
 		e_error(testsuite_sieve_instance->event,
 			"testsuite: envelope recipient address "
-			"`%s' is invalid: %s", value, error);
+			"'%s' is invalid: %s", value, error);
 	}
 	testsuite_envelope_set_recipient_address(renv, address);
 }
@@ -322,7 +322,7 @@ void testsuite_envelope_set_orig_recipient(const struct sieve_runtime_env *renv,
 				    &address, &error) < 0) {
 		e_error(testsuite_sieve_instance->event,
 			"testsuite: envelope recipient address "
-			"`%s' is invalid: %s", value, error);
+			"'%s' is invalid: %s", value, error);
 	}
 	testsuite_envelope_set_orig_recipient_address(renv, address);
 }
diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c
index ae57907aae6b63c177048d90fef20decaeb45862..fef270049ba2e8b5181e5553376786fe5d97e69b 100644
--- a/src/testsuite/testsuite-script.c
+++ b/src/testsuite/testsuite-script.c
@@ -40,7 +40,7 @@ _testsuite_script_compile(const struct sieve_runtime_env *renv,
 	const char *script_path;
 
 	sieve_runtime_trace(renv, SIEVE_TRLVL_TESTS,
-			    "compile script `%s'", script);
+			    "compile script '%s'", script);
 
 	script_path = sieve_file_script_get_dirpath(renv->script);
 	if (script_path == NULL)
@@ -245,7 +245,7 @@ bool testsuite_script_multiscript(const struct sieve_runtime_env *renv,
 		/* Execute */
 
 		sieve_runtime_trace(renv, SIEVE_TRLVL_TESTS,
-				    "run script `%s'", script);
+				    "run script '%s'", script);
 
 		more = sieve_multiscript_run(mscript, sbin,
 					     testsuite_log_ehandler,