QMail 提高 Log 檔案大小限制

QMail 的 Log 紀錄檔一般會儲存在 /var/log/qmail/ 下,然後將每一個服務分開儲存到各自的目錄,目錄下會有一個 current 檔案,這個就是 QMail 的 Log, 例如 smtpd 的 Log 在 /var/log/qmail/smtpd/current.

這個 current 檔案預設會在 100KB 時自動清空加入新內容,要調高這個限制,可以開啟 log/run 檔案,例如 smtpd:

# vi /var/qmail/supervise/qmail-smtpd/log/run

找到類似這行類似:

exec setuidgid $LOGUSER multilog t n5 s16777215 /var/log/qmail/smtpd/

上面的 “s16777215” 表示 16MB (前面要加 s),即 daemontools 下的 multilog 會在 smtpd/current 到達 16MB 時自動清空加入新內容。


但這個 s16777215 已經是 multilog 的設定值上限,即使設定更大的數值,還是會在 16MB 時清空紀錄檔。但我的 Email Server 比較繁忙,大約 5 至 6 個小時便滿了,對於想寫一些 Script 統計 QMail 的使用量很不方便,這個需要修改 daemontools 的程式碼,以下是我建立的 multilog patch,實際上只時改了一行程式碼:

下載: multilog_filesize_limit.patch

安裝 patch 後需要重新編譯 daemontools, 之後 multilog 的檔案上限會提高為 104857600 bytes, 即 100MB。

最後需要更新 /var/qmail/supervise/qmail-smtpd/log/run 設定新的檔案上限,並重新啟動 QMail.


Leave a Reply