diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-plugin.c b/src/plugins/doveadm-sieve/doveadm-sieve-plugin.c
index 120f49842529d652095407b2c3a123e701450bf2..7b9156a66e05100dae59519952d28c41de518cce 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-plugin.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-plugin.c
@@ -323,7 +323,7 @@ sieve_attribute_set(struct mailbox_transaction_context *t,
 	union mailbox_module_context *sbox = SIEVE_MAIL_CONTEXT(t->box);
 	time_t ts = value->last_change != 0 ? value->last_change : ioloop_time;
 
-	if (t->box->storage->user->admin &&
+	if (t->box->storage->user->dsyncing &&
 	    type == MAIL_ATTRIBUTE_TYPE_PRIVATE &&
 	    strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_SIEVE,
 		    strlen(MAILBOX_ATTRIBUTE_PREFIX_SIEVE)) == 0) {
@@ -460,7 +460,7 @@ sieve_attribute_get(struct mailbox_transaction_context *t,
 {
 	union mailbox_module_context *sbox = SIEVE_MAIL_CONTEXT(t->box);
 
-	if (t->box->storage->user->admin &&
+	if (t->box->storage->user->dsyncing &&
 	    type == MAIL_ATTRIBUTE_TYPE_PRIVATE &&
 	    strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_SIEVE,
 		    strlen(MAILBOX_ATTRIBUTE_PREFIX_SIEVE)) == 0)
@@ -503,7 +503,8 @@ sieve_attribute_iter_init(struct mailbox *box, enum mail_attribute_type type,
 	siter->iter.box = box;
 	siter->super = sbox->super.attribute_iter_init(box, type, prefix);
 
-	if (box->storage->user->admin && type == MAIL_ATTRIBUTE_TYPE_PRIVATE &&
+	if (box->storage->user->dsyncing &&
+	    type == MAIL_ATTRIBUTE_TYPE_PRIVATE &&
 	    strncmp(prefix, MAILBOX_ATTRIBUTE_PREFIX_SIEVE,
 		    strlen(prefix)) == 0) {
 		if (sieve_attribute_iter_script_init(siter) < 0)