My configuration on new system:
# 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
# Pigeonhole version 2.4.1-4 (0a86619f)
# OS: Linux 6.12.57+deb13-amd64 x86_64 Debian 13.2 ext4

dovecot_config_version = 2.4.1
acl_driver = vfile
auth_allow_weak_schemes = yes
auth_debug = yes
auth_debug_passwords = yes
auth_username_format = %{user|lower}
auth_verbose = yes
doveadm_password = # hidden, use -P to show it
doveadm_port = 12345
dovecot_storage_version = 2.4.1
fts_autoindex = yes
fts_autoindex_max_recent_msgs = 999
fts_search_add_missing = yes
info_log_path = /var/log/dovecot/dovecot-info.log
listen = *
log_path = /var/log/dovecot/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k
mail_debug = yes
mail_driver = maildir
mail_home = /var/vmail/%{user | domain}/%{user | username }
mail_inbox_path = .
mail_max_userip_connections = 500
mail_path = /var/vmail/%{user | domain}/%{user | username }/
mail_plugins = notify quota push_notification quota_clone acl fts fts_solr
mail_privileged_group = mail
protocols {
  imap = yes
  sieve = yes
  lmtp = yes
  pop3 = yes
}
quota_exceeded_message = Benutzer %{user} hat das Speichervolumen 
ueberschritten. / User %{user} has exhausted allowed storage space.
sieve_global_extensions {
  vnd.dovecot.pipe = yes
}
sieve_max_redirects = 10
sieve_max_script_size = 1M
sieve_plugins {
  sieve_imapsieve = yes
  sieve_extprograms = yes
}
sql_driver = mysql
ssl_cipher_list = 
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
verbose_proctitle = yes
mysql /var/run/mysqld/mysqld.sock {
  dbname = postfix
  password = # hidden, use -P to show it
  user = postfix
}
passdb sql {
  query = SELECT username AS user, CONCAT('{CRYPT}', password) AS password FROM 
mailbox WHERE username = '%{user}' AND active = true;
}
userdb sql {
  iterate_query = SELECT username AS user FROM mailbox WHERE active = true;
  query = SELECT 5000 AS uid, 5000 AS gid, CONCAT('/var/vmail/', 
SUBSTRING_INDEX(username,'@',-1), '/', SUBSTRING_INDEX(username,'@',1)) AS 
home, CONCAT('maildir:/var/vmail/', SUBSTRING_INDEX(username,'@',-1), '/', 
SUBSTRING_INDEX(username,'@',1)) AS mail, CONCAT(quota,'M') AS 
quota_storage_size FROM mailbox WHERE username = '%{user}' AND active = true;
}
namespace inbox {
  inbox = yes
  prefix = .INBOX.
  separator = /
  type = private
  mailbox Drafts {
    special_use = "\\Drafts"
  }
  mailbox Archive {
  }
  mailbox Junk {
    special_use = "\\Junk"
  }
  mailbox Sent {
    special_use = "\\Sent"
  }
  mailbox Trash {
    special_use = "\\Trash"
    quota_storage_extra = 100M
    quota_storage_percentage = 110
  }
  mailbox "Sent Messages" {
    special_use = "\\Sent"
  }
}
namespace shared {
  list = yes
  prefix = Shared.
  separator = .
  subscriptions = yes
  type = shared
}
namespace public {
  list = yes
  prefix = Public.
  separator = .
  subscriptions = yes
  type = public
  mailbox Announcements {
    auto = subscribe
  }
}
service imap-login {
  inet_listener imap {
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
  }
  inet_listener pop3s {
  }
}
service submission-login {
  inet_listener submission {
  }
}
service imap {
  executable = imap
  process_limit = 1024
  process_min_avail = 2
  vsz_limit = 1G
}
service pop3 {
}
service submission {
}
service auth {
  user = root
  unix_listener /var/spool/postfix/private/auth_dovecot {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    mode = 0600
    user = vmail
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
}
service auth-worker {
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0660
    user = vmail
  }
}
ssl_server {
  cert_file = /etc/letsencrypt/live/mx1.germany.com/fullchain.pem
  key_file = /etc/letsencrypt/live/mx1.germany.com/privkey.pem
}
service doveadm {
  inet_listener doveadm_listener {
    port = 12345
  }
}
protocol imap {
  imap_idle_notify_interval = 29 mins
  mail_max_userip_connections = 50
  mail_plugins = quota quota_clone imap_quota imap_acl acl fts fts_solr
}
protocol lmtp {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugins {
    sieve = yes
    notify = yes
    push_notification = yes
  }
  postmaster_address = [email protected]
}
service managesieve-login {
  process_min_avail = 2
  vsz_limit = 128 M
  inet_listener sieve {
    port = 4190
  }
  inet_listener sieve_deprecated {
    port = 2000
  }
}
service managesieve {
  process_limit = 256
}
protocol sieve {
  managesieve_logout_format = bytes=%i/%o
  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
}
dict_server {
  dict mysql {
    driver = sql
    sql_driver = mysql
    dict_map priv/quota/messages {
      sql_table = quota
      username_field = username
      dict_map_value_field messages {
      }
    }
    dict_map priv/quota/storage {
      sql_table = quota
      username_field = username
      dict_map_value_field bytes {
      }
    }
  }
}
acl_sharing_map {
  dict file {
    path = /var/vmail/shared-mailboxes.db
  }
}
quota "User quota" {
  driver = count
  storage_size = 1G
}
quota_clone {
  dict proxy {
    name = mysql
  }
}
sieve_script personal {
  active_path = /var/vmail/sieve/%{user | domain }/%{user | username 
}/active-script.sieve
  driver = file
  path = /var/vmail/sieve/%{user | domain }/%{user | username }/scripts
  type = personal
}
sieve_script global {
  driver = file
  path = /var/vmail/sieve/global.sieve
  type = before
}
sieve_script spam-global {
  path = /var/vmail/sieve/global/spam-global.sieve
  type = before
}
imapsieve_from Spam {
  sieve_script ham {
    cause = copy
    path = /var/vmail/sieve/global/learn-ham.sieve
    type = before
  }
}




