我收到一个网站返回的错误消息,似乎是服务器端出了问题。但是,此服务器适用于该机器上的所有其他网站。我(开发人员)有可能做错了什么吗?我不知道从哪里开始在服务器上追踪这个问题,我的系统管理员说一切似乎正常:
The following recipient(s) cannot be reached:
Customer Service Account on 6/3/2009 11:00 AM
There was a SMTP communication problem with the
recipient's email server. Please
contact your system administrator.
<fgdc.myservername.net #5.5.0 smtp;550 Requested action not taken: mailbox unavailable>
服务器是 2003,64 位,运行 Exchange 2003
网站是 Asp.Net C#,使用 URL 路由
我应该从哪里开始解决这个问题?
更新
事实证明,我的系统管理员将问题归结为垃圾邮件保护层。事实证明,MIMESweeper 可能会丢弃该消息,因为它看到来自我们的 Web 服务器群的消息试图使用内部地址发送电子邮件。我们测试了外部地址(gmail、hotmail 等),它运行良好。
感谢大家的回答。事实证明,从我的角度来看,最好的答案是“与系统管理员交谈”……但我想更新一下这个问题,以便让有类似问题的人知道。
答案1
这就是服务器说你指定的“RCPT TO:”都是无效的。
首先,我建议您使用类似 Wireshark 的工具来捕获代码与服务器之间的 SMTP 对话,并验证您发送的内容是否符合预期。查看线路上发生的情况并查看它是否与您的代码所说的应该发生的情况相符总是一件好事。
如果您指定了正确的收件人,请联系服务器管理员并让他们检查。
答案2
当然,这可能是开发人员的错。例如,规范说 RCPT 应该是这样的:
RCPT TO:<[email protected]>
然而,实际发送这样的信息是很常见的做法:
RCPT TO: [email protected]
大多数功能齐全、成熟的 MTA 都接受后者,尽管这并不完全正确。某些应用程序(如邮件防火墙、CRM 邮件抓取器等)对此会非常严格,并会返回错误。
我并不是说这就是本案的原因,但这是一个例子,说明你的代码可以在大多数服务器上运行,但如果它在一小部分服务器上崩溃,那仍然是你的错。
我赞同埃文的建议,嗅探流量并了解实际发送的内容。
答案3
你能用常规武器向相关电子邮件地址发送电子邮件吗?如果能,那可能是你的代码。如果不能,那可能是他们的服务器(或者可能是试图为他们的服务器提供智能托管的防火墙)。
答案4
如果您想知道这是 serverfault 网站。如果您的系统管理员说是代码,那就是代码。错误总是开发人员的错误。如果您想责怪系统管理员,我听说有一个名为 stackoverflow 的网站可能会更同情 :)
严肃地说,是的,这是代码。根据错误,收件人无效。不知何故,网络服务器试图向名为“客户服务帐户”的帐户发送邮件,所有电子邮件地址的格式都是[电子邮件保护]。您收到 550 错误表明您已正确连接到目标邮件服务器,但没有名为“客户服务帐户”的用户
从技术上讲,550 表示无法中继,但我猜您正在尝试发送到内部邮箱。即使您尝试中继,此收件人的格式也不正确。