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

POSTFIX/DOVECOT SMTP连接Linux VPS超时问题求助(Laravel 10)

排查Postfix+Dovecot SMTP超时问题的实操步骤

1. 确认服务状态与端口监听

  • 检查Postfix运行状态:systemctl status postfix,确保输出显示active (running)
  • 验证端口监听:ss -tulpn | grep postfix,确认25、465、587端口处于监听状态(若仅显示IPv6监听,需调整Postfix配置支持IPv4)

2. 检查Postfix核心配置

编辑/etc/postfix/main.cf,重点核对以下项:

  • inet_interfaces = all:确保绑定所有网卡,而非仅IPv6或特定IP
  • smtpd_tls_cert_file/smtpd_tls_key_file:确认SSL证书路径正确且有效(自签证书需客户端信任,生产环境建议用Let's Encrypt证书)
  • 开启SASL认证并关联Dovecot:
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    

3. 验证Dovecot与Postfix的联动配置

编辑/etc/dovecot/conf.d/10-master.conf,确认auth服务的socket配置:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}
  • 重启Dovecot:systemctl restart dovecot
  • 验证Postfix支持Dovecot认证:postconf -a,输出需包含dovecot

4. 查看实时日志定位错误

通过日志抓连接请求的具体问题:

  • Postfix日志:tail -f /var/log/mail.log(部分系统为/var/log/maillog)
  • Dovecot日志:tail -f /var/log/dovecot.log
    发起telnet或客户端连接时,日志会明确显示认证失败、证书错误、权限问题等具体原因

5. 本地SMTP交互测试

用telnet连接后执行EHLO localhost,如果无响应:

  • 重启Postfix:systemctl restart postfix
  • 检查Postfix进程是否僵死:ps aux | grep postfix,异常则强制终止后重启

6. 排查外部网络限制

  • 联系VPS服务商确认25端口是否被封禁(多数服务商默认封25端口防垃圾邮件)
  • 再次核对防火墙规则:
    • firewalld:firewall-cmd --list-all
    • iptables:iptables -L -n
      确保相关端口的入站/出站规则均已放行

7. Laravel配置补充

服务端问题解决后,核对.env配置:

MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=587
MAIL_USERNAME=你的邮箱账号
MAIL_PASSWORD=你的邮箱密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的发件邮箱
MAIL_FROM_NAME="${APP_NAME}"

若用自签证书测试,可临时在config/mail.php的smtp配置中添加:

'verify_peer' => false,
'verify_peer_name' => false

(生产环境不推荐禁用证书校验)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:42:25