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