#!/bin/sh -x

useradd testuser && (echo testuser |passwd --stdin testuser)  # preparing user 'testuser' with password 'testuser'

# create Maildir storage with one mail for testuser
mkdir -p /home/testuser/Maildir/{cur,new,tmp}
chown -R testuser:testuser /home/testuser

# creating public maildir /var/mail/pub
mkdir -p /var/mail/pub/{cur,new,tmp}
chmod -R a+rwx /var/mail/pub

mkdir -p /etc/dovecot/global-acls/pub
cat > /etc/dovecot/global-acls/pub/.DEFAULT <<-EOF
user=testuser l
EOF

cat >/etc/dovecot/conf.d/99-acltestconfig.conf <<-EOF
mail_debug = yes
mail_location = maildir:~/Maildir

namespace inbox {
  hidden = no
  inbox = yes
  list = yes
  location = 
  prefix = 
  separator = /
}
namespace {
  hidden = no
  list = yes
  location = maildir:/var/mail/pub
  prefix = pub/
  separator = /
  type = public
}
service auth {
  unix_listener auth-userdb {
    mode = 0666
  }
}

mail_plugins = acl

protocol imap {
  mail_plugins = $mail_plugins acl imap_acl
}
plugin {
  acl = vfile:/etc/dovecot/global-acls
}
EOF

systemctl restart dovecot

sleep 2 # for proper initialization or auth-userdb will fail

doveadm -Dv acl debug -u testuser pub

echo -e "\n\nFor comparison with subfolder, where it works\n\nenter to continue"
read foo

# for comparison that while 'pub' is broken, pub/subfolder works
mkdir /etc/dovecot/global-acls/pub/subfolder
cp /etc/dovecot/global-acls/pub/.DEFAULT /etc/dovecot/global-acls/pub/subfolder/.DEFAULT
mkdir -p /var/mail/pub/.subfolder/{cur,new,tmp}
chmod -R a+rwx /var/mail/pub

systemctl restart dovecot

sleep 2 # for proper initialization or auth-userdb will fail

doveadm -Dv acl debug -u testuser pub/subfolder
