我正在尝试配置 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;
}
[...]