Linux 技术手札

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.

Exit mobile version