+@@ -108,6 +108,7 @@ antispam_copy(struct mail_save_context *ctx, struct mail *mail)
+ if (mailbox_is_unsure(asbox->cfg, t->box)) {
+ mail_storage_set_error(t->box->storage, MAIL_ERROR_NOTPOSSIBLE,
+ "Cannot copy to unsure folder");
++ mailbox_save_cancel(&ctx);
+ return -1;
+ }
+
+@@ -378,14 +379,22 @@ antispam_mail_update_keywords(struct mail *mail,
+
+ static struct mailbox_transaction_context *
+ antispam_mailbox_transaction_begin(struct mailbox *box,
+- enum mailbox_transaction_flags flags)
++ enum mailbox_transaction_flags flags
++#if DOVECOT_IS_GE(2, 3)
++ , const char *reason
++#endif
++ )
+ {
+ struct antispam_mailbox *asbox = ANTISPAM_CONTEXT(box);
+ struct mailbox_transaction_context *t;
+ struct antispam_transaction_context *ast;
+ struct antispam_internal_context *aic;
+
+- t = asbox->module_ctx.super.transaction_begin(box, flags);
++ t = asbox->module_ctx.super.transaction_begin(box, flags
++#if DOVECOT_IS_GE(2, 3)
++ , reason
++#endif
++ );
+ aic = i_new(struct antispam_internal_context, 1);
+ ast = antispam_transaction_begin(box);
+ aic->backendctx = ast;
+@@ -472,7 +481,7 @@ static void antispam_mailbox_allocated(struct mailbox *box)