diff --git a/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c b/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c
index 04977d9a52468ae1940f7206073393131ca5546f..d32af09b325358897045262fb728fcc1c62a6dc5 100644
--- a/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c
+++ b/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c
@@ -125,7 +125,6 @@ seff_mailbox_create_pre_execute(
 		(struct act_store_transaction *)tr_context;
 	const struct sieve_execute_env *eenv = aenv->exec_env;
 	struct mail_storage **storage = &(eenv->exec_status->last_storage);
-	enum mail_error error;
 
 	/* Check whether creation is necessary */
 	if (trans->box == NULL || trans->disabled)
@@ -150,9 +149,11 @@ seff_mailbox_create_pre_execute(
 
 	/* Create mailbox */
 	if (mailbox_create(trans->box, NULL, FALSE) < 0) {
-		(void)mail_storage_get_last_error(*storage, &error);
-		if (error != MAIL_ERROR_EXISTS) {
-			sieve_act_store_get_storage_error(aenv, trans);
+		sieve_act_store_get_storage_error(aenv, trans);
+		if (trans->error_code == MAIL_ERROR_EXISTS) {
+			trans->error = NULL;
+			trans->error_code = MAIL_ERROR_NONE;
+		} else {
 			return (trans->error_code == MAIL_ERROR_TEMP ?
 				SIEVE_EXEC_TEMP_FAILURE : SIEVE_EXEC_FAILURE);
 		}