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

Postfix发送邮件报错:搭建Postfix+Dovecot+Roundcube邮件服务器遇中继拒绝问题

解决Postfix发送邮件时454 Relay access denied错误

这个问题我之前帮不少人排查过,454 Relay access denied本质是Postfix在阻止你的邮件中继到外部域名——毕竟默认情况下Postfix为了防止被当成开放中继滥用,只会允许本地可信来源或者授权用户发送外部邮件。结合你用Postfix+Dovecot+Roundcube的架构,咱们一步步来解决:

关键配置修改(编辑/etc/postfix/main.cf)

1. 配置核心中继控制规则

找到smtpd_relay_restrictions参数(如果没有就新增),设置为:

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
  • permit_mynetworks:允许你定义的本地可信网络内的客户端中继邮件
  • permit_sasl_authenticated:允许通过SASL认证的用户(也就是Roundcube里登录的合法邮箱用户)中继邮件
  • defer_unauth_destination:拒绝所有未授权的中继请求,这是防止开放中继的关键

2. 确保mynetworks配置精准

这个参数定义本地可信网络,只添加你绝对信任的地址段,比如:

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

如果你的服务器在局域网内(比如192.168.1.0/24),可以把内网网段加上,但绝对不要设置成0.0.0.0/0,否则会变成开放中继被垃圾邮件发送者盯上。

3. 对接Dovecot SASL认证

因为你搭配了Dovecot,Postfix可以直接用Dovecot的认证服务验证用户身份,添加或修改以下参数:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname

这些配置让Postfix和Dovecot的认证套接字对接,当用户在Roundcube输入账号密码登录后,Postfix会识别为授权用户,允许其发送外部邮件。

应用配置并验证

修改完配置后,重启Postfix服务生效:

sudo systemctl restart postfix

接下来可以用Roundcube登录你的邮箱,尝试发送一封邮件到外部地址(比如gmail、QQ邮箱)。如果还是有问题,可以用telnet手动测试认证流程:

telnet your-mail-server-domain 587
EHLO localhost
AUTH PLAIN [这里输入base64编码的"用户名\0密码",可以用`echo -ne "user@domain.com\0yourpassword" | base64`生成]
MAIL FROM:<your-email@domain.com>
RCPT TO:<external-email@example.com>

如果RCPT TO命令没有返回错误,说明中继配置已经正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:31:23