207 lines
No EOL
4.7 KiB
Text
207 lines
No EOL
4.7 KiB
Text
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 |