信箱不可用。 服务器响应为:5.7.1无法中继错误

我在netsol服务器上托管了我的一个网站。 从那里, contact.aspx必须使用Exchange服务器发送电子邮件。 当我尝试发送电子邮件时:

错误 :邮箱不可用。 服务器响应为:5.7.1无法中继

码:

 MailMessage message = new MailMessage(@"xxx@example.com", @"test_user@yahoo.com", "New Message", "Exchange"); SmtpClient mail = new SmtpClient("exchange.abc.com", 29); mail.EnableSsl = true; mail.Credentials = new NetworkCredential(@"xxx@example.com", @"password"); mail.UseDefaultCredentials = false; mail.DeliveryMethod = SmtpDeliveryMethod.Network; mail.Send(message); 

我试过的选项:

  • 在465或587或25号港口进行测试
  • 更改了SmtpDeliveryMethod.PickupDirectoryFromIis
  • 无法配置IIS(SMTP服务器),因为它托管在其他人的服务器上

大多数SMTP服务器的默认配置不是从不受信任的源中继到外部域。 例如,假设您联系foo.com的SMTP服务器并要求它向bar@xyzzy.com发送消息。 由于SMTP服务器并不真正知道您是谁,因此它将拒绝中继邮件。 如果服务器确实为您做到了这一点,它将被视为一个开放中继 ,这是垃圾邮件发送者经常做的事情。

如果您联系foo.com邮件服务器并要求它发送邮件到somebody@foo.com,它可能会让您这样做。 这取决于他们是否相信你是谁,你是谁。 通常,服务器将尝试进行反向DNS查找,如果您发送的IP与DNS中的MX记录的IP地址不匹配,则拒绝发送邮件。 因此,如果您说您是bar.com邮件服务器但您的IP地址与bar.com的MX记录不匹配,那么它将拒绝传递该邮件。

您需要与该SMTP服务器的管理员联系以获取身份validation信息,以便它允许您进行中继。 联系SMTP服务器时,您需要提供这些凭据。 通常它是用户名/密码,或者它可以使用Windows权限。 取决于服务器及其配置方式。

有关如何发送凭据的示例,请参阅无法使用SMTP向外部域发送电子邮件 。

我使用Windows Server 2012进行托管很长一段时间,并且它在多年后停止工作没有任何问题。 我的解决方案是将服务器的公共IP地址添加到中继列表并启用Windows集成身份validation。

我刚做了两处修改而没有哪些帮助。

转到IIS 6 Manager

转到IIS 6 Manager

选择SMTP服务器的属性

选择SMTP服务器的属性

在选项卡Access上,选择中继

在选项卡Access上,选择中继

添加您的公共IP地址

添加您的公共IP地址

关闭对话框并在同一选项卡上单击“身份validation”按钮。

添加集成Windows身份validation

添加集成Windows身份验证

也许不需要一些步骤,但它有效。

我们有这个问题。 在权限和安全性方面,一切都设置得很好。

在大海捞针之后。 问题是某种启发式。 在电子邮件正文中,无论何时列出某个电子邮件地址,我们都会从我们的Exchange服务器收到上述错误消息。

经过2天的疯狂测试和拔毛才发现这一点。

因此,如果您已经检查了所有内容,请尝试将电子邮件正文更改为“test”一词。 如果在那之后,您的电子邮件没有问题,那么您就会遇到某种垃圾邮件/启发式filter问题