diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index 0d506399b77c3906dd60cf9f4bd4873292bd8f8c..52bed3e8de2237bf6393bdb097c030f6670603d4 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -179,6 +179,9 @@ void sieve_message_context_unref(struct sieve_message_context **msgctx)
 
 	sieve_message_context_clear(*msgctx);
 
+	if ( (*msgctx)->context_pool != NULL )
+		pool_unref(&((*msgctx)->context_pool));
+
 	i_free(*msgctx);
 	*msgctx = NULL;
 }