aboutsummaryrefslogtreecommitdiff
path: root/services/docker/mail-server/dovecot.conf
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-04-10 15:12:46 +0800
committerYuqian Yang <crupest@crupest.life>2025-04-29 01:38:30 +0800
commit6aeff979ada4a1775bddb87a0ccad354faaa8093 (patch)
treef21bf38bea4d48c21df6209f65ef4726d577ece8 /services/docker/mail-server/dovecot.conf
parent1238ea1cba60316a641b8755b8c6c12e42badfbd (diff)
downloadcrupest-6aeff979ada4a1775bddb87a0ccad354faaa8093.tar.gz
crupest-6aeff979ada4a1775bddb87a0ccad354faaa8093.tar.bz2
crupest-6aeff979ada4a1775bddb87a0ccad354faaa8093.zip
HALF WORK!
Diffstat (limited to 'services/docker/mail-server/dovecot.conf')
-rw-r--r--services/docker/mail-server/dovecot.conf243
1 files changed, 243 insertions, 0 deletions
diff --git a/services/docker/mail-server/dovecot.conf b/services/docker/mail-server/dovecot.conf
new file mode 100644
index 0000000..6cebe9b
--- /dev/null
+++ b/services/docker/mail-server/dovecot.conf
@@ -0,0 +1,243 @@
+dovecot_config_version = 2.4.1
+dovecot_storage_version = 2.4.0
+
+base_dir = /run/dovecot
+state_dir = /run/dovecot
+
+protocols = imap submission lmtp lda sieve
+
+mail_driver=maildir
+mailbox_list_layout=index
+mailbox_list_utf8=yes
+mail_path=~/mail
+mail_home=/data/vmail/%{user | domain}/%{user | username}
+mail_utf8_extensions = yes
+
+mail_uid = vmail
+mail_gid = vmail
+
+# Setup default mailboxes for inbox namespace
+@mailbox_defaults = english
+
+namespace inbox {
+ separator = /
+
+ mailbox Drafts {
+ auto = subscribe
+ special_use = \Drafts
+ }
+ mailbox Junk {
+ auto = subscribe
+ special_use = \Junk
+ }
+ mailbox Trash {
+ auto = subscribe
+ special_use = \Trash
+ }
+
+ mailbox Sent {
+ auto = subscribe
+ special_use = \Sent
+ }
+
+ mailbox Archive {
+ auto = subscribe
+ special_use = \Archive
+ }
+}
+
+ssl = yes
+ssl_server {
+ cert_file = /etc/dovecot/ssl/tls.crt
+ key_file = /etc/dovecot/ssl/tls.key
+}
+
+mail_attribute {
+ dict file {
+ path = %{home}/dovecot-attributes
+ }
+}
+
+log_path = /dev/stdout
+
+imap_hibernate_timeout = 5s
+
+mail_plugins {
+ fts = yes
+ fts_flatcurve = yes
+ mail_log = yes
+ notify = yes
+}
+
+mail_log_events = delete undelete expunge save copy mailbox_create mailbox_delete mailbox_rename flag_change
+
+fts_autoindex = yes
+fts_autoindex_max_recent_msgs = 999
+fts_search_add_missing = yes
+language_filters = normalizer-icu snowball stopwords
+
+language_tokenizers = generic email-address
+language_tokenizer_generic_algorithm = simple
+
+language en {
+ default = yes
+ filters = lowercase snowball english-possessive stopwords
+}
+
+fts flatcurve {
+ substring_search = yes
+}
+
+auth_mechanisms = plain login
+auth_username_format = %{user | username}
+
+passdb passwd-file {
+ passwd_file_path = /data/userdb
+ default_password_scheme = SHA512-CRYPT
+}
+
+userdb passwd-file {
+ passwd_file_path = /data/userdb
+ fields {
+ uid:default = vmail
+ gid:default = vmail
+ home:default = /data/vmail/%{user | domain}/%{user | username}
+ }
+}
+
+protocol imap {
+ mail_plugins {
+ imap_sieve = yes
+ imap_filter_sieve = yes
+ }
+}
+
+protocol lmtp {
+ mail_plugins {
+ sieve = yes
+ }
+}
+
+service imap-login {
+ process_min_avail = 1
+ client_limit = 100
+}
+
+service pop3-login {
+ process_min_avail = 1
+ client_limit = 100
+}
+
+service submission-login {
+ process_min_avail = 1
+ client_limit = 100
+
+ inet_listener submissions {
+ port = 465
+ ssl = yes
+ }
+}
+
+protocol lda {
+ mail_plugins {
+ sieve = yes
+ }
+}
+
+service managesieve-login {
+ process_min_avail = 1
+ client_limit = 100
+}
+
+plugin {
+ sieve = ~/.dovecot.sieve
+ sieve_dir = ~/sieve
+
+ # Directory for :global include scripts for the include extension.
+ #sieve_global_dir =
+
+ sieve_before = /data/sieve/global/before/
+ sieve_after = /data/sieve/global/after/
+
+ sieve_extensions = +notify +imapflags +special-use +vnd.dovecot.pipe +vnd.dovecot.filter
+ sieve_plugins = sieve_imapsieve sieve_extprograms
+}
+
+event_exporter log {
+ format = json
+ time_format = rfc3339
+}
+
+# Add default backend metrics
+@metric_defaults = backend
+
+# Log auth failures
+metric auth_failures {
+ filter = event=auth_request_finished AND NOT success=yes
+ exporter = log
+}
+
+metric imap_command {
+ filter = event=imap_command_finished
+ group_by cmd_name {
+ method discrete {
+ }
+ }
+ group_by tagged_reply_state {
+ method discrete {
+ }
+ }
+}
+
+metric smtp_command {
+ filter = event=smtp_server_command_finished and protocol=submission
+ group_by cmd_name {
+ method discrete {
+ }
+ }
+ group_by status_code {
+ method discrete {
+ }
+ }
+ group_by duration {
+ method exponential {
+ base = 10
+ min_magnitude = 1
+ max_magnitude = 5
+ }
+ }
+}
+
+metric lmtp_command {
+ filter = event=smtp_server_command_finished and protocol=lmtp
+ group_by cmd_name {
+ method discrete {
+ }
+ }
+ group_by status_code {
+ method discrete {
+ }
+ }
+ group_by duration {
+ method exponential {
+ base = 10
+ min_magnitude = 1
+ max_magnitude = 5
+ }
+ }
+}
+
+# Add duration metrics for deliveries
+metric mail_deliveries {
+ filter = event=mail_delivery_finished
+ group_by duration {
+ method exponential {
+ base = 10
+ min_magnitude = 1
+ max_magnitude = 5
+ }
+ }
+}
+
+!include_try vendor.d/*.conf
+!include_try conf.d/*.conf