Merge pull request 'Dovecot 2.4 update' (#2) from dovecot2.4 into master

Reviewed-on: https://git.myvelabs.com/docker/myvemail/pulls/2
This commit is contained in:
myve 2025-09-30 20:41:52 +00:00
commit d042fbf6f7
3 changed files with 49 additions and 41 deletions

View file

@ -18,8 +18,8 @@ ADD run/docker-entrypoint /docker-entrypoint/
ADD run/installer.sh /tmp/ ADD run/installer.sh /tmp/
# Update Ubuntu Software repository and install requisites # Update Ubuntu Software repository and install requisites
RUN printf '%s\n' 'https://dl-cdn.alpinelinux.org/alpine/v3.21/main/' \ RUN printf '%s\n' 'https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/' \
'https://dl-cdn.alpinelinux.org/alpine/v3.21/community/' >/etc/apk/repositories \ 'https://dl-cdn.alpinelinux.org/alpine/latest-stable/community/' >/etc/apk/repositories \
# Pre-create vmail user # Pre-create vmail user
&& addgroup -g 600 vmail \ && addgroup -g 600 vmail \
&& adduser -S -D -h /var/vmail -u 600 -G vmail vmail \ && adduser -S -D -h /var/vmail -u 600 -G vmail vmail \

View file

@ -1,12 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# 10-auth.conf # dovecot.conf
sed -i "s/{{MYVEMAIL_DOMAIN}}/${MYVEMAIL_DOMAIN}/" /etc/dovecot/dovecot.conf
# dovecot-sql.conf.ext
sed -e "s/{{MYVEMAIL_POSTFIXADMIN_DBNAME}}/${MYVEMAIL_POSTFIXADMIN_DBNAME}/" \ sed -e "s/{{MYVEMAIL_POSTFIXADMIN_DBNAME}}/${MYVEMAIL_POSTFIXADMIN_DBNAME}/" \
-e "s/{{MYVEMAIL_POSTFIXADMIN_DBUSER}}/${MYVEMAIL_POSTFIXADMIN_DBUSER}/" \ -e "s/{{MYVEMAIL_POSTFIXADMIN_DBUSER}}/${MYVEMAIL_POSTFIXADMIN_DBUSER}/" \
-e "s/{{MYVEMAIL_POSTFIXADMIN_DBPASS}}/${MYVEMAIL_POSTFIXADMIN_DBPASS}/" \ -e "s/{{MYVEMAIL_POSTFIXADMIN_DBPASS}}/${MYVEMAIL_POSTFIXADMIN_DBPASS}/" \
-i /etc/dovecot/dovecot-sql.conf.ext -e "s/{{MYVEMAIL_DOMAIN}}/${MYVEMAIL_DOMAIN}/" \
-i /etc/dovecot/dovecot.conf
# Permissions # Permissions
chown vmail:vmail /var/vmail/ -R chown vmail:vmail /var/vmail/ -R

View file

@ -169,27 +169,43 @@ rm -r /etc/dovecot/ /etc/ssl/dovecot/
mkdir -p /etc/dovecot/ /etc/ssl/dovecot/ mkdir -p /etc/dovecot/ /etc/ssl/dovecot/
# dovecot.conf # dovecot.conf
cat >/etc/dovecot/dovecot.conf <<- dovecot.conf install -m 0600 /dev/stdin /etc/dovecot/dovecot.conf <<- dovecot.conf
passdb { dovecot_config_version = 2.4.1
driver = sql dovecot_storage_version = 2.4.1
args = /etc/dovecot/dovecot-sql.conf.ext
sql_driver = mysql
mysql /run/mysqld/mysqld.sock {
user = {{MYVEMAIL_POSTFIXADMIN_DBUSER}}
password = {{MYVEMAIL_POSTFIXADMIN_DBPASS}}
dbname = {{MYVEMAIL_POSTFIXADMIN_DBNAME}}
} }
userdb { passdb sql {
driver = sql query = SELECT username AS user, \\
args = /etc/dovecot/dovecot-sql.conf.ext password FROM mailbox WHERE username = '%{user}' AND active='1'
default_password_scheme = ARGON2I
}
userdb sql {
fields {
home = /var/vmail/%{user|domain}/%{user|username}
}
query = SELECT '~/Maildir' AS mail_path, \\
600 AS uid, \\
600 AS gid \\
FROM mailbox WHERE username = '%{user}' AND active='1'
iterate_query = SELECT username AS user FROM mailbox
} }
disable_plaintext_auth = yes auth_username_format = %{user|lower}
auth_username_format = %Lu
auth_mechanisms = plain login auth_mechanisms = plain login
auth_default_realm = {{MYVEMAIL_DOMAIN}} auth_default_domain = {{MYVEMAIL_DOMAIN}}
auth_debug = yes auth_debug = yes
auth_debug_passwords = yes auth_debug_passwords = yes
# mbox_write_locks = fcntl # mbox_write_locks = fcntl
mail_privileged_group = mail mail_privileged_group = mail
mail_location = maildir:~/Maildir mail_home = /var/vmail/%{user|domain}/%{user|username}
mail_home = /var/vmail/%d/%n/ mail_driver = maildir
mail_path = ~/Maildir
service lmtp { service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp {
@ -219,8 +235,8 @@ unix_listener stats-writer {
} }
ssl = required ssl = required
ssl_prefer_server_ciphers = yes
ssl_min_protocol = TLSv1.2 ssl_min_protocol = TLSv1.2
ssl_server_prefer_ciphers = server
namespace inbox { namespace inbox {
inbox = yes inbox = yes
@ -236,10 +252,6 @@ namespace inbox {
auto = subscribe auto = subscribe
special_use = \Junk special_use = \Junk
} }
mailbox Trash {
auto = subscribe
special_use = \Trash
}
mailbox Sent { mailbox Sent {
auto = subscribe auto = subscribe
special_use = \Sent special_use = \Sent
@ -247,29 +259,27 @@ namespace inbox {
mailbox "Sent Messages" { mailbox "Sent Messages" {
special_use = \Sent special_use = \Sent
} }
mailbox Trash {
auto = subscribe
special_use = \Trash
}
} }
protocols = imap lmtp protocols = imap lmtp
!include_try ssl-keys.conf ssl_server {
dh_file = /etc/ssl/dovecot/dh.pem
cert_file = /etc/ssl/dovecot/tls.pem
key_file = /etc/ssl/dovecot/tls.key
}
dovecot.conf dovecot.conf
# dovecot-sql.conf.ext # # 10-ssl.conf
cat >/etc/dovecot/dovecot-sql.conf.ext <<- 'dovecot' # install -m 0600 /dev/stdin /etc/dovecot/ssl-keys.conf <<- 'ssl-keys.conf'
driver = mysql # ssl_dh = </etc/ssl/dovecot/dh.pem
connect = host=localhost dbname={{MYVEMAIL_POSTFIXADMIN_DBNAME}} user={{MYVEMAIL_POSTFIXADMIN_DBUSER}} password={{MYVEMAIL_POSTFIXADMIN_DBPASS}} # ssl_cert = </etc/ssl/dovecot/tls.pem
default_pass_scheme = ARGON2I # ssl_key = </etc/ssl/dovecot/tls.key
password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1' # ssl-keys.conf
user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u' AND active='1'
iterate_query = SELECT username AS user FROM mailbox
dovecot
# 10-ssl.conf
install -m 0600 /dev/stdin /etc/dovecot/ssl-keys.conf <<- 'ssl-keys.conf'
ssl_dh = </etc/ssl/dovecot/dh.pem
ssl_cert = </etc/ssl/dovecot/tls.pem
ssl_key = </etc/ssl/dovecot/tls.key
ssl-keys.conf
# Virtual mailboxes # Virtual mailboxes
install -m 0640 /dev/stdin /etc/postfix/sql/virtual_domains_maps.cf <<- eof install -m 0640 /dev/stdin /etc/postfix/sql/virtual_domains_maps.cf <<- eof