1 Dec
2025
1 Dec
'25
12:07 p.m.
For anonymization reasons, I have hidden the host and domain names:
2.4.2 (0962ed2104): /usr/local/dovecot/etc/dovecot/dovecot.conf
Pigeonhole version 2.4.2 (767418c3)
OS: Linux 6.12.0-157.el10.x86_64 x86_64 CentOS Stream release 10 (Coughlan)
Hostname: xxx.domain.tld
dovecot_config_version = 2.4.2 auth_allow_cleartext = yes auth_allow_weak_schemes = yes auth_default_domain = domain.tld auth_mechanisms = plain login auth_socket_path = /usr/local/dovecot/var/run/dovecot/auth-userdb auth_verbose = yes auth_verbose_passwords = sha1 dovecot_storage_version = 2.4.2 first_valid_gid = 89 first_valid_uid = 89 fts_autoindex = yes fts_autoindex_max_recent_msgs = 999 fts_search_add_missing = yes hostname = xxx.domain.tld last_valid_gid = 89 last_valid_uid = 89 listen {
- = yes :: = no } log_path = /dev/stderr mail_access_groups = 89 mail_driver = maildir mail_gid = 89 mail_path = ~/Maildir mail_plugins { notify = yes quota = yes } mail_privileged_group = 89 mail_uid = 89 mailbox_list_validate_fs_names = no passdb_default_password_scheme = SHA512-CRYPT postmaster_address = postmaster@xxx.domain.tld protocols { imap = yes sieve = yes } sql_driver = mysql passdb sql { query = SELECT CONCAT(vpopmail.pw_name, '@', vpopmail.pw_domain) AS user, vpopmail.pw_passwd AS password, vpopmail.pw_dir AS userdb_home, 89 AS userdb_uid, 89 AS userdb_gid, CONCAT(REPLACE(SUBSTRING_INDEX(vpopmail.pw_shell, 'S', 1), 'NOQUOTA', '0'), 'B') AS userdb_quota_storage_size FROM vpopmail LEFT JOIN aliasdomains ON aliasdomains.alias='%{user | domain}' LEFT JOIN limits ON limits.domain='%{user | domain}' WHERE vpopmail.pw_name='%{user | username}' AND (vpopmail.pw_domain='%{user | domain}' OR vpopmail.pw_domain=aliasdomains.domain) AND ('%{local_port}'!='995' OR !(vpopmail.pw_gid & 2)) AND ('%{remote_ip}'!='127.0.0.1' OR !(vpopmail.pw_gid & 4)) AND ('%{remote_ip}'='127.0.0.1' OR '%{local_port}'!='993' OR !(vpopmail.pw_gid & 8)) AND ('%{remote_ip}'!='127.0.0.1' OR COALESCE(disable_webmail,0)!=1) AND ('%{remote_ip}'='127.0.0.1' OR COALESCE(disable_imap,0)!=1) } userdb prefetch { driver = prefetch } userdb sql { iterate_query = SELECT CONCAT(pw_name,'@',pw_domain) AS user FROM vpopmail query = SELECT vpopmail.pw_dir AS home, 89 AS uid, 89 AS gid, CONCAT(REPLACE(SUBSTRING_INDEX(vpopmail.pw_shell, 'S', 1), 'NOQUOTA', '0'), 'B') AS quota_storage_size FROM vpopmail WHERE vpopmail.pw_name='%{user | username}' AND vpopmail.pw_domain='%{user | domain}' } namespace inbox { inbox = yes mailbox Drafts { auto = subscribe special_use = "\\Drafts" } mailbox Junk { autoexpunge = 30d special_use = "\\Junk" } mailbox Trash { autoexpunge = 30d special_use = "\\Trash" quota_storage_extra = 100M } mailbox Sent { special_use = "\\Sent" } mailbox "Sent Messages" { special_use = "\\Sent" } } maildir { broken_filename_sizes = yes } service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } } service imap { } service auth { user = $SET:default_internal_user unix_listener auth-userdb { group = vchkpw mode = 0660 user = vpopmail } } service auth-worker { user = $SET:default_internal_user } service stats { unix_listener stats-reader { group = vchkpw mode = 0660 user = vpopmail } unix_listener stats-writer { group = vchkpw mode = 0660 user = vpopmail } } protocol lda { mail_plugins { sieve = yes } } protocol imap { mail_plugins { notify = yes mail_log = yes imap_sieve = yes imap_quota = yes } } service managesieve-login { inet_listener sieve { port = 4190 } } service managesieve { } language en { default = yes } quota "User quota" { driver = maildir storage_grace = 10M quota_warning overquota { quota_storage_percentage = 100 execute quota-warning { args = 100 %{user} } } quota_warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } quota_warning warn-85 { quota_storage_percentage = 85 execute quota-warning { args = 85 %{user} } } } service quota-warning { executable = script ../../etc/scripts/quota-warning.sh user = vpopmail unix_listener quota-warning { group = vchkpw mode = 0660 user = dovenull } } sieve_script personal { active_path = ~/.sieve/dovecot.sieve driver = file path = ~/.sieve } mysql localhost { dbname = vpopmail password = # hidden, use -P to show it user = vpopmail } ssl_server { cert_file = /etc/pki/tls/certs/domain.tld.pem key_file = /etc/pki/tls/private/domain.tld.key }