Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
docker_notes:docker-mailserver [2025-06-01 Sun wk22 22:02] – [Dovecot References] baumkp | docker_notes:docker-mailserver [2025-06-07 Sat wk23 18:45] (current) – [dovecot.conf] baumkp | ||
---|---|---|---|
Line 371: | Line 371: | ||
=====dovecot===== | =====dovecot===== | ||
- | ''/ | + | In Dovecot <2.4.x the main configuration are in files ''/ |
< | < | ||
2.3.20 (80a5ac675d) </ | 2.3.20 (80a5ac675d) </ | ||
Line 377: | Line 377: | ||
*'' | *'' | ||
- | Dovecot version 2.4.0 seems to have broken the configuration files from 2.3.x and earlier. | + | Alpine Linux version 3.22 from May 2025 used Dovecot 2.4.1 and while I can use an older version of Alpine eventually I would need to upgrade Dovecot to the new configuration file syntax. |
+ | ====dovecot.conf==== | ||
++++/ | ++++/ | ||
- | < | + | # Start new configs with the latest Dovecot version numbers here:\\ |
- | dovecot_config_version = 2.4.1 | + | [[https:// |
- | dovecot_storage_version = 2.4.1 | + | [[https:// |
- | #mail_debug = yes | + | #[[https:// |
- | #log_debug = category=ssl | + | # |
- | mail_cache_max_size = 128M | + | [[https:// |
- | auth_mechanisms = plain login | + | [[https:// |
- | info_log_path = / | + | [[https:// |
- | log_path = / | + | [[https:// |
- | mail_driver = maildir | + | [[https:// |
- | mail_path = ~/ | + | mail_path = ~/Maildir\\ |
- | mail_plugins { | + | mail_plugins {\\ |
- | quota = yes | + | quota = yes\\ |
- | } | + | }\\ |
- | # | + | # |
- | # sieve_extprograms = yes | + | # sieve_extprograms = yes\\ |
- | #} | + | #}\\ |
- | managesieve_notify_capability = mailto | + | managesieve_notify_capability = mailto\\ |
- | managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i; | + | managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i; |
- | mbox_write_locks = fcntl | + | mbox_write_locks = fcntl\\ |
- | namespace inbox { | + | namespace inbox {\\ |
- | inbox = yes | + | inbox = yes\\ |
- | mailbox Drafts { | + | mailbox Drafts {\\ |
- | special_use = \Drafts | + | special_use = \Drafts\\ |
- | } | + | }\\ |
- | mailbox Junk { | + | mailbox Junk {\\ |
- | special_use = \Junk | + | special_use = \Junk\\ |
- | } | + | }\\ |
- | mailbox Sent { | + | mailbox Sent {\\ |
- | special_use = \Sent | + | special_use = \Sent\\ |
- | } | + | }\\ |
- | mailbox "Sent Messages" | + | mailbox "Sent Messages" |
- | special_use = \Sent | + | special_use = \Sent\\ |
- | } | + | }\\ |
- | mailbox Trash { | + | mailbox Trash {\\ |
- | special_use = \Trash | + | special_use = \Trash\\ |
- | } | + | }\\ |
- | prefix = | + | prefix = \\ |
- | } | + | }\\ |
- | quota " | + | quota " |
- | #quota = maildir: | + | #quota = maildir: |
- | quota_status_nouser = DUNNO | + | quota_status_nouser = DUNNO\\ |
- | quota_status_overquota = 452 4.2.2 Mailbox is full and cannot receive any more emails | + | quota_status_overquota = 452 4.2.2 Mailbox is full and cannot receive any more emails\\ |
- | quota_status_success = DUNNO | + | quota_status_success = DUNNO\\ |
- | warning warn-95 { | + | warning warn-95 {\\ |
- | quota_storage_percentage = 95 | + | quota_storage_percentage = 95 \\ |
- | execute quota-warning { | + | execute quota-warning {\\ |
- | args = 95 %{user} | + | args = 95 %{user}\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | warning warn-80 { | + | warning warn-80 {\\ |
- | quota_storage_percentage = 80 | + | quota_storage_percentage = 80\\ |
- | execute quota-warning { | + | execute quota-warning {\\ |
- | args = 80 %{user} | + | args = 80 %{user}\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | #sieve = file: | + | #sieve = file: |
- | sieve_script_driver = file | + | sieve_script_driver = file\\ |
- | sieve_script_active_path = ~/ | + | sieve_script_active_path = ~/ |
- | sieve_script_type = after | + | sieve_script_type = after \\ |
- | sieve_script_path = / | + | sieve_script_path = / |
- | protocols = imap lmtp | + | protocols = imap lmtp\\ |
- | service auth { | + | service auth {\\ |
- | unix_listener / | + | unix_listener / |
- | group = postfix | + | group = postfix\\ |
- | mode = 0660 | + | mode = 0660\\ |
- | user = postfix | + | user = postfix\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | service lmtp { | + | service lmtp {\\ |
- | unix_listener / | + | unix_listener / |
- | group = postfix | + | group = postfix\\ |
- | mode = 0600 | + | mode = 0600\\ |
- | user = postfix | + | user = postfix\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | service quota-status { | + | service quota-status {\\ |
- | executable = quota-status -p postfix | + | executable = quota-status -p postfix\\ |
- | unix_listener / | + | unix_listener / |
- | user = postfix | + | user = postfix\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | service quota-warning { | + | service quota-warning {\\ |
- | executable = script / | + | executable = script / |
- | unix_listener quota-warning { | + | unix_listener quota-warning {\\ |
- | group = vmail | + | group = vmail\\ |
- | mode = 0660 | + | mode = 0660\\ |
- | user = vmail | + | user = vmail\\ |
- | } | + | }\\ |
- | } | + | }\\ |
- | ssl = required | + | ssl = required\\ |
- | ssl_server_cert_file = / | + | ssl_server_cert_file = / |
- | ssl_server_dh_file = / | + | ssl_server_dh_file = / |
- | ssl_server_key_file = / | + | ssl_server_key_file = / |
- | ssl_server_prefer_ciphers = server | + | ssl_server_prefer_ciphers = server\\ |
- | ssl_min_protocol = TLSv1.2 | + | ssl_min_protocol = TLSv1.2\\ |
- | sql_driver = mysql | + | sql_driver = mysql\\ |
- | mysql localhost { | + | mysql localhost {\\ |
- | host = mail_db | + | host = mail_db |
- | dbname = mailserver | + | dbname = mailserver\\ |
- | user = mailserver | + | user = mailserver |
- | password = K6oF4xOZFIo2cYrwTQ03jQWwx7t2my | + | password = K6oF4xOZFIo2cYrwTQ03jQWwx7t2my\\ |
- | } | + | }\\ |
- | passdb sql { | + | passdb sql {\\ |
- | query = SELECT password FROM virtual_users WHERE email=' | + | query = SELECT password FROM virtual_users WHERE email=' |
- | } | + | }\\ |
- | userdb sql { | + | userdb sql {\\ |
query = SELECT email as user, \ | query = SELECT email as user, \ | ||
concat(' | concat(' | ||
'/ | '/ | ||
5000 AS uid, 5000 AS gid \ | 5000 AS uid, 5000 AS gid \ | ||
- | FROM virtual_users WHERE email=' | + | FROM virtual_users WHERE email=' |
- | iterate_query = SELECT email AS user FROM virtual_users | + | iterate_query = SELECT email AS user FROM virtual_users\\ |
- | } | + | }\\ |
- | protocol lmtp { | + | protocol lmtp {\\ |
- | mail_plugins = " quota sieve" | + | mail_plugins = " quota sieve"\\ |
- | } | + | }\\ |
- | protocol imap { | + | protocol imap {\\ |
- | mail_plugins = " quota imap_quota" | + | mail_plugins = " quota imap_quota" |
- | } | + | }\\ |
- | #!include conf.d/ | + | #!include conf.d/ |
++++ | ++++ | ||
Line 635: | Line 636: | ||
====dovecot logging==== | ====dovecot logging==== | ||
+ | |||
+ | ====dovecot pigeonhole==== | ||
+ | Pigeonhole is the name of the project that adds support for the [[http:// | ||
====Dovecot References==== | ====Dovecot References==== | ||
*Doc Dovecot: | *Doc Dovecot: | ||
*[[https:// | *[[https:// | ||
- | *Dovecot 2.3.x | + | *Dovecot 2.4.x |
+ | *[[https:// | ||
+ | ++++Dovecot 2.3.x| | ||
*[[https:// | *[[https:// | ||
*[[https:// | *[[https:// | ||
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
- | *[[https:// | + | *[[https:// |
*Other: | *Other: | ||
*[[http:// | *[[http:// | ||
*[[http:// | *[[http:// | ||
*[[https:// | *[[https:// | ||
+ | ++++ | ||
=====Certificates SSL/ | =====Certificates SSL/ | ||
Early on, before 2015 there were not many free SSL certificate providers. I used StartSSL for a free certificate. | Early on, before 2015 there were not many free SSL certificate providers. I used StartSSL for a free certificate. |