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

관련 정보