shared Folders in der Praxis

Thomas Bäumer thomas at ctrl-c.de
Do Feb 6 21:24:27 CET 2020


Am 06.02.20 um 19:35 schrieb Martin Rabl:
> Hi,
> Ich hatte damit auch mal Probleme, da das Berechtigungssystem des Dovecot, was shared folder betrifft, IMHO ein wenig tricky  (doof) Ist.
> Frage: nutzt Du eine Datenbank zur Verwaltung der Zugriffsrechte?
> Ich müsste nochmal nachsehen, aber unser System hat manchmal eine ordnende Hand :-) in der DB benötigt ... könnte auch eine Fehlkonfiguration gewesen sein. Muss mir die config(deine auch) ansehen.
> 
> Viele Grüße,
>      Martin Rabl


Hallo Martin,

Verwaltung der Zugriffsrechte? Also meine User liegen in einem openldap. 
Von da hole ich neben email-Adresse, Quota und Password auch das homedir 
für die Mails. uid und gid ist statisch auf 1000, was dem Systemuser 
"vmail" entspricht:

# id -a vmail
uid=1000(vmail) gid=1000(vmail) groups=1000(vmail)


# doveadm user alice at domain.tld
field	value
uid	1000
gid	1000
home	/var/vmail/domain.tld/alice/
mail	mdbox:/var/vmail/domain.tld/alice//mdbox
quota_rule	*:bytes=20000000000



(guest-0999)root at ddir01:/etc/dovecot# doveadm user bob at domain.tld
field	value
uid	1000
gid	1000
home	/var/vmail/domain.tld/bob/
mail	mdbox:/var/vmail/domain.tld/bob//mdbox
quota_rule	*:bytes=10000000000



# ls /var/vmail/shared-mailboxes.db
-rw-rw---- 1 vmail vmail 90 Feb  6 16:50 /var/vmail/shared-mailboxes.db



Wobei hier alice=tbals ist. Habe ich dummerweise nicht immer gleich 
anonymisiert.


Klar, meine config kann ich auch zeigen. Das ist jetzt ein "doveconf -n"


# 2.3.9.2 (cf2918cac): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.9 (db4e9a2f)
# OS: Linux 4.15.0-72-generic x86_64 Ubuntu 18.04.4 LTS
# Hostname: imap.domain.tld
auth_debug = yes
auth_master_user_separator = *
auth_mechanisms = plain login
auth_verbose = yes
disable_plaintext_auth = no
mail_attachment_dir = /var/vmail/%d/mail_attachments
mail_attachment_hash = %{sha256}
mail_debug = yes
mail_location = mdbox:%h/mdbox
mail_plugins = zlib acl quota
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date index ihave duplicate mime foreverypart extracttext
namespace {
   hidden = no
   inbox = no
   list = children
   location = mdbox:%%h/mdbox
   prefix = shared/%%u/
   separator = /
   subscriptions = yes
   type = shared
}
namespace inbox {
   hidden = no
   inbox = yes
   list = yes
   location =
   mailbox Drafts {
     auto = subscribe
     special_use = \Drafts
   }
   mailbox Junk {
     auto = subscribe
     special_use = \Junk
   }
   mailbox Sent {
     auto = subscribe
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     special_use = \Sent
   }
   mailbox Trash {
     auto = subscribe
     special_use = \Trash
   }
   prefix = INBOX/
   separator = /
   subscriptions = yes
   type = private
}
passdb {
   args = /etc/dovecot/master-users
   driver = passwd-file
   master = yes
}
passdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
plugin {
   acl = vfile
   acl_shared_dict = file:/var/vmail/shared-mailboxes.db
   quota = dict:User quota::file:%h/dovecot-quota
   quota_grace = 10%%
   quota_rule = *:storage=1G
   quota_status_nouser = DUNNO
   quota_status_overquota = 552 5.2.2 Mailbox is full / Mailbox ist voll
   quota_status_success = DUNNO
   sieve = file:%h/sieve;active=%h/sieve.active
   sieve_max_actions = 32
   sieve_max_redirects = 4
   sieve_max_script_size = 1M
   zlib_save = gz
   zlib_save_level = 6
}
protocols = " imap lmtp sieve"
service auth {
   unix_listener /var/spool/postfix/private/auth {
     mode = 0666
   }
   unix_listener auth-userdb {
     group = vmail
     user = vmail
   }
}
service lmtp {
   inet_listener lmtp {
     port = 24
   }
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service quota-status {
   client_limit = 1
   executable = quota-status -p postfix
   inet_listener {
     port = 12340
   }
}
ssl_cert = </etc/ssl/private/domain.tld.cert
ssl_key = # hidden, use -P to show it
userdb {
   driver = prefetch
}
userdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
verbose_proctitle = yes
protocol lmtp {
   mail_plugins = zlib acl quota sieve
   postmaster_address = postmaster at domain.tld
}
protocol imap {
   mail_plugins = zlib acl quota imap_zlib imap_acl imap_quota
}



Was im logfile aus meiner letzten Mail auffällt, ist die letzte Zeile hier:

Debug: acl: initializing backend with data: vfile
Debug: acl: acl username = tbals
Debug: acl: owner = 0
Debug: acl vfile: Global ACLs disabled
Debug: Namespace : type=private, prefix=, sep=, inbox=no, hidden=yes, 
list=no, subscriptions=no location=fail::LAYOUT=none


Da steht kein prefix mehr und bei location steht ein "fail". Ich 
verstehe aber nicht wieso.


Gruss
   Thomas


Mehr Informationen über die Mailingliste Dovecot