Rhel

為什麼procmail掛起?

  • May 10, 2016

我設置了一個愚蠢的 sendmail aliases.local 文件來將電子郵件傳遞給 procmail。這是在古代 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?

感謝杰夫·沙勒。他的評論導致了問題的解決。

響應日誌的大小是否約為 1697659298 字節?可能是 procmail 正在嘗試附加到一個大文件並自行備份。– Jeff Schaller 20 小時前

假設有一個 cron 作業執行以輪換日誌文件並減小其大小。一旦我修復了那個 cronjob,問題就消失了。我還發現 Solaris 系統上的 procmail 是使用不同的文件鎖定選項建構的。在 Solarisprocmail -v節目Locking strategies: dotlocking, fcntl(), lockf()和 linuxprocmail -v節目上Locking strategies: dotlocking, fcntl()。不確定那是什麼意思。如果有人知道請發表評論。

我找到了這個連結: http: //pm-doc.sourceforge.net/doc/#compiling_procmail_and_choosing_locking_scheme

引用自:https://unix.stackexchange.com/questions/282127