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 |