Postfix Policyd-spf 配置中的 Python 错误:“警告:与服务器 private/policyd-spf 通信时出现问题”

Postfix Policyd-spf 配置中的 Python 错误:“警告:与服务器 private/policyd-spf 通信时出现问题”

pypolicyd-spf在 Postfix 3.3.1 中实现支持RHEL 8,遇到以下错误/var/log/maillog

spawn[xxxx]: fatal: spawn_comand: execvp /usr/bin/python: No such file or directory
postfix/spawn[xxxx]: warning: command /usr/bin/python exit status 1
spawn[xxxx]: fatal: spawn_comand: execvp /usr/bin/python: No such file or directory
postfix/spawn[xxxx]: warning: command /usr/bin/python exit status 1
postfix/smtpd[xxxx]: warning: problem talking to server private/policyd-spf: Connection reset by peer

不可能是路径问题,因为用户后缀没有路径:

$ getent passwd postfix
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

你在哪里解决这个问题?

答案1

问题:

乍一看,这似乎是路径问题,但事实并非如此。策略spf需要一个正确的在其中查找Python的绝对路径后缀master.cf配置中。

我最初的路——我相信我是从网上某个地方的一些 HowTo 复制的- 整合中master.cf是:

policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/bin/python /usr/libexec/postfix/policyd-spf

很接近,但没有雪茄:提供的 Python 路径argv不包含版本号,因此错误被抛出。

解决方案:

第一的:找到Python所在的位置。在RHEL 8.1, 我懂了:

whereis python
python: /usr/bin/python3.6 /usr/bin/python3.6m /usr/lib/python3.6 /usr/lib64/python3.6 /usr/include/python3.6m /usr/share/man/man1/python.1.gz

第二: 供应一个正确的Python 的绝对路径策略spf配置在/etc/postfix/master.conf

policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/bin/python3.6 /usr/libexec/postfix/policyd-spf

最后,重新启动Postfix:

systemctl restart postfix

结论:

不要追着调查路径问题,这不是一个特定的问题RHEL 8任何一个。错误将被隐藏在指定的Python绝对路径中策略spf配置在master.cf

相关内容