이메일을 procmail로 전달하기 위한 어리석은 sendmail aliases.local 파일 설정이 있습니다. 이것은 고대 Solaris 시스템에서 실행되는 설정입니다. 이제 RHEL6 시스템에서 실행하고 있습니다.
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.2 (Santiago)
그래서 나는 /etc/mail/aliases.local 파일을 가지고 있습니다:
users-log: "|/usr/bin/procmail /auto/data/users/logs/.procmailrc"
/auto/data/users/logs/.procmailrc는 다음과 같습니다:
# cat /auto/data/users/logs/.procmailrc
MAILDIR=/auto/data/users/logs/
:0
responselog
내가 이해한 바로는 procmail은 /auto/data/users/logs/responselog 파일에만 이메일을 씁니다. 그러나 어떤 이유로 procmail 프로세스의 수가 증가하는 것을 봅니다.
# ps -ef | grep procmail | wc -l
19
# sleep 2
# ps -ef | grep procmail | wc -l
23
그리고 그 숫자는 계속 증가하고 있습니다. strace -p를 실행하면 다음과 같은 출력이 표시됩니다.
# ps -ef | grep procmail
mail 2872 2861 0 17:05 ? 00:00:00 /etc/smrsh/procmail /auto/data/users/logs/.procmailrc
...
# strace -p 2872
Process 2872 attached - interrupt to quit
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=1697659298, len=0}
그리고 프로세스는 거기에서 중단됩니다. 어떻게 되어가나요? 내가 procmail을 잘못 구성했나요?
답변1
제프 샬러에게 감사드립니다. 그의 의견이 문제 해결로 이어졌습니다.
응답 로그의 크기는 약 1697659298바이트인가요? 어쩌면 procmail이 큰 파일에 추가하고 자체적으로 백업하려고 할 수도 있습니다. – Jeff Schaller 20시간 전
로그 파일을 회전하고 크기를 줄이기 위해 실행 중인 cron 작업이 있다고 가정합니다. 해당 cronjob을 수정하고 나면 문제가 사라졌습니다. 나는 또한 Solaris 시스템의 procmail이 다양한 파일 잠금 옵션으로 구축되어 있다는 사실도 발견했습니다. Solaris에 procmail -v
표시 하고 Locking strategies: dotlocking, fcntl(), lockf()
Linux에 procmail -v
표시합니다 Locking strategies: dotlocking, fcntl()
. 그게 무슨 뜻인지 잘 모르겠습니다. 아시는 분 계시면 댓글 부탁드립니다.
다음 링크를 찾았습니다.http://pm-doc.sourceforge.net/doc/#compiling_procmail_and_choosing_locking_scheme