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
>