problem with a public folder

David Mehler dave.mehler at gmail.com
Sat Apr 25 22:23:10 EEST 2020


Hello,

Thanks for all the replies.

I've added a mailbox to the namespace definition for the public
folders. I can do a doveadm acl get -A "Public/general" works but
"Public/TestFolder" does not. Here's my 90-public.conf file:

#cat 90-public.conf
# Public mailboxes
namespace {
  type = public
  separator = /
  prefix = Public/
location = maildir:/var/vmail/public:LAYOUT=fs
subscriptions = yes
list = children
  mailbox general {
     auto = subscribe
  comment = Public Folder for message sharing
   }
  mailbox TestFolder {
     auto = subscribe
  comment = Public Folder
   }
}

With the doveadm acl command something seems off with the user definitions:
#doveadm acl get -A "Public/general"
Username                ID                          Global Rights
user1 at domain.com  user=user1 at domain.com global admin create delete
expunge insert lookup post read write write-deleted write-seen
user2 at domain2.com    user=user1 at domain.com global admin create delete
expunge insert lookup post read write write-deleted write-seen
user2 at domain.com user=user1 at domain.com global admin create delete
expunge insert lookup post read write write-deleted write-seen

#doveadm acl get -A "Public/TestFolder"
Username ID Global Rights

Here's my ls output:
#ls -l /var/vmail/public
total 16
drwx------  5 vmail  vmail  512 Apr 25 13:56 TestFolder/
-rw-------  1 vmail  vmail    0 Apr 25 13:43 dovecot-acl-list
-rw-------  1 vmail  vmail    8 Apr 25 13:47 dovecot-uidvalidity
-r--r--r--  1 vmail  vmail    0 Apr 25 13:47 dovecot-uidvalidity.5ea477b0
-rw-------  1 vmail  vmail  804 Apr 25 13:59 dovecot.list.index.log
drwx------  5 vmail  vmail  512 Apr 25 13:47 general/

Thanks.
Dave.

