我刚刚安装了 Postfix 并将其配置为使用 MySQL。完成此操作后,它没有发送任何电子邮件,因此我检查了 /var/log/mail.log,结果显示以下内容:
postfix/trivial-rewrite[5283]: fatal: proxy:mysql:/etc/postfix/mysql-domains.cf(0,lock|fold_fix): table lookup problem
postfix/cleanup[5258]: warning: AFCDC30437: virtual_alias_maps map lookup problem for [email protected]
postfix/master[4761]: warning: process /usr/lib/postfix/trivial-rewrite pid 5282 exit status 1
postfix/proxymap[4126]: warning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)
在 mysql-domains.cf 中我使用:
Hosts 127.0.0.1
我可以用这个连接到 MySQL:
mysql -u postfixuser -p
但我无法通过这种方式连接:
mysql -u postfixuser -h 127.0.0.1 -p maildbname
此外,当我运行 netstat -l 时,它会返回:
tcp 0 0 localhost:mysql *:* LISTEN
我尝试将我的主机更改为:
Hosts localhost
但后来我收到一个套接字错误:
postfix/cleanup[4870]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
我也在 MySQL 配置文件中进行了此项设置:
bind-address = 127.0.0.1
知道可能是什么问题吗?
答案1
在您的 postfix mysql 连接部分中,我认为您想要:
hosts = unix:/var/run/mysqld/mysqld.sock
而不是 127.0.0.1 用于 postfix。或者,添加授权以允许 postfix 通过 127.0.0.1 而不是 localhost 进行连接。
grant all on postfix.* to [email protected] identified by 'asdf';
Postfix 通过 TCP 进行连接,您可能已为套接字连接定义了授权。修复其中一个问题应该可以解决问题。
答案2
我怀疑防火墙可能会搞乱一切。尝试通过 telnet 连接到本地主机的 3306 端口:telnet localhost 3306
或telnet 127.0.0.1 3306
,看看是否可以连接。
如果没有,请尝试禁用防火墙:sudo ufw disable
,然后再次尝试 telnet。如果可以连接,则我们已确定您的防火墙设置是罪魁祸首,您需要在您的lo
接口上允许 TCP 访问 127.0.0.1 的端口 3306。