You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改myhostname后Postfix日志不完整,syslog无法记录投递与队列相关日志

修改myhostname后Postfix日志不完整,syslog无法记录投递与队列相关日志

我之前也碰到过类似的问题,核心原因其实是Postfix发送syslog日志时用的是你设置的myhostname,而rsyslog默认只认机器本身的真实hostname,导致投递、队列这类日志被过滤掉,只有优先级高的警告能侥幸记录下来。

下面给你两种可行的解决办法,选一个适合你的就行:

方法一:让Postfix用机器真实hostname发syslog日志

你的Postfix版本是3.5.6,已经支持syslog_hostname参数,直接配置它让Postfix用机器的真实FQDN发送日志:

  1. 执行命令设置参数(自动获取机器的FQDN):
    postconf -e "syslog_hostname = $(hostname -f)"
    
  2. 重启Postfix生效:
    systemctl restart postfix
    

这样Postfix发往syslog的日志主机标识就和机器本身一致了,rsyslog就能正常接收所有日志内容。

方法二:修改rsyslog配置,兼容Postfix的自定义hostname

如果不想改Postfix的配置,也可以调整rsyslog让它不管日志的主机名是什么,只要是Postfix的日志都记录:

  1. 编辑rsyslog的默认配置文件:
    nano /etc/rsyslog.d/50-default.conf
    
  2. 找到原来的mail日志规则(大概是*.mail;auth,authpriv.none -/var/log/mail.log),在它前面添加一行规则:
    # 捕获所有Postfix相关日志
    if $programname startswith 'postfix' then /var/log/mail.log
    & stop
    
  3. 保存后重启rsyslog:
    systemctl restart rsyslog
    

这样不管Postfix用什么主机名发日志,只要程序名是postfix开头的,都会被记录到/var/log/mail.log里。

另外提一句,你设置maillog_file后日志正常,是因为这个参数让Postfix直接把日志写到指定文件,绕开了syslog的过滤逻辑,所以所有内容都能正常显示。

备注:内容来源于stack exchange,提问作者hetOrakel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:43:09