#doveconf -n
# 2.3.10 (0da0eff44): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.10 (bf8ef1c2)
# OS: FreeBSD 12.1-RELEASE-p3 amd64
# Hostname: hostname at domain.com
auth_cache_size = 10 M
auth_default_realm = domain.com
auth_mechanisms = plain login
auth_realms = domain.com
dict {
  lastlogin = mysql:/usr/local/etc/dovecot/dovecot-last-login.conf
}
first_valid_gid = 2100
first_valid_uid = 2100
hostname = hostname.domain.com
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags
imap_idle_notify_interval = 1 mins
last_valid_gid = 2100
last_valid_uid = 2100
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
lda_original_recipient_header = X-Original-To
listen = xxx.xxx.xxx.xxx
lmtp_rcpt_check_quota = yes
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_access_groups = vmail
mail_fsync = never
mail_gid = vmail
mail_home = /var/vmail/mailboxes/%d/%n
mail_location = dbox:~/mail
mail_plugins = acl fts fts_lucene mail_log notify quota trash virtual
welcome zlib mail_crypt
mail_privileged_group = vmail
mail_server_admin = mailto:postmaster at domain.com
mail_uid = vmail
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 spamtest spamtestplus virustest editheader imapflags
notify imapsieve vnd.dovecot.imapsieve
namespace {
  list = children
  location = maildir:/var/vmail/public:LAYOUT=fs
  mailbox TestFolder {
    auto = subscribe
    comment = Public Folder
  }
  mailbox general {
    auto = subscribe
    comment = Public Folder for message sharing
  }
  prefix = Public/
  separator = /
  subscriptions = yes
  type = public
}
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Spam {
    auto = subscribe
    autoexpunge = 30 days
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    autoexpunge = 30 days
    special_use = \Trash
  }
  prefix =
  separator = /
  type = private
}
passdb {
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  acl = vfile:/usr/local/etc/dovecot/global-acls:cache_secs=300
  fts = lucene
  fts_autoindex = yes
  fts_autoindex_exclude = \Junk
  fts_autoindex_exclude2 = \Trash
  fts_autoindex_exclude3 = \Spam
  fts_autoindex_max_recent_msgs = 80
  fts_index_timeout = 90
  fts_lucene = whitespace_chars=@. normalize no_snowball
  imapsieve_mailbox1_before =
file:/usr/local/lib/dovecot/sieve/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Spam
  imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Spam
  imapsieve_mailbox2_name = *
  last_login_dict = proxy::lastlogin
  last_login_key = # hidden, use -P to show it
  mail_crypt_curve = prime256v1
  mail_crypt_global_private_key = # hidden, use -P to show it
  mail_crypt_global_public_key = # hidden, use -P to show it
  mail_crypt_save_version = 2
  mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
  mail_log_fields = uid box msgid size
  quota = count:User quota
  quota_exceeded_message = Storage quota for this account has been
exceeded, please try again later.
  quota_grace = 10%%
  quota_rule2 = Trash:ignore
  quota_status_nouser = DUNNO
  quota_status_overquota = 552 5.2.2 Mailbox is full
  quota_status_success = DUNNO
  quota_vsizes = true
  quota_warning = storage=100%% quota-exceeded 100 %u
  quota_warning2 = storage=95%% quota-warning 95 %u
  quota_warning3 = storage=90%% quota-warning 90 %u
  quota_warning4 = storage=85%% quota-warning 85 %u
  quota_warning5 = storage=75%% quota-warning 75 %u
  sieve = file:/var/vmail/sieve/%d/%n/scripts;active=/var/vmail/sieve/%d/%n/active-script.sieve
  sieve_before = /var/vmail/sieve/global/spam-global.sieve
  sieve_extensions = +notify +imapflags +spamtest +spamtestplus
+virustest +editheader
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute
+vnd.dovecot.environment
  sieve_max_redirects = 30
  sieve_max_script_size = 1M
  sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
  sieve_plugins = sieve_imapsieve sieve_extprograms
  sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+
\[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\]
  sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+
\[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\]
  sieve_spamtest_status_type = score
  sieve_user_log = /var/vmail/sieve/sieve_error.log
  sieve_virustest_status_header = X-Virus-Scan: Found to be (.+)\.
  sieve_virustest_status_type = text
  sieve_virustest_text_value1 = clean
  sieve_virustest_text_value5 = infected
  trash = /usr/local/etc/dovecot/trash.conf
  welcome_script = welcome %n postmaster@%d
  welcome_wait = yes
}
postmaster_address = postmaster at domain.com
protocols = imap lmtp sieve
sendmail_path = /usr/local/sbin/sendmail
service auth-worker {
  user = vmail
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = vmail
    mode = 0666
    user = vmail
  }
}
service dict {
  unix_listener dict {
    mode = 0600
    user = vmail
  }
  user = root
}
service imap-login {
  inet_listener imap {
    port = 143
  }
  process_min_avail = 1
}
service imap {
  executable = imap
}
service lmtp {
  executable = lmtp
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service managesieve-login {
  inet_listener sieve {
    address = xxx.xxx.xxx.xxx
    port = 4190
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  unix_listener /var/spool/postfix/private/dovecot-quota {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service quota-warning {
  executable = script /usr/local/etc/dovecot/quota-warning.sh
  unix_listener quota-warning {
    group = vmail
    mode = 0660
    user = vmail
  }
  user = vmail
}
service stats {
  unix_listener stats-reader {
    group = vmail
    mode = 0660
    user = vmail
  }
  unix_listener stats-writer {
    group = vmail
    mode = 0660
    user = vmail
  }
}
service welcome {
  executable = script /usr/local/etc/dovecot/welcome.sh
  unix_listener welcome {
    user = vmail
  }
  user = vmail
}
ssl = required
ssl_cert = </usr/local/etc/ssl/acme.sh/domain.com/fullchain.crt
ssl_cipher_list = EECDH+AESGCM:EDH+AESGCM
ssl_curve_list = P-256
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
ssl_options = no_ticket
ssl_prefer_server_ciphers = yes
userdb {
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol lmtp {
  mail_fsync = optimized
  mail_plugins = acl fts fts_lucene mail_log notify quota trash
virtual welcome zlib mail_crypt sieve
}
protocol lda {
  mail_fsync = optimized
  mail_plugins = acl fts fts_lucene mail_log notify quota trash
virtual welcome zlib mail_crypt sieve
}
protocol imap {
  mail_max_userip_connections = 20
  mail_plugins = acl fts fts_lucene mail_log notify quota trash
virtual welcome zlib mail_crypt imap_acl imap_quota imap_sieve
imap_zlib last_login quota welcome
}
protocol sieve {
  info_log_path = /var/log/dovecot/dovecot-sieve.log
  log_path = /var/log/dovecot/dovecot-sieve-errors.log
}


On 4/25/20, Christian Kivalo <ml+dovecot at valo.at> wrote:
>
>
> On April 25, 2020 2:35:20 AM GMT+02:00, David Mehler <dave.mehler at gmail.com>
> wrote:
>>Hello,
>>
>>I'm trying to set up a public folder called TestFolder. I'm getting
>>this error:
>>
>>#doveadm acl get -A "Public/TestFolder"
>>doveadm(username at example.com): Error: Can't open mailbox
>>Public/TestFolder: Mailbox doesn't exist: Public/TestFolder
>>Username ID Global Rights
>
> Have you enabled debug log and what does it show when you run this command?
>
>># ls -ld /var/vmail/public
>>drwx------ 4 vmail vmail 512 Apr 15 23:17 public/
>>
>># ls -ld public/.TestFolder
>>drwx------ 5 vmail vmail 512 Apr 15 23:20 .TestFolder/
>>
>>My goal is a public namespace under which I have several folders for
>>internal communications that users can access, TestFolder being an
>>example.
>>
>>Suggestions welcome.
>>Thanks.
>>Dave.
>>
>>#doveconf -n
>># 2.3.10 (0da0eff44): /usr/local/etc/dovecot/dovecot.conf
>># Pigeonhole version 0.5.10 (bf8ef1c2)
>># OS: FreeBSD 12.1-RELEASE-p3 amd64
>># Hostname: mail.example.com
>>auth_cache_size = 10 M
>>auth_default_realm = example.com
>>auth_mechanisms = plain login
>>auth_realms = example.com
>>dict {
>>  lastlogin = mysql:/usr/local/etc/dovecot/dovecot-last-login.conf
>>}
>>first_valid_gid = 2100
>>first_valid_uid = 2100
>>hostname = mail.example.com
>>imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
>>tb-lsub-flags
>>imap_idle_notify_interval = 1 mins
>>last_valid_gid = 2100
>>last_valid_uid = 2100
>>lda_mailbox_autocreate = yes
>>lda_mailbox_autosubscribe = yes
>>lda_original_recipient_header = X-Original-To
>>listen = xxx.xxx.xxx.xxx
>>lmtp_rcpt_check_quota = yes
>>log_timestamp = "%Y-%m-%d %H:%M:%S "
>>mail_access_groups = vmail
>>mail_fsync = never
>>mail_gid = vmail
>>mail_home = /var/vmail/mailboxes/%d/%n
>>mail_location = dbox:~/mail
>>mail_plugins = acl fts fts_lucene mail_log notify quota trash virtual
>>welcome zlib mail_crypt
>>mail_privileged_group = vmail
>>mail_server_admin = mailto:postmaster at example.com
>>mail_uid = vmail
>>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 spamtest spamtestplus virustest editheader imapflags
>>notify imapsieve vnd.dovecot.imapsieve
>>namespace {
>>location =
>>sdbox:/var/vmail/public/:CONTROL=~/mail/public:INDEX=~/mail/public:INDEXPVT=~/mail/public
>>  prefix = Public/
>>  separator = /
>>  subscriptions = yes
>>  type = public
>>}
>>namespace {
>>  hidden = no
>>  list = yes
>>location =
>>maildir:/var/vmail/shared/office/.Maildir:CONTROL=~/.Maildir/control/office:INDEX=~/.Maildir/index/office
>>  prefix = shared/%%u/
>>  separator = /
>>  subscriptions = yes
>>  type = shared
>>}
>>namespace inbox {
>>  inbox = yes
>>  location =
>>  mailbox Drafts {
>>    auto = subscribe
>>    special_use = \Drafts
>>  }
>>  mailbox Sent {
>>    auto = subscribe
>>    special_use = \Sent
>>  }
>>  mailbox Spam {
>>    auto = subscribe
>>    autoexpunge = 30 days
>>    special_use = \Junk
>>  }
>>  mailbox Trash {
>>    auto = subscribe
>>    autoexpunge = 30 days
>>    special_use = \Trash
>>  }
>>  prefix =
>>  separator = /
>>  type = private
>>}
>>passdb {
>>  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
>>  driver = sql
>>}
>>plugin {
>>  acl = vfile:/usr/local/etc/dovecot/global-acls:cache_secs=300
>>  acl_anyone = allow
>>  fts = lucene
>>  fts_autoindex = yes
>>  fts_autoindex_exclude = \Junk
>>  fts_autoindex_exclude2 = \Trash
>>  fts_autoindex_exclude3 = \Spam
>>  fts_autoindex_max_recent_msgs = 80
>>  fts_index_timeout = 90
>>  fts_lucene = whitespace_chars=@. normalize no_snowball
>>  imapsieve_mailbox1_before =
>>file:/usr/local/lib/dovecot/sieve/report-spam.sieve
>>  imapsieve_mailbox1_causes = COPY
>>  imapsieve_mailbox1_name = Spam
>>imapsieve_mailbox2_before =
>>file:/usr/local/lib/dovecot/sieve/report-ham.sieve
>>  imapsieve_mailbox2_causes = COPY
>>  imapsieve_mailbox2_from = Spam
>>  imapsieve_mailbox2_name = *
>>  last_login_dict = proxy::lastlogin
>>  last_login_key = # hidden, use -P to show it
>>  mail_crypt_curve = prime256v1
>>  mail_crypt_global_private_key = # hidden, use -P to show it
>>  mail_crypt_global_public_key = # hidden, use -P to show it
>>  mail_crypt_save_version = 2
>>mail_log_events = delete undelete expunge copy mailbox_delete
>>mailbox_rename
>>  mail_log_fields = uid box msgid size
>>  quota = count:User quota
>>  quota_exceeded_message = Storage quota for this account has been
>>exceeded, please try again later.
>>  quota_grace = 10%%
>>  quota_rule2 = Trash:ignore
>>  quota_status_nouser = DUNNO
>>  quota_status_overquota = 552 5.2.2 Mailbox is full
>>  quota_status_success = DUNNO
>>  quota_vsizes = true
>>  quota_warning = storage=100%% quota-exceeded 100 %u
>>  quota_warning2 = storage=95%% quota-warning 95 %u
>>  quota_warning3 = storage=90%% quota-warning 90 %u
>>  quota_warning4 = storage=85%% quota-warning 85 %u
>>  quota_warning5 = storage=75%% quota-warning 75 %u
>>sieve =
>>file:/var/vmail/sieve/%d/%n/scripts;active=/var/vmail/sieve/%d/%n/active-script.sieve
>>  sieve_before = /var/vmail/sieve/global/spam-global.sieve
>>  sieve_extensions = +notify +imapflags +spamtest +spamtestplus
>>+virustest +editheader
>>  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute
>>+vnd.dovecot.environment
>>  sieve_max_redirects = 30
>>  sieve_max_script_size = 1M
>>  sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
>>  sieve_plugins = sieve_imapsieve sieve_extprograms
>>  sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+
>>\[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\]
>>  sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+
>>\[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\]
>>  sieve_spamtest_status_type = score
>>  sieve_user_log = /var/vmail/sieve/sieve_error.log
>>  sieve_virustest_status_header = X-Virus-Scan: Found to be (.+)\.
>>  sieve_virustest_status_type = text
>>  sieve_virustest_text_value1 = clean
>>  sieve_virustest_text_value5 = infected
>>  trash = /usr/local/etc/dovecot/trash.conf
>>  welcome_script = welcome %n postmaster@%d
>>  welcome_wait = yes
>>}
>>postmaster_address = postmaster at example.com
>>protocols = imap lmtp sieve
>>sendmail_path = /usr/local/sbin/sendmail
>>service auth-worker {
>>  user = vmail
>>}
>>service auth {
>>  unix_listener /var/spool/postfix/private/auth {
>>    group = postfix
>>    mode = 0660
>>    user = postfix
>>  }
>>  unix_listener auth-userdb {
>>    group = vmail
>>    mode = 0666
>>    user = vmail
>>  }
>>}
>>service dict {
>>  unix_listener dict {
>>    mode = 0600
>>    user = vmail
>>  }
>>  user = root
>>}
>>service imap-login {
>>  inet_listener imap {
>>    port = 143
>>  }
>>  process_min_avail = 1
>>}
>>service imap {
>>  executable = imap
>>}
>>service lmtp {
>>  executable = lmtp
>>  unix_listener /var/spool/postfix/private/dovecot-lmtp {
>>    group = postfix
>>    mode = 0660
>>    user = postfix
>>  }
>>}
>>service managesieve-login {
>>  inet_listener sieve {
>>    address = 172.16.21.3
>>    port = 4190
>>  }
>>}
>>service quota-status {
>>  client_limit = 1
>>  executable = quota-status -p postfix
>>  unix_listener /var/spool/postfix/private/dovecot-quota {
>>    group = postfix
>>    mode = 0660
>>    user = postfix
>>  }
>>}
>>service quota-warning {
>>  executable = script /usr/local/etc/dovecot/quota-warning.sh
>>  unix_listener quota-warning {
>>    group = vmail
>>    mode = 0660
>>    user = vmail
>>  }
>>  user = vmail
>>}
>>service stats {
>>  unix_listener stats-reader {
>>    group = vmail
>>    mode = 0660
>>    user = vmail
>>  }
>>  unix_listener stats-writer {
>>    group = vmail
>>    mode = 0660
>>    user = vmail
>>  }
>>}
>>service welcome {
>>  executable = script /usr/local/etc/dovecot/welcome.sh
>>  unix_listener welcome {
>>    user = vmail
>>  }
>>  user = vmail
>>}
>>ssl = required
>>ssl_cert = </usr/local/etc/ssl/acme.sh/example.com/fullchain.crt
>>ssl_cipher_list = EECDH+AESGCM:EDH+AESGCM
>>ssl_curve_list = P-256
>>ssl_dh = # hidden, use -P to show it
>>ssl_key = # hidden, use -P to show it
>>ssl_min_protocol = TLSv1.2
>>ssl_options = no_ticket
>>ssl_prefer_server_ciphers = yes
>>userdb {
>>  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
>>  driver = sql
>>}
>>protocol lmtp {
>>  mail_fsync = optimized
>>  mail_plugins = acl fts fts_lucene mail_log notify quota trash
>>virtual welcome zlib mail_crypt sieve
>>}
>>protocol lda {
>>  mail_fsync = optimized
>>  mail_plugins = acl fts fts_lucene mail_log notify quota trash
>>virtual welcome zlib mail_crypt sieve
>>}
>>protocol imap {
>>  mail_max_userip_connections = 20
>>  mail_plugins = acl fts fts_lucene mail_log notify quota trash
>>virtual welcome zlib mail_crypt imap_acl imap_quota imap_sieve
>>imap_zlib last_login quota welcome
>>}
>>protocol sieve {
>>  info_log_path = /var/log/dovecot/dovecot-sieve.log
>>  log_path = /var/log/dovecot/dovecot-sieve-errors.log
>>}
>>
>>mail_home = /var/vmail/mailboxes/%d/%n
>>mail_location = dbox:~/mail
>
> --
> Christian Kivalo
>


More information about the dovecot mailing list