Postfixは読み取り専用ファイルシステムにあると思いますか?

Postfixは読み取り専用ファイルシステムにあると思いますか?

配信できない電子メールのデータベース更新を含むmail.log(Ubuntu 20.04 LTSのpostfix 3.2.13)のいくつかの分析を実行したかったので、通常のlogrotateスクリプトmail.logから/ var / logを除外するスクリプトを作成します。しました。スクリプトを実行するために、回転後の部分に新しい/etc/lorotate.d/mail_logを作成しました。スクリプトが呼び出されましたが、dbファイルを生成できません。

postfix/postmap[540039]: fatal: open /etc/postfix/bad_recipients.db: Read-only file system

これが実際に権限の問題である可能性があると考えて、syslogユーザーのsudoersルールを追加し(/var/log/mailファイルはsyslogユーザーが所有する)、logrotateスクリプトを修正しました。

/var/log/mail.log
{
        rotate 30
        daily
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
                sudo /usr/local/sbin/mailfail.sh
        endscript
}

ただし、すべてのmail.log()の上部に同じエラーが報告され、Read-only file systemデータベースは更新されません。

スクリプトが実行中であることは、スクリプトに対するchrootまたは権限、またはsudoの誤った設定の問題ではないことを示します。記録されている他のファイルには、syslogユーザー(ログファイルを所有するユーザー)の権限があります。

Rsyslogdは、衣類プロファイルが適用されるチェーン内で唯一の実行可能ファイルであるようです。ただし、プロファイルに/etc/postfix*(rwk)パスを追加して強制から文句を言ってもエラーには影響しません。

(コマンドでスクリプトを実行すると、期待どおりに機能します)

答え1

logrotateこれは、Postfixに対して有効なsystemdの保護機能が原因で発生する可能性があります。特に、ProtectSystem/etc、「full」または「strict」に設定すると読み取り専用になります。

編集したい項目をに移動する必要がありますvar。または変更を避けることができない場合は、/etc関連ユニットを上書きして「true」にsystemctl edit変更してください。これは保護されますが、保護されません。ProtectSystem/usr/etc

関連情報