Config below.
I assumed the same at first, but deliveries for other "details" work
without issues. Dovecot's 'subscriptions' file is present in the
maildir
which seems to conflict with the mailbox lookup.
Dejan
-----
# 2.3.18 (9dd8408c18): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.18 (0bc28b32)
# OS: FreeBSD 13.0-RELEASE-p13 amd64 zfs
auth_cache_negative_ttl = 0
auth_cache_ttl = 0
auth_failure_delay = 8 secs
auth_master_user_separator = *
auth_mechanisms = plain login
default_client_limit = 10000
default_process_limit = 1000
default_vsz_limit = 2 G
first_valid_gid = 500
imap_idle_notify_interval = 5 mins
last_valid_gid = 10000
last_valid_uid = 10000
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
listen = ::
lmtp_save_to_detail_mailbox = yes
log_path = /var/log/dovecot
mail_attribute_dict = file:%h/Maildir/dovecot-attributes
mail_gid = 10000
mail_location =
maildir:/var/mails/%Ld/%Ln/Maildir:LAYOUT=fs:INDEX=/var/mails/%Ld/%Ln/flatcurve_index
mail_plugins = " zlib quota quota_clone welcome fts fts_flatcurve"
mail_save_crlf = yes
mail_uid = 10000
mail_vsize_bg_after_count = 100
mailbox_list_index_very_dirty_syncs = yes
maildir_empty_new = yes
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 imapsieve vnd.dovecot.imapsieve
metric auth_failures {
filter = event=auth_request_finished AND NOT success=yes
}
metric auth_success {
filter = event=auth_request_finished AND success=yes
}
metric imap_command {
filter = event=imap_command_finished
group_by = cmd_name tagged_reply_state
}
metric mail_delivery {
filter = event=mail_delivery_finished
group_by = duration:exponential:1:5:10
}
metric smtp_command {
filter = event=smtp_server_command_finished
group_by = cmd_name status_code duration:exponential:1:5:10
}
namespace inbox {
inbox = yes
location mailbox Archive {
auto = create
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
autoexpunge = 30 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
auto = subscribe
autoexpunge = 60 days
special_use = \Trash
}
prefix separator = /
}
passdb {
args = /usr/local/etc/dovecot/deny.%s
deny = yes
driver = passwd-file
}
passdb {
args = /usr/local/etc/dovecot/master-users
driver = passwd-file
master = yes
pass = yes
}
passdb {
args = scheme=SHA512-CRYPT username_format=%u
/usr/local/etc/dovecot/passwd
default_fields = ssl=any-cert userdb_home=/var/mails/%Ld/%Ln
userdb_uid=10000 userdb_gid=10000
driver = passwd-file
}
passdb {
args = scheme=SHA512-CRYPT username_format=%u
/usr/local/etc/dovecot/passwd-tmp
default_fields = ssl=any-cert userdb_home=/var/mails/%Ld/%Ln
userdb_uid=10000 userdb_gid=10000
driver = passwd-file
}
plugin {
fts = flatcurve
fts_flatcurve_commit_limit = 500
fts_flatcurve_max_term_size = 30
fts_flatcurve_min_term_size = 2
fts_flatcurve_optimize_limit = 10
fts_flatcurve_rotate_size = 5000
fts_flatcurve_rotate_time = 5000
fts_flatcurve_substring_search = no
fts_languages = en es de da fi fr it nl no pt ro ru sv tr
fts_tokenizer_generic = algorithm=simple
fts_tokenizers = generic email-address
imapsieve_mailbox1_before =
file:/usr/local/etc/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY APPEND
imapsieve_mailbox1_name = Junk
imapsieve_mailbox2_before =
file:/usr/local/etc/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_name = *
last_login_dict = redis:host=127.0.0.1:port=6379:db=1
quota = count:Mailbox quota
quota_clone_dict = redis:host=127.0.0.1:port=6379:db=1
quota_max_mail_size = 800M
quota_vsizes = yes
recipient_delimiter = +
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_before = /usr/local/etc/dovecot/sieve/global.sieve
sieve_before2 = /var/mails/%Ld/%Ln/sieve-before
sieve_default_name = Master Script
sieve_duplicate_default_period = 1h
sieve_duplicate_max_period = 1d
sieve_editheader_max_header_size = 1k
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
+editheader
sieve_max_redirects = 25
sieve_pipe_bin_dir = /usr/local/etc/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_quota_max_scripts = 20
sieve_redirect_envelope_from = recipient
sieve_vacation_default_period = 7d
sieve_vacation_dont_check_recipient = no
sieve_vacation_max_period = 0
sieve_vacation_min_period = 1d
sieve_vacation_send_from_recipient = yes
welcome_script = welcome %d %n
}
protocols = imap pop3 lmtp sieve
service auth-worker {
client_limit = 1
process_limit = 50
service_count = 1
user = $default_internal_user
}
service auth {
client_limit = 25000
process_limit = 1
unix_listener auth-userdb {
group = $default_internal_user
mode = 0666
user = $default_internal_user
}
user = $default_internal_user
}
service dict {
process_limit = 6
user = $default_internal_user
}
service doveadm {
inet_listener {
port = 9999
ssl = yes
}
inet_listener http {
port = 9010
ssl = yes
}
vsz_limit = 2 G
}
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
process_min_avail = 12
service_count = 0
vsz_limit = 1 G
}
service imap {
client_limit = 1
idle_kill = 5 mins
process_limit = 10000
service_count = 1
vsz_limit = 2 G
}
service indexer-worker {
process_limit = 25
vsz_limit = 2 G
}
service lmtp {
inet_listener lmtp {
port = 24
ssl = yes
}
process_limit = 500
process_min_avail = 10
vsz_limit = 2 G
}
service managesieve-login {
client_limit = 1000
inet_listener sieve {
port = 4190
ssl = yes
}
process_min_avail = 6
service_count = 0
vsz_limit = 512 M
}
service managesieve {
process_limit = 1024
}
service pop3-login {
inet_listener pop3 {
port = 0
}
inet_listener pop3s {
port = 995
ssl = yes
}
process_min_avail = 12
service_count = 0
vsz_limit = 1 G
}
service pop3 {
client_limit = 1
idle_kill = 5 mins
process_limit = 10000
service_count = 200
vsz_limit = 2 G
}
service stats {
inet_listener http {
port = 9900
}
}
service submission-login {
inet_listener submission {
port = 0
}
}
service welcome {
executable = script /usr/local/etc/dovecot/welcome/welcome.sh
unix_listener welcome {
user = vmail
}
user = vmail
}
ssl = required
ssl_cipher_list =
ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW
at STRENGTH
ssl_client_ca_file = /usr/local/etc/dovecot/ca-chain.cert.pem
ssl_prefer_server_ciphers = yes
submission_host = [::1]:9125
userdb {
args = username_format=%u /usr/local/etc/dovecot/passwd
default_fields = home=/var/mails/%Ld/%Ln uid=10000 gid=10000
driver = passwd-file
}
userdb {
args = username_format=%u /usr/local/etc/dovecot/passwd-tmp
default_fields = home=/var/mails/%Ld/%Ln uid=10000 gid=10000
driver = passwd-file
}
verbose_proctitle = yes
protocol lmtp {
mail_fsync = optimized
mail_plugins = " zlib quota quota_clone welcome fts fts_flatcurve
sieve last_login"
plugin {
last_login_dict = redis:host=127.0.0.1:port=6379:db=1
}
}
protocol !indexer-worker {
mail_vsize_bg_after_count = 0
}
protocol imap {
imap_metadata = yes
mail_max_userip_connections = 50
mail_plugins = " zlib quota quota_clone welcome fts fts_flatcurve
imap_sieve last_login"
}
protocol sieve {
mail_max_userip_connections = 20
}
protocol pop3 {
mail_plugins = " zlib quota quota_clone welcome fts fts_flatcurve
last_login"
}
On 15.03.23 12:47, Aki Tuomi wrote:>
>> On 15/03/2023 13:12 EET Dejan <me at dejanstrbac.com> wrote:
>>
>>
>>> lmtp_save_to_detail_mailbox = yes
>>
>> Plus-delivery conflicts with existing, reserved files such as
>> "subscriptions":
>>
>> Message for kim+subscriptions@ results in:
>>
>> lmtp(kim@***.com)<14493><SK7sEvaHEWSdOAAAvAYmHA>: Error:
>> ....stat(/var/mails/***/kim/Maildir/subscriptions/tmp) failed: Not a
>> directory
>>
>> Version: 2.3.18
>
> Hi!
>
> Can you provide your doveconf -n output, I think this might be a
misconfiguration.
>
> Aki