Dear list,

I created a dovecot mysql user with a password containing spaces.
When I try to run doveadm fetch (to test the sql authentication),
I get the following error message in the logs:


Feb 11 17:37:32 auth: Fatal: sqlpool: Missing value in connect string: xxx

the connect line was:

connect = "host=localhost dbname=mail user=dovecot password=xxx xxx xxx"

The following code source
taken from dovecot's github repo[1],
suggests that the parsing relies on spaces as field separators.



static int driver_mysql_parse_connect_string(struct mysql_db *db,
                                             const char *connect_string,
                                             const char **error_r)
{
        const char *const *args, *name, *value;
        const char **field;

        db->ssl_cipher = "HIGH";
        db->ssl_verify_server_cert = 1;
        db->connect_timeout = SQL_CONNECT_TIMEOUT_SECS;
        db->read_timeout = MYSQL_DEFAULT_READ_TIMEOUT_SECS;
        db->write_timeout = MYSQL_DEFAULT_WRITE_TIMEOUT_SECS;

        args = t_strsplit_spaces(connect_string, " ");
        for (; *args != NULL; args++) {
                value = strchr(*args, '=');
                if (value == NULL) {
                        *error_r = t_strdup_printf("Missing value in connect string: 
%s",
                                                   *args);
                        return -1;
                }
[...]

How do I supply the connection string in a suitable way?


References:

[1] dovecot source code on github
https://github.com/dovecot/core/blob/main/src/lib-sql/driver-mysql.c#L194


Troubleshooting info:

Dovecot v2.3.19.1 (9b53102964) starting up for imap, lmtp, pop3 (core dumps 
disabled)
on Debian 12


--
yassine -- sysadm
+213-779 06 06 23
http://about.me/ychaouche
Looking for side gigs.
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org

Reply via email to