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

配置外部域名后Postfix无法向Ubuntu本地用户收发邮件求助

解决Postfix本地账户无法收发邮件的问题

你遇到的核心问题是Postfix没有把你的本地域识别为本地投递范围,导致它把root这类本地用户自动拼接成root@mydomain.com,然后试图通过外部SMTP服务器投递——但你的外部域名服务器要么没开放25端口,要么被防火墙拦截了,这才出现了日志里的Connection refused错误。

下面是具体的修复步骤:

1. 修改Postfix核心配置

打开Postfix的主配置文件:

sudo nano /etc/postfix/main.cf

找到mydestination参数,确保它包含你的服务器主机名、localhost,以及你的外部域名。例如:

mydestination = $myhostname, localhost.$mydomain, localhost, mydomain.com
  • $myhostname是你的服务器主机名(比如日志里的media),localhost是本地回环地址,加上你的外部域名mydomain.com后,Postfix就会知道这些域下的收件人是本地用户,直接投递到本地邮箱,而不会转发到外部。

同时确认local_recipient_maps参数没有被注释,默认配置应该是:

local_recipient_maps = unix:passwd.byname $alias_maps

这个参数用来验证本地用户是否存在,避免投递到不存在的账户。

2. 重启Postfix生效

保存配置文件后,重启Postfix服务:

sudo systemctl restart postfix

3. 测试本地邮件投递

执行测试命令:

echo "Test local mail content" | mail -s "Local Mail Test" root

然后可以通过以下方式查看邮件:

  • 直接查看本地邮箱文件:cat /var/mail/root
  • 用系统自带的mail命令进入收件箱查看

为什么之前会失败?

从你的日志可以看到,Postfix把root解析成了root@mydomain.com,然后尝试连接mydomain.com的外部IP的25端口。大部分VPS提供商默认会拦截出站25端口(反垃圾邮件),或者你的域名MX记录指向的服务器没有开放25端口,导致连接被拒绝,邮件一直处于延迟状态。通过修改mydestination,我们告诉Postfix:这些域的邮件不需要往外发,直接在本地处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:52:34