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

相關內容