# 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf # Pigeonhole version 2.4.1-4 (0a86619f) # OS: Linux 6.12.48+deb13-cloud-amd64 x86_64 Debian 13.1 # Hostname: $REDACTED # 4 default setting changes since version 2.4.0 dovecot_config_version = 2.4.0 auth_cache_negative_ttl = 1 hour auth_cache_size = 10M auth_cache_ttl = 1 hour auth_cache_verify_password_with_worker = yes auth_debug = yes auth_debug_passwords = yes auth_mechanisms = plain login auth_verbose = yes dovecot_storage_version = 2.4.0 fts_autoindex = yes fts_autoindex_max_recent_msgs = 999 fts_search_add_missing = yes import_environment { CORE_ERROR = %{env:CORE_ERROR} CORE_OUTOFMEM = %{env:CORE_OUTOFMEM} LISTEN_FDS = %{env:LISTEN_FDS} LISTEN_PID = %{env:LISTEN_PID} MALLOC_MMAP_THRESHOLD_ = 131072 NOTIFY_SOCKET = %{env:NOTIFY_SOCKET} PATH = %{env:PATH} TZ = :/etc/localtime } language_filters = normalizer-icu snowball stopwords language_tokenizers = generic email-address mail_driver = mdbox mail_path = ~/mdbox mail_plugins { quota = yes fts = yes fts_flatcurve = yes } mail_privileged_group = vmail passdb_default_password_scheme = BLF-CRYPT protocols = imap lmtp sieve sieve_execute_bin_dir = /etc/dovecot/bin sieve_global_extensions { vnd.dovecot.pipe = yes vnd.dovecot.execute = yes } sieve_pipe_bin_dir = /etc/dovecot/bin sieve_plugins { sieve_imapsieve = yes sieve_extprograms = yes } sieve_script_bin_path = /vhosts/sieve sql_driver = mysql ssl = required textcat_config_path = /etc/dovecot/fpdb.conf mysql /var/run/mysqld/mysqld.sock { dbname = postfixadmin password = # hidden, use -P to show it user = postfixedmin } passdb sql { query = SELECT username AS user,password FROM mailbox WHERE username='%{user}' AND active='1' } userdb sql { iterate_query = SELECT username AS user FROM mailbox WHERE active = '1' query = SELECT CONCAT('/vhosts/', maildir) AS home, 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%{user}' AND active='1' UNION ALL SELECT CONCAT('/vhosts/', m.maildir) AS home, 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', m.quota) AS quota_rule FROM alias a JOIN mailbox m ON m.username = a.goto WHERE a.address = '%{user}' AND m.active='1' } namespace inbox { inbox = yes mailbox Drafts { auto = subscribe special_use = "\\Drafts" } mailbox Spam { fts_autoindex = no auto = subscribe special_use = "\\Junk" } mailbox Trash { auto = subscribe autoexpunge = 30d special_use = "\\Trash" } mailbox Archive { auto = subscribe special_use = "\\Archive" } mailbox Sent { auto = subscribe special_use = "\\Sent" } mailbox "Sent Messages" { special_use = "\\Sent" } mailbox virtual/All { auto = subscribe special_use = "\\All" } } protocol !indexer-worker { mail_vsize_bg_after_count = 100 } service imap-login { inet_listener imap { port = 0 } } service lmtp { user = vmail unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service auth { unix_listener /var/spool/postfix/private/dovecot-sasl { group = postfix mode = 0600 user = postfix } unix_listener auth-userdb { } unix_listener auth-master { mode = 0600 user = dovecot } } service stats { unix_listener stats-writer { group = mailglue } } ssl_server { cert_file = /etc/letsencrypt/live/$REDACTED/fullchain.pem key_file = /etc/letsencrypt/live/$REDACTED/privkey.pem } protocol imap { mail_plugins { imap_sieve = yes quota = yes } } protocol lmtp { lmtp_rcpt_check_quota = yes mail_plugins { sieve = yes quota = yes } quota_status_overquota = 452 4.2.2 %{error} } service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 0 } } protocol sieve { managesieve_implementation_string = dovecot managesieve_max_line_length = 65536 ssl = yes } language en { default = yes filters = lowercase snowball english-possessive stopwords } language nl { filters = lowercase snowball stopwords } language de { filters = lowercase snowball stopwords } language fr { filters = lowercase snowball stopwords contractions } language la { filters = lowercase snowball stopwords } language it { filters = lowercase snowball stopwords } language es { filters = lowercase snowball stopwords } quota user { quota_warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } quota_warning warn-80 { quota_storage_percentage = 80 execute quota-warning { args = 80 %{user} } } quota_warning warn-under { quota_storage_percentage = 100 threshold = under execute quota-warning { args = below %{user} } } } service quota-warning { executable = script /etc/dovecot/bin/quota-warning.sh user = vmail unix_listener quota-warning { } } quota "User quota" { driver = count enforce = no storage_size = 512M } service quota-status { client_limit = 1 executable = /usr/lib/dovecot/quota-status -p postfix unix_listener /var/spool/postfix/private/quota-status { user = postfix } } sieve_script before { driver = file name = before path = /vhosts/sieve/spam.sieve type = before } sieve_script personal { active_path = ~/.dovecot.sieve driver = file path = ~/sieve } sieve_script default { driver = file name = default path = /vhosts/sieve/default/ type = default } mailbox Spam { sieve_script learn-spam { cause = copy path = /vhosts/sieve/learn-spam.sieve type = before } } imapsieve_from Spam { sieve_script learn-ham { cause = copy path = /vhosts/sieve/learn-ham.sieve type = before } }