diff --git a/src/lib-sieve/util/edit-mail.c b/src/lib-sieve/util/edit-mail.c
index 368b3ab5c8ac28e566a3ed21741d74e9e99b2fb2..8b6f0d5419da38f2d18a58acf8fe639316d4f668 100644
--- a/src/lib-sieve/util/edit-mail.c
+++ b/src/lib-sieve/util/edit-mail.c
@@ -1601,12 +1601,13 @@ static int edit_mail_get_special
 	return edmail->wrapped->v.get_special(&edmail->wrapped->mail, field, value_r);
 }
 
-static struct mail *
-edit_mail_get_real_mail(struct mail *mail)
+static int
+edit_mail_get_backend_mail(struct mail *mail, struct mail **real_mail_r)
 {
 	struct edit_mail *edmail = (struct edit_mail *)mail;
 
-	return edit_mail_get_mail(edmail);
+	*real_mail_r = edit_mail_get_mail(edmail);
+	return 0;
 }
 
 static void edit_mail_update_flags
@@ -1690,7 +1691,7 @@ static struct mail_vfuncs edit_mail_vfuncs = {
 	edit_mail_get_stream,
 	index_mail_get_binary_stream,
 	edit_mail_get_special,
-	edit_mail_get_real_mail,
+	edit_mail_get_backend_mail,
 	edit_mail_update_flags,
 	edit_mail_update_keywords,
 	edit_mail_update_modseq,