On the old system Bookworm an Dovecot 2.3 it looks like:
# 2.3.19.1 (9b53102964): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.19 (4eae2f79)
# OS: Linux 6.1.0-40-amd64 x86_64 Debian 12.12 
dict {
  sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
doveadm_password = # hidden, use -P to show it
doveadm_port = 12345
info_log_path = /var/log/dovecot/dovecot-info.log
listen = *
log_path = /var/log/dovecot/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k
mail_home = /var/vmail/%d/%n
mail_location = maildir:~/
mail_max_userip_connections = 500
mail_plugins = quota acl fts fts_solr
mail_privileged_group = mail
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 {
  list = yes
  location = maildir:%%h/:INDEXPVT=~/Shared/%%u
  prefix = Shared/%%u/
  separator = /
  subscriptions = no
  type = shared
}
namespace inbox {
  inbox = yes
  location = 
  mailbox Archief {
    special_use = \Archive
  }
  mailbox Archiv {
    special_use = \Archive
  }
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Archives {
    special_use = \Archive
  }
  mailbox Arquivo {
    special_use = \Archive
  }
  mailbox Arquivos {
    special_use = \Archive
  }
  mailbox Brouillons {
    special_use = \Drafts
  }
  mailbox Concepten {
    special_use = \Drafts
  }
  mailbox Corbeille {
    special_use = \Trash
  }
  mailbox "Deleted Items" {
    special_use = \Trash
  }
  mailbox "Deleted Messages" {
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Entwürfe {
    special_use = \Drafts
  }
  mailbox Enviados {
    special_use = \Sent
  }
  mailbox Envoyés {
    special_use = \Sent
  }
  mailbox "Gelöschte Objekte" {
    special_use = \Trash
  }
  mailbox Gesendet {
    special_use = \Sent
  }
  mailbox "Gesendete Objekte" {
    special_use = \Sent
  }
  mailbox "Itens Enviados" {
    special_use = \Sent
  }
  mailbox "Itens Excluídos" {
    special_use = \Trash
  }
  mailbox "Itens Excluidos" {
    special_use = \Trash
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox "Junk E-mail" {
    special_use = \Junk
  }
  mailbox Lixeira {
    special_use = \Trash
  }
  mailbox "Lixo Eletrônico" {
    special_use = \Junk
  }
  mailbox "Messages envoyés" {
    special_use = \Sent
  }
  mailbox "Ongewenste e-mail" {
    special_use = \Junk
  }
  mailbox Papierkorb {
    special_use = \Trash
  }
  mailbox Prullenbak {
    special_use = \Trash
  }
  mailbox Quarantine {
    auto = subscribe
    comment = Mail containing viruses
  }
  mailbox Rascunhos {
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Items" {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spam {
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox "Verwijderde items" {
    special_use = \Trash
  }
  mailbox Verzonden {
    special_use = \Sent
  }
  mailbox "Verzonden items" {
    special_use = \Sent
  }
  prefix = 
  separator = /
}
passdb {
  driver = pam
}
passdb {
  args = /etc/dovecot/dovecot-mysql.conf
  driver = sql
}
plugin {
  acl = vfile
  acl_anyone = allow
  acl_shared_dict = file:/var/vmail/shared-mailboxes.db
  mail_replica = tcp:192.168.2.6
  quota = dict:Userquota::proxy::sqlquota
  quota_rule2 = Trash:storage=+100%%
  recipient_delimiter = +
  sieve = /var/vmail/%d/%n/sieve/active-script.sieve
  sieve_before = /var/vmail/sieve/global.sieve
  sieve_dir = /var/vmail/%d/%n/sieve/scripts/
  sieve_max_script_size = 1M
  sieve_quota_max_scripts = 0
  sieve_quota_max_storage = 0
}
protocols = imap sieve lmtp pop3
replication_dsync_parameters = -d -n INBOX -l 30 -U
replication_full_sync_interval = 2 mins
service aggregator {
  fifo_listener replication-notify-fifo {
    user = vmail
  }
  unix_listener replication-notify {
    user = vmail
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth_dovecot {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    mode = 0600
    user = vmail
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  user = root
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0660
    user = vmail
  }
}
service doveadm {
  inet_listener {
    port = 12345
  }
}
service imap {
  process_limit = 1024
  vsz_limit = 1 G
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
  user = vmail
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
  process_min_avail = 2
  service_count = 1
  vsz_limit = 128 M
}
service managesieve {
  process_limit = 256
}
service replicator {
  process_min_avail = 1
  unix_listener replicator-doveadm {
    mode = 0600
    user = vmail
  }
}
ssl_cert = </etc/letsencrypt/live/mx1.germany.com/fullchain.pem
ssl_cipher_list = 
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
ssl_key = # hidden, use -P to show it
userdb {
  driver = passwd
}
userdb {
  args = /etc/dovecot/dovecot-mysql.conf
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugins = quota sieve acl fts fts_solr
  postmaster_address = [email protected]
}
protocol imap {
  mail_plugins = quota imap_quota imap_acl acl fts fts_solr
}
protocol sieve {
  managesieve_logout_format = bytes=%i/%o
}
remote 127.0.0.1 {
  disable_plaintext_auth = no
}
_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to