Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dovecot无法初始化dict:dict redis:无效IP_Redis_Dovecot - Fatal编程技术网

Dovecot无法初始化dict:dict redis:无效IP

Dovecot无法初始化dict:dict redis:无效IP,redis,dovecot,Redis,Dovecot,我使用的是Dovecot v2.3.9.3。通过查看dovecot,我发现Redis的规范如下: redis:param=value:param2=value2:... } else if (str_begins(*args, "host=")) { if (net_addr2ip(*args+5, &ip) < 0) { *error_r = t_strdup_printf("Invalid IP: %s", *args+5);

我使用的是
Dovecot v2.3.9.3
。通过查看dovecot,我发现
Redis
的规范如下:

redis:param=value:param2=value2:...
} else if (str_begins(*args, "host=")) {
  if (net_addr2ip(*args+5, &ip) < 0) {
    *error_r = t_strdup_printf("Invalid IP: %s",
              *args+5);
    ret = -1;
  }
}
这里的一个参数是
主机:Redis服务器主机(默认值:127.0.0.1)

在我的配置中,我指定了
uri=redis:host=redis:port=6379

二月23日20:48:32身份验证:致命:dict/etc/dovecot/dovecot-dict-auth.conf.ext:无法初始化dict:dict-redis:无效IP:redis

redis
我的服务器上的主机名解析为IP,没有任何问题:

# getent hosts redis
192.168.48.2      redis  redis
有没有办法使用
主机名
(可能是启用解析的隐藏设置),或者他们只是直截了当地没有实现对此的支持/

TL;博士 Dovecot
redis dict
驱动程序接受未记录的参数,您可以在其中指定unix套接字。然后,您可以通过unix套接字
/run/redis.soc
,为tcp端口
6379
上的主机名
redis
创建一个代理:

socat unix-listen:/run/redis.soc,reuseaddr,fork,perm=0644,user=dovecot tcp:redis:6379 &
Dovecot配置变为:

# Dictionary URI
uri = redis:path=/run/redis.soc

下面是我对这个问题的分析。我不使用
C
编码,所以我的理解是有限的

下面是我的错误(
无效IP:redis
)的说明:

redis:param=value:param2=value2:...
} else if (str_begins(*args, "host=")) {
  if (net_addr2ip(*args+5, &ip) < 0) {
    *error_r = t_strdup_printf("Invalid IP: %s",
              *args+5);
    ret = -1;
  }
}
因此,dovecot的
redis dict
驱动程序中的
host
参数只能是IP地址_(ツ)_/“”