如何修复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
相关产品推荐
相关产品推荐

