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

如何修复Postfix发送系统邮件时的默认发件人地址问题

如何修复Postfix发送系统邮件时的默认发件人地址问题

嘿,我明白你的问题了——系统邮件默认用root@coconut作为发件人,而SendGrid不认这个没验证过的短域名,所以才会触发发件人身份错误。从你提供的日志也能确认这一点:

Jul 19 09:28:57 coconut postfix/pickup[624347]: 290E754988: uid=0 from=root@coconut

下面是几个靠谱的解决办法,你可以根据需求选:

方法一:用Postfix的发件人映射统一替换(推荐)

这个方法能一次性把所有来自root@coconut的邮件发件人替换成你在SendGrid验证过的合法地址,一劳永逸:

  • 首先编辑Postfix的发件人映射文件/etc/postfix/sender_canonical,添加一行(把占位符换成你自己的验证地址):
    root@coconut    your-valid-sender@your-verified-domain.com
    
  • 接着打开/etc/postfix/main.cf,添加或修改以下配置项,告诉Postfix启用这个映射:
    sender_canonical_classes = envelope_sender, header_sender
    sender_canonical_maps = hash:/etc/postfix/sender_canonical
    
  • 最后更新Postfix的哈希表并重启服务生效:
    postmap /etc/postfix/sender_canonical
    systemctl restart postfix
    

方法二:修改主机的完整域名(FQDN)

如果你希望系统本身就用合法的域名作为发件人后缀,可以直接修改主机的完整域名:

  • 编辑/etc/hostname,把coconut改成你的验证域名后缀,比如:
    coconut.your-verified-domain.com
    
  • 再编辑/etc/hosts,确保有这样一行配置:
    127.0.0.1    coconut.your-verified-domain.com coconut
    
  • 执行命令生效(或者重启系统):
    hostnamectl set-hostname coconut.your-verified-domain.com
    

这样Postfix会自动用完整域名作为发件人后缀,变成root@coconut.your-verified-domain.com,只要这个域名在SendGrid验证过就没问题。

方法三:单独配置mailx的默认发件人

如果只是想针对mailx命令临时解决,或者只给root用户单独设置:

  • 每次发送邮件时手动指定发件人:
    ps -ely | mailx -s "Testing" -r "your-valid-sender@your-verified-domain.com" example@foo.com
    
  • 或者编辑root用户的~/.mailrc文件,添加一行默认发件人配置,以后用mailx发邮件就自动用这个地址了:
    set from="your-valid-sender@your-verified-domain.com"
    

修改完成后,你可以再执行一次测试命令ps -ely | mailx -s Testing example@foo.com,然后查看/var/log/mail.log,应该能看到发件人已经变成你设置的合法地址,SendGrid也就不会报错啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:58:18