Hey there,

I have a problem with authenticating users to submailboxes through wildcards.
I know that there is no acl-inheritance

but it also says, that I can use wildcards in mailboxes here
wiki2.dovecot.org
Wiki has been closed
.

I’ve tried to authenticate a user with different approaches
docker-compose exec dovecot-mailcow doveadm acl set -u person@mailserver.tld "Public/Folder1/*" user=person@mailserver.tld lookup read write write-seen write-deleted insert post expunge create

docker-compose exec dovecot-mailcow doveadm acl set -u person@mailserver.tld "Public/Folder1*" user=person@mailserver.tld lookup read write write-seen write-deleted insert post expunge create

docker-compose exec dovecot-mailcow doveadm acl set -u person@mailserver.tld "Public/Folder1/?" user=person@mailserver.tld lookup read write write-seen write-deleted insert post expunge create

docker-compose exec dovecot-mailcow doveadm acl set -u person@mailserver.tld "Public/Folder1?" user=person@mailserver.tld lookup read write write-seen write-deleted insert post expunge create

docker-compose exec dovecot-mailcow doveadm acl set -u person@mailserver.tld "Public/Fold*" user=person@mailserver.tld lookup read write write-seen write-deleted insert post expunge create

docker-compose exec dovecot-mailcow doveadm acl set -u person@mailserver.tld "Public/Fold?" user=person@mailserver.tld lookup read write write-seen write-deleted insert post expunge create

But none of these acutally worked. Can anyone help me out with this? I’ve already googled it and only found a mailgroup where someone is asking the same question, but without any answer.

I know that new mailboxes inherit the acl from it’s parent mailboxes, but I want to set the acl recursive for new user, after alle mailboxes are created. Is this possible?

8 days later

yaaay this is goddamn problem i have been working on today ….
But here is the way you have to go,

with your doveadm acl set …. string, you just allow access to the “root” folders within the public thingy.
nothing more.
now you have to script:

  • go to filesystemlevel
  • go to /path/to/public

find . -name “DIRECTORY1” > /path/to/outside/dir1.pub
sed : - extract the single line with the “root” DIRECTORY1
- excape POSIX Space and ( ) if there are any

cp /path/to/public/.DIRECTORY1/dovecot-acl to every other dir with DIRECTORY1

reload SoGo, clear cache active sync ….

et voila….

cat set-rights.sh

#!/bin/bash
cd /var/docker/mailcow-dockerized/payload/vmail-vol-1/public

Subfolder=$1
len=$(( ${#Subfolder} + 3 ))

#  PublicFolders
find . -name "*"$Subfolder"*" > /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub
sed -i.bak -r "/^.{,$len}$/d" /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub
sed -i.bak -r 's#./##g' /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub
sed -i.bak -e 's/[[:space:]]/\\ /g' /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub
sed -i.bak -i 's/(/\\(/g' /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub
sed -i.bak -i 's/)/\\)/g' /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub


#Remive dos flag
dos2unix /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub

# copy ACLs
awk '{ system (" cp /var/docker/mailcow-dockerized/payload/vmail-vol-1/public/.'$1'/dovecot-acl /var/docker/mailcow-dockerized/payload/vmail-vol-1/public/"$0"/dovecot-acl") }' < /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub

#test
#awk '{ system (" echo /path/to/public/.'$1'/dovecot-acl /path/to/public/"$0"/dovecot-acl") }' < /var/docker/mailcow-dockerized/helper-scripts/$Subfolder.pub
#change owner back to 5000

chown 5000:5000 -R /var/docker/mailcow-dockerized/payload/vmail-vol-1/public/

i have outsourced my volumes … do not mind ….

now i can do ./set-rights.sh DIRECTORY1
and all the damn folders under this directory are overwritten with permissions from the top folder.

adapt i you like

(( i’m an admin not a dev, its ugly but works 🙂 ))

Have something to say?

Join the community by quickly registering to participate in this discussion. We'd like to see you joining our great moo-community!

Hey p0wer. Sorry for the late reply.
Your script works almost like a charm. I was really excited 😃
The only thing that was problematic was that it doesn’t recognize german umlauts. So I added sed -i.bak -i 's/&/\\&/g to your script.
I also changed it a bit, so that you only have to change two settings to get it working in your environment.


# Only change these settings!
# mailcowfolder = Folder where you "installed" your mailcow docker instance
# mailcowvolumes = Folder where the public folders are stored
# Normally docker volumes are stored under "/var/lib/docker/volumes/"
# If so, the structure should look like:
# /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/public"
mailcowfolder=/opt/mailcow-dockerized
mailcowvolumes=/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/rathaus

# You don't have to change anything from here on.

# Create a variable for the sent parameter and change to the mailcow volumes
Subfolder=$1
len=$(( ${#Subfolder} + 3 ))
cd $mailcowvolumes

#  Generate a list of all subfolder from the given public folder name
find . -name "*"$Subfolder"*" > $mailcowfolder/helper-scripts/$Subfolder.pub
sed -i.bak -r "/^.{,$len}$/d" $mailcowfolder/helper-scripts/$Subfolder.pub
sed -i.bak -r 's#./##g' $mailcowfolder/helper-scripts/$Subfolder.pub
sed -i.bak -e 's/[[:space:]]/\\ /g' /$mailcowfolder/helper-scripts/$Subfolder.pub
sed -i.bak -i 's/(/\\(/g' $mailcowfolder/helper-scripts/$Subfolder.pub
sed -i.bak -i 's/)/\\)/g' $mailcowfolder/helper-scripts/$Subfolder.pub
sed -i.bak -i 's/&/\\&/g' $mailcowfolder/helper-scripts/$Subfolder.pub


#Remive dos flag
dos2unix $mailcowfolder/helper-scripts/$Subfolder.pub

# copy ACLs
awk '{ system (" cp '$mailcowvolumes'/.'$1'/dovecot-acl '$mailcowvolumes'/"$0"/dovecot-acl") }' < $mailcowfolder/helper-scripts/$Subfolder.pub

#change owner back to 5000
chown 5000:5000 -R $mailcowvolumes

I’ve tested this script on a few mailboxes and it seems to work. It converts german umlauts and folders with paragraphs as well.

Again. Thank you for your help p0wer This was one thing that really bugged me with mailcow/dovecot and you got rid of it 😃

  • p0wer

      Moolevel 9

    Und jetzt wo wir das geklärt haben, mach Ma nen GUI draus

    Nur um das Klarzustellen. Ich bin auch Admin und kein Entwickler 😉
    Und ich habe noch viel zum Thema skripten zu lernen. Ich wäre z.B. nie auf sed oder awk gekommen.

    No one is typing