发送邮件时中继访问被拒绝,网络外的其他域
Posted
技术标签:
【中文标题】发送邮件时中继访问被拒绝,网络外的其他域【英文标题】:Relay access denied on sending mail, Other domain outside of network 【发布时间】:2013-06-24 06:42:50 【问题描述】:发送邮件导致错误“中继访问被拒绝”。
每当我尝试从“outside_network”向“other_domain”发送邮件时,它都会抛出“Relay access denied”。 它适用于“outside/inside_network”中的“myown_domain”和“inside_network”中的“other_domain”。
这里是 telnet 命令列表。
mail from:myself@mydomain.com
- 250 2.1.0 Ok
rcpt to:yourself@mydomain.com
- 250 2.1.5 Ok
rcpt to:yourself@yourdomain.com
- 554 5.7.1 <yourself@yourdomain.com>: Relay access denied.
rcpt to:yourself@gmail.com
- 554 5.7.1 <yourself@gmail.com>: Relay access denied.
rcpt to:yourself@yahoo.com
- 554 5.7.1 <yourself@yahoo.com>: Relay access denied.
我遵循了“Microsoft Support”中描述的所有步骤,并确保服务器配置正确并且不会拒绝任何邮件。我还尝试使用 this one 等几个博客进行追踪。
虽然使用 MxToolbox 也得到了相同的结果“中继访问被拒绝”。
由于“中继访问被拒绝”是很常见的问题。那里有很多博客/文档。我试图阅读所有内容,但我认为我找错地方了。
有人有什么建议吗?
【问题讨论】:
【参考方案1】:如果当您尝试将电子邮件从网络外部发送到您的服务器不具有权威性的域时,中继访问被拒绝,则表示您的接收连接器未授予您发送/中继的权限。您最有可能需要做的是向服务器进行身份验证以被授予中继权限,但这确实取决于您的接收连接器的配置。在 Exchange 2007/2010/2013 中,您需要启用 ExchangeUsers 权限组以及基本身份验证等身份验证机制。
一旦您确定您的接收连接器已配置,请确保您的电子邮件客户端已配置为身份验证以及 SMTP 服务器。这取决于您的服务器设置,但通常对于 Exchange,您将自行配置用户名,无需将域附加或作为前缀。
要通过 telnet 验证进行测试,您可以在此处查看我的帖子以获取指导:https://jefferyland.wordpress.com/2013/05/28/essential-exchange-troubleshooting-send-email-via-telnet/
【讨论】:
【参考方案2】:配置$mail->SMTPAuth = true;
是我的解决方案。原因是因为未经身份验证,邮件服务器会回答“中继访问被拒绝”。自从将其放入我的代码中后,所有邮件都可以正常工作。
【讨论】:
【参考方案3】:我使用 THUNDERBIRD 作为MUA,我也遇到了同样的问题。 我解决了在 main.cf 上的 mynetworks 参数中添加家用 PC 的 IP 地址
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 MyIpAddress
附:我的家用 PC 没有静态 IP,所以当我的 ISP 更改它时,我必须每次都进行调整。
【讨论】:
【参考方案4】:如果使用 phpmailer 类,请将您的 SMTP 身份验证设置为 true:
$mail->SMTPAuth = true;
【讨论】:
虽然这个答案还不够充分,但它仍然不正确,应该是$mail->SMTPAUTH = true;
以上是关于发送邮件时中继访问被拒绝,网络外的其他域的主要内容,如果未能解决你的问题,请参考以下文章
Linux postfix/dovecot 554 中继访问被拒绝
跨域调用错误:XMLHttpRequest:网络错误 0x80070005,访问被拒绝
由于“中继访问被拒绝”而被阻止的 Azure Sql 托管实例数据库邮件到外部电子邮件