From 73feb967fee0366fe33ad21dfa1d182e0f2c0514 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 26 Sep 2025 17:00:29 +0200 Subject: [PATCH] cover mysql use case for dict definition in dovecot 2.4 see #602 --- modoboa_installer/scripts/dovecot.py | 2 +- .../2.4/conf.d/30-dict-server-mysql.conf.tpl | 45 +++++++++++++++++++ ...f.tpl => 30-dict-server-postgres.conf.tpl} | 0 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server-mysql.conf.tpl rename modoboa_installer/scripts/files/dovecot/2.4/conf.d/{30-dict-server.conf.tpl => 30-dict-server-postgres.conf.tpl} (100%) diff --git a/modoboa_installer/scripts/dovecot.py b/modoboa_installer/scripts/dovecot.py index ba6b3cd..0e58f3e 100644 --- a/modoboa_installer/scripts/dovecot.py +++ b/modoboa_installer/scripts/dovecot.py @@ -45,7 +45,6 @@ class Dovecot(base.Installer): "conf.d/10-ssl.conf", "conf.d/10-ssl-keys.try", "conf.d/20-lmtp.conf", - "conf.d/30-dict-server.conf", "conf.d/auth-oauth2.conf.ext", ] } @@ -69,6 +68,7 @@ class Dovecot(base.Installer): files += [ f"conf.d/auth-sql-{self.dbengine}.conf.ext=conf.d/auth-sql.conf.ext", f"conf.d/auth-master-{self.dbengine}.conf.ext=conf.d/auth-master.conf.ext", + f"conf.d/30-dict-server-{self.dbengine}.conf=conf.d/30-dict-server.conf", ] else: files += [ diff --git a/modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server-mysql.conf.tpl b/modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server-mysql.conf.tpl new file mode 100644 index 0000000..bb28b9e --- /dev/null +++ b/modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server-mysql.conf.tpl @@ -0,0 +1,45 @@ +## +## Dictionary server settings +## + +# Dictionary can be used to store key=value lists. This is used by several +# plugins. The dictionary can be accessed either directly or though a +# dictionary server. The following dict block maps dictionary names to URIs +# when the server is used. These can then be referenced using URIs in format +# "proxy::". + +dict_server { + mysql %dbhost { + port = %dbport + dbname = %modoboa_dbname + user = %modoboa_dbuser + password = %modoboa_dbpassword + } + dict quota { + driver = sql + sql_driver = %db_driver + hostname = %dbhost + + dict_map priv/quota/storage { + sql_table = admin_quota + username_field = username + value_field bytes { + type = uint + } + } + + dict_map priv/quota/messages { + sql_table = admin_quota + username_field = username + value_field messages { + type = uint + } + } + } +} + +quota_clone { + dict proxy { + name = quota + } +} diff --git a/modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server.conf.tpl b/modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server-postgres.conf.tpl similarity index 100% rename from modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server.conf.tpl rename to modoboa_installer/scripts/files/dovecot/2.4/conf.d/30-dict-server-postgres.conf.tpl