dovecot_config_version = ${config_version} dovecot_storage_version = ${storage_version} protocols = imap lmtp sieve auth_mechanisms = plain login ssl = required ssl_server_cert_file = /var/lib/dehydrated/certs/${hostname}/fullchain.pem ssl_server_key_file = /var/lib/dehydrated/certs/${hostname}/privkey.pem ssl_server_dh_file = /etc/dovecot/dhparam.pem ssl_client_ca_dir = /etc/ssl/certs mail_driver = maildir mail_path = ${maildir}/%{user} mail_index_path = ${maildir}/index/%{user} mail_plugins = fts fts_flatcurve namespace inbox { inbox = yes separator = . mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = create special_use = \Junk } mailbox Trash { auto = subscribe special_use = \Trash } mailbox Sent { auto = subscribe special_use = \Sent } } # postgres passdb userdb sql_driver = pgsql pgsql main { parameters { host = ${db_host} dbname = ${db_name} user = ${db_user} password = ${db_password} } } passdb sql { passdb_default_password_scheme = ARGON2ID query = SELECT \ CONCAT(users.name, '@', domains.name) AS "user", \ password \ FROM users \ LEFT JOIN domains ON users.domain_id = domains.id \ WHERE redirect IS NULL \ AND users.name = SPLIT_PART('%{user}', '@', 1) \ AND domains.name = SPLIT_PART('%{user}', '@', 2) } mail_uid = vmail mail_gid = vmail userdb sql { query = SELECT \ '/var/vmail/%{user}' AS home, \ 'vmail' AS uid, \ 'vmail' AS gid iterate_query = SELECT \ CONCAT(users.name, '@', domains.name) AS username \ FROM users \ LEFT JOIN domains ON users.domain_id = domains.id \ WHERE redirect IS NULL } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } } service stats { unix_listener stats-reader { user = vmail group = vmail mode = 0660 } unix_listener stats-writer { user = vmail group = vmail mode = 0660 } } service managesieve-login { #inet_listener sieve {} process_min_avail = 1 process_limit = 1 vsz_limit = 64 M } service managesieve { process_limit = 100 } protocol imap { mail_plugins = fts fts_flatcurve imap_sieve mail_max_userip_connections = 50 imap_idle_notify_interval = 29 mins } protocol lmtp { mail_plugins = fts fts_flatcurve sieve } # Persönliches Skript (deine alte Datei /var/vmail/sieve/%u.sieve) sieve_script personal { driver = file # Verzeichnis mit (evtl. mehreren) Sieve-Skripten des Users path = /var/vmail/sieve/%{user}/ # Aktives Skript (entspricht früher "sieve = /var/vmail/sieve/%u.sieve") active_path = /var/vmail/sieve/%{user}.sieve } # Globales After-Skript (dein früheres "sieve_after = …") sieve_script after { type = after driver = file path = /var/vmail/sieve/global/spam-to-folder.sieve } # fulltext search language en { } language de { default = yes } language_tokenizers = generic email-address fts flatcurve { substring_search = yes # rotate_count = 5000 # DB-Rotation nach X Mails # rotate_time = 5s # oder zeitbasiert rotieren # optimize_limit = 10 # min_term_size = 3 } fts_autoindex = yes fts_decoder_driver = script fts_decoder_script_socket_path = decode2text service indexer-worker { process_limit = ${indexer_cores} vsz_limit = ${indexer_ram}M } service decode2text { executable = script /usr/local/libexec/dovecot/decode2text.sh user = dovecot unix_listener decode2text { mode = 0666 } } mailbox Junk { sieve_script learn_spam { driver = file type = before cause = copy path = /var/vmail/sieve/global/learn-spam.sieve } } imapsieve_from Junk { sieve_script learn_ham { driver = file type = before cause = copy path = /var/vmail/sieve/global/learn-ham.sieve } } # Extprograms-Plugin einschalten sieve_plugins { sieve_extprograms = yes } # Welche Sieve-Erweiterungen dürfen genutzt werden? # Empfehlung: nur global erlauben (nicht in User-Skripten): sieve_global_extensions { vnd.dovecot.pipe = yes # vnd.dovecot.filter = yes # nur falls gebraucht # vnd.dovecot.execute = yes # nur falls gebraucht } # Verzeichnis mit deinen Skripten/Binaries für :pipe sieve_pipe_bin_dir = /var/vmail/sieve/bin # (optional, analog für :filter / :execute) # sieve_filter_bin_dir = /var/vmail/sieve/filter # sieve_execute_bin_dir = /var/vmail/sieve/execute