主题: Policyd无法连接Mysql

我一直看到Policyd的灰名单功能没有生效, 刚刚才发行原来是Policyd无法连接到我的Mysql上.

提示信息是
Jun 10 13:57:50 mail policyd: starting policyd v1.82
Jun 10 13:57:50 mail policyd: connecting to mysql database: 
Jun 10 05:57:50 mail policyd: mysql_real_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

我的Policyd的配置文件中的MysqlHost的设置是空, 因为我按照说明文件中连接Socket不要写内容, 但我的数据库Socket是/tmp/mysql.sock .我不知道在那里可以修改为让Policyd默认不要去用那个不存在的/var/lib/mysql/mysql.sock.
我其他的服务全部都正常, web Mail也是OK的. 版本是0.51的还未升级.

我尝试用ln把/tmp/mysql.sock链接到那个默认不存在的路径文件上也没有用.

2 最后由 telking (2010-07-05 11:04:21) 编辑

回复: Policyd无法连接Mysql

呵呵,刚刚搞定这个问题
iredmail的Policyd是加了chroot的,所以只能通过TCP来连接,用sock非常麻烦,用ln是不行

解决办法:
将/etc/policyd.conf里面的CHROOT的路径从/home/policyd改为原来的的/,这样就可以使用sock连接,同时还要将/etc/postfix/里面和mysql相关的设置里面的HOST从127.0.0.1替换成localhost,用sed很快搞定

解决办法2:将mysql的用户policyd的作用域从localhost修改为127.0.0.1就可以,policyd就使用tcp连接

两种方法都实际应用中通过,无论mysql是二进制安装还是编译安装都没有问题。另外如果使用编译安装mysql,就要先解决安装libmysqlclient.so.15,不然iredmail又会帮你安装上mysql-server引起问题