Hi Markus,
This ist the way I configured "shares" and it's still working: (German language)
https://dokuwiki.tachtler.net/doku.php?id=tachtler:dovecot_archlinux_-_share...
Greetings Klaus.
20.08.2026 18:55:31 Markus Schönhaber via dovecot <dovecot@dovecot.org>:
20.08.26, 15:39 +0200, Markus Schönhaber via dovecot:
I have configured this (full doveconf -n output attached):
The list seems to strip text attachments. Therefore the doveconf -n output inline:
2.4.4-5+debian13 (8b687aa65c): /etc/dovecot/dovecot.conf
Pigeonhole version 2.4.4-5+debian13 (3beb331a)
OS: Linux 7.1.8-1-MANJARO x86_64 Debian 13.6 btrfs
Hostname: dovecot-template
dovecot_config_version = 2.4.4 acl_driver = vfile auth_master_user_separator = * auth_mechanisms = plain login dovecot_storage_version = 2.4.4 log_debug = category=mail login_log_format_elements = user=<%{user}> method=%{mechanism} rip=%{remote_ip} lip=%{local_ip} lport=%{local_port} mpid=%{mail_pid} %{secured} mail_driver = mdbox mail_gid = vmail mail_home = /var/spool/vmail/home/%{user | domain}/%{user | username} mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size mail_path = /var/spool/vmail/mail/%{user | domain}/%{user | username} mail_plugins = quota acl mail_uid = vmail postmaster_address = postmaster@example.org protocols = imap sieve sieve_global_extensions { vnd.dovecot.environment = yes vnd.dovecot.execute = yes vnd.dovecot.pipe = yes } sieve_pipe_bin_dir = /var/spool/vmail/home/3-imapsieve sieve_plugins = sieve_imapsieve sieve_extprograms sieve_redirect_envelope_from = orig_recipient sql_driver = mysql verbose_proctitle = yes mysql localhost { dbname = postfixadmin password = # hidden, use -P to show it user = postfixadmin } passdb sql { driver = sql query = SELECT mailbox.username AS user, mailbox.password AS password, CONCAT(mailbox.quota, 'B') AS userdb_quota_storage_size, 'vmail' AS userdb_uid, 'vmail' AS userdb_gid FROM mailbox INNER JOIN domain ON mailbox.domain = domain.domain WHERE mailbox.username = '%{user}' AND mailbox.active = '1' AND domain.active = '1' } userdb prefetch { driver = prefetch } userdb sql { driver = sql iterate_query = SELECT username AS user FROM mailbox WHERE active = 1 query = SELECT username AS user, 'vmail' AS uid, 'vmail' AS gid, CONCAT(quota, 'B') AS quota_storage_size FROM mailbox WHERE username = '%{user}' AND active='1' } event_exporter log { driver = log format = json time_format = rfc3339 } metric imap_id { exporter = log filter = event=imap_id_received } namespace public { mail_home = /var/spool/vmail/home/Public mail_path = /var/spool/vmail/mail/Public list = children prefix = Public/ separator = / subscriptions = no type = public } namespace shared { mail_home = /var/spool/vmail/home/%{owner_domain}/%{owner_username} list = children prefix = shared/$domain/$username/ separator = / subscriptions = no type = shared } namespace inbox { inbox = yes separator = / } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } } ssl_server { cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem key_file = /etc/ssl/private/ssl-cert-snakeoil.key } protocol imap { mail_plugins { imap_acl = yes imap_quota = yes imap_sieve = yes } } acl_sharing_map { dict file { path = /var/spool/vmail/home/shared-mailboxes } } quota "User quota" { } dict_server { dict mysql { driver = sql sql_driver = mysql dict_map priv/quota/messages { sql_table = quota2 username_field = username dict_map_value_field messages { } } dict_map priv/quota/storage { sql_table = quota2 username_field = username dict_map_value_field bytes { } } } } quota_clone { dict proxy { name = mysql } } sieve_script personal { active_path = ~/.dovecot.sieve driver = file path = ~/sieve } sieve_script after-0 { driver = file path = /var/spool/vmail/home/1-global/sieve/after type = after } sieve_script before-0 { driver = file path = /var/spool/vmail/home/1-global/sieve/before type = before }
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
--