Postfix Policyd-spf設定のPythonエラー:「警告:サーバーのprivate / policyd-spfとの通信に問題があります。」

Postfix Policyd-spf設定のPythonエラー:「警告:サーバーのprivate / policyd-spfとの通信に問題があります。」

pypolicyd-spfPostfix 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

関連情報