私はpostfixを初めて使用し、メッセージを特定の電子メールアドレスに送信してbashスクリプトに送信しようとしています。重要な場合に備えて、CentOS6を実行しています。
私のスクリプトには(テスト用の)777権限があり、テストアカウントに電子メールを送信すると、postfixがスクリプトを実行しようとしていることがわかります。これはメールログからの関連行です:
2月16日15:08:40 lserver2 postfix/local [19675]:F4045103000:to =、orig_to =、relay = local、delay = 1737、delays = 1737/0.01/0/0.01、dsn = 4.3.0 、status = deferred(一時的な失敗。コマンド出力:ローカル:致命的:execvp/data/scripts/testscript:アクセスが拒否されました)*
これは権限の問題のようです。スクリプトを「postfix」または「nobody」として実行しようとすると、エラーが発生します:このアカウントは現在利用できません。
ここからどこに行けばいいのかわからない……次のステップがはっきりしない投稿をいくつか読んだ。 (私はすべてのメールをスクリプトにリダイレクトしたくありません、そして1つの答えはとても単純な何かのために複雑に見える方法です)
たとえば、スクリプトがfoo
によって所有されている場合は、次のことを試してください。
/home/foo/.aliases
を作成し、piping行を/etc/aliases
からそこに移動します。postalias /home/foo/.aliases
を実行します。/home/foo/.aliases
をalias_maps
の/etc/postfix/main.cf
に追加します。/home/foo/.aliases
および/home/foo/.aliases.db
の所有者はfoo
である必要があることに注意してください。
http://www.postfix.org/ADDRESS_REWRITING_README.html#aliases を参照してください。それは言う:
セキュリティ上の理由から、コマンドとファイルの宛先への配信は、エイリアスデータベースの所有者の権限で実行されます。
SOの this answer を参照してください。2つのオプションがあり、1つはTsutomuが共有したものです。
もう1つはdefault_privs = <owner of the executing script>
in main.cf
。
それは私の許可拒否の問題を解決するのに役立ちます。