電子メールを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