![在 Debian 服务器上轮换邮件日志](https://linux22.com/image/482169/%E5%9C%A8%20Debian%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E8%BD%AE%E6%8D%A2%E9%82%AE%E4%BB%B6%E6%97%A5%E5%BF%97.png)
Debian 系统上的邮件日志不使用常规的 /etc/logrotate.d 脚本来轮换它们。
我想强制每天轮换我的邮件日志(无论多小),并压缩结果,以便日志文件的编号与我的其他(更繁忙的)邮件服务器的编号相匹配。本质上,我希望最终得到:
mail.log mail.log.0 mail.log.1.gz mail.log.2.gz ... mail.log.6.gz
有人能告诉我如何实现这个吗?
答案1
我假设您目前拥有库存 sysklogd 安装,并且您的日志文件使用默认的 /etc/cron.weekly/sysklogd 脚本轮换。
我建议您编辑 /etc/cron.weekly/sysklogd 脚本并修改:
logs=$(syslogd-listfiles --weekly)
到:
logs=$(syslogd-listfiles --weekly -s mail\*)
这将阻止默认脚本处理邮件日志。
编辑 /etc/logrotate.d/sendmail 并添加相应文件的条目。你可能需要类似以下内容:
/var/log/mail.log /var/log/mail.info /var/log/mail.warn /var/log/mail.err {
rotate 7
daily
compress
delaycompress
missingok
create 640 root adm
sharedscripts
postrotate
/etc/init.d/sysklogd reload
endscript
}
要检查您的配置,请运行:
logrotate -d /etc/logrotate.conf
并验证 logrotate 是否正在执行您想要的操作。