在dovecot中,如果我的mysql密码中有空格,应使用什么语法?

在dovecot中,如果我的mysql密码中有空格,应使用什么语法?

我正在尝试配置 Dovecot 来访问 mysql,但它不起作用,因为 mysql 密码中有空格。

driver = mysql
connect = "host=localhost dbname=postfix user=postfix password=blah bluh blih"

当我尝试从 Thunderbird / Evoution 访问邮箱时,出现以下错误:

Jan 05 14:41:11 mx1 dovecot[28895]: auth: Fatal: mysql: Missing value in connect string: bluh

我找不到正确的语法来使其工作。有人有主意吗?

答案1

Dovecot 的源代码依赖于空格来分隔连接字符串中的字段。
因此,建议使用不带空格的密码。
这次讨论在 ML 上,
它引用了这个dovecot 的部分源代码

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;
        }
[...] 

相关内容