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

18

我已经将我的其中一个网站托管在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服务器)

你能使用@JimMischel的答案进行测试吗? - Kiquenet
3个回答

47

大多数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服务器的管理员联系以获取认证信息,以便它允许您中继。在联系SMTP服务器时,您需要提供这些凭据。通常是用户名/密码,或者可以使用Windows权限。这取决于服务器及其配置方式。
请参阅无法使用SMTP发送电子邮件到外部域,了解如何发送凭据的示例。

这影响了我们。当我们使用有线连接时,它可以工作。但是在工作的WiFi连接上,由于不同的IP范围,它无法工作。我们不得不更新Exchange以包括此IP范围。 - Kyle
感谢您的解释,这就是为什么我可以向同一主机上的地址发送邮件而不能发送到其他主机的原因。 - Talha Imam

11

我使用Windows Server 2012长期作为主机,经过多年没有任何问题后突然停止工作。我的解决方案是将服务器的公共IP地址添加到中继列表中,并启用Windows集成身份验证。

我只做了两个更改,但不知道哪一个起了作用。

进入IIS 6管理器

进入IIS 6管理器

选择SMTP服务器属性

选择SMTP服务器属性

在Access选项卡上,选择中继

在Access选项卡上,选择中继

添加您的公共IP地址

添加您的公共IP地址

关闭对话框,然后在同一选项卡上点击身份验证按钮。

添加集成的Windows身份验证

添加集成的Windows身份验证

也许有些步骤是不必要的,但它确实起作用。


1
我们中的一些人没有安装SMTP虚拟服务器。 - Talha Imam

3
我们遇到了这个问题。在权限和安全方面一切都设置得很好。
经过大量的尝试,我们发现问题出在启发式算法上。在电子邮件正文中,每当列出某个特定的电子邮件地址时,我们就会从交换服务器收到以上错误信息。
我们花了两天时间进行疯狂的测试和挠头才找到了这个问题。
所以,如果你已经检查了所有内容,请尝试将电子邮件正文更改为只包含单词“test”。如果之后你的电子邮件能够正常发送,那么你可能像我们一样遇到了某种垃圾邮件/启发式过滤器问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接