5

Postfix抛出一个错误说:

7 月 9 日 14:41:26 tmail postfix/trivial-rewrite[4342]:警告:连接到 mysql 服务器 unix:/var/run/mysqld/mysqld.sock:无法通过套接字连接到本地 MySQL 服务器'/var/运行/mysqld/mysqld.sock' (2) Jul 9 14:41:26 tmail postfix/trivial-rewrite[4342]: 致命: mysql:/etc/postfix/mysql-yaa-aliases.cf(0,lock|fold_fix ): 查表问题

在 main.cf 我有:

virtual_alias_maps = mysql:/etc/postfix/mysql-yaa-aliases.cf

在 mysql-yaa-aliases.cf 我有:

hosts = unix:/var/run/mysqld/mysqld.sock
# hosts = 127.0.0.1
user = yaa_admin
password = ********
dbname = yaa
query = SELECT dest FROM yaa_active_aliases WHERE address='%s'

如果我使用 127.0.0.1 它可以工作(不理想,因为我更喜欢套接字的速度。)另外,如果我用 postmap 测试套接字它可以工作:

# postmap -q "bholly@example.org" mysql:/etc/postfix/mysql-yaa-aliases.cf
bholly@example.org, bholly@autoreply.example.org

当我在 trivial-rewrite 守护进程上使用 strace 时,我得到:

connect(11, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = -1 ENOENT (No such file or directory)

而使用 postmap 的 strace 我得到:

connect(4, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = 0

顺便说一句 - 目前正在运行 Postfix 2.7,但故障仍然显示为 2.9

4

1 回答 1

13

找到了 :) - trivial-rewrite 发生在 chroot 监狱中,因此套接字文件真的不存在。

解决方案(感谢https://serverfault.com/questions/229389帮助我解决此问题)是将其添加到 /etc/fstab:

/var/run/mysqld /var/spool/postfix/var/run/mysqld bind defaults,bind 0 0

因此允许 Postfix 保留其 chroot 配置,并允许它访问 mysql 套接字。

于 2012-07-10T02:51:57.647 回答