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

停Sendmail启Postfix后日志仍显示Sendmail?技术求助

问题分析与解决步骤

这种情况我碰到过好几次,核心问题大概率是系统默认的MTA(邮件传输代理)还没切换到postfix——虽然你停了sendmail服务、postfix也在监听25端口,但发信时调用的还是旧的sendmail命令,而非postfix提供的兼容版本。postfix本身自带了一个和sendmail命令兼容的脚本,用来替代系统原生的sendmail程序,但如果系统默认MTA没切换,发信操作还是会走旧的sendmail路径。

下面是具体的排查和解决步骤:

  • 第一步:检查当前默认MTA
    不同发行版的MTA管理工具略有差异:

    • 对于Debian/Ubuntu系,执行:
      update-alternatives --list mta
      
    • 对于RHEL/CentOS系,执行:
      alternatives --display mta
      

    如果输出里显示默认MTA是sendmail,那就是这里的问题了。

  • 第二步:切换默认MTA到postfix

    • Debian/Ubuntu系:运行交互式命令选择postfix:
      update-alternatives --config mta
      
      在弹出的选项里选postfix对应的编号即可。
    • RHEL/CentOS系:直接设置默认MTA为postfix的sendmail兼容程序:
      alternatives --set mta /usr/sbin/sendmail.postfix
      
      (如果路径不对,可以用find / -name sendmail.postfix找正确路径)
  • 第三步:验证sendmail命令的指向
    执行以下命令查看软链接:

    ls -l /usr/sbin/sendmail
    

    正常情况下应该指向postfix的sendmail兼容程序,比如:

    lrwxrwxrwx. 1 root root 25 Jun  5 10:00 /usr/sbin/sendmail -> /usr/libexec/postfix/sendmail
    

    如果还是指向原生sendmail的二进制,说明切换没生效,可手动调整软链接(推荐用alternatives工具,避免后续冲突)。

  • 第四步:测试发信并验证日志
    用命令行测试发信:

    echo "Test mail content" | sendmail -v root
    

    然后查看/var/log/maillog,此时应该会看到postfix相关的进程日志,而不是sendmail的记录,同时root收件箱也能收到测试邮件了。

额外排查点

如果上述步骤做完还是有问题,要检查发送邮件的程序是否硬编码了sendmail的路径——比如某些脚本直接写了/usr/sbin/sendmail.sendmail(原生sendmail的二进制),这时候即使切换了系统默认MTA,它还是会调用旧程序,需要修改程序配置里的MTA路径为postfix的sendmail兼容程序。

内容的提问来源于stack exchange,提问作者ZebDp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:21:54