![使用相同的 SMTP/Exchange 服务器从 Coldfusion 发送的电子邮件在一台机器上有效,但在另一台机器上失败](https://linux22.com/image/795755/%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%20SMTP%2FExchange%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%8E%20Coldfusion%20%E5%8F%91%E9%80%81%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%A8%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%9C%89%E6%95%88%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E5%A4%B1%E8%B4%A5.png)
首先,如果这个问题太模糊或者信息太少而无法真正回答,我深表歉意。我通常不会处理这些问题,也没有完全访问环境的权限。但是,托管服务提供商似乎很难追踪到这个问题,所以我希望有人至少能为我提供一些关于最可能出现的问题的合理猜测。
情况如下:我工作的客户有一个托管 IT 环境,基于运行 Windows 2008 R2 Standard 的虚拟机。我们基于 Coldfusion 9 的网站最近从一台虚拟机迁移到另一台虚拟机,尽管 Coldfusion 的配置方式完全相同,使用相同的 SMTP 服务器,即客户的 Exchange 服务器托管在与两台 Web 服务器相同的环境和 AD 中,但向外部收件人发送电子邮件不再有效。从旧机器测试时,它仍然运行良好。
这是我目前学到的(所有电子邮件都是使用客户端域上的有效发件人地址发送的):
- 仅发送给同一域上的其他收件人的电子邮件才会顺利送达。
- 仅发送给其他域上的外部收件人的电子邮件永远不会被送达。
- 向内部和外部收件人发送电子邮件时,不会送达任何电子邮件。
- 当内部地址收到这些电子邮件时,发件人现在会显示为“[电子邮件保护]“,而从旧机器发送时,它只显示“发送方”。在我看来,这可能暗示 Exchange 机器“识别”了旧的 Web 服务器,而对新的 Web 服务器来说却很陌生。
- 在 Coldfusion 的邮件日志中,所有消息似乎都已成功传送至 SMTP 服务器。
如果您知道要查看什么设置、要搜索什么日志条目或如何将旧的 Web 服务器与新的 Web 服务器进行比较,我们将不胜感激。
答案1
您可能需要检查新的 coldfusion 盒子的 IP,并可能将其添加到邮件传输区域中的 exchange 以允许邮件中继。如果您的 coldfusion 代码未使用带有用户名和密码的 smtp,则很可能是其 IP 地址被授予了邮件中继访问权限,并且由于您现在从新 IP 发送,您的外部中继被阻止。这也解释了为什么您的本地电子邮件通过正常,但您的外部电子邮件却无法通过。
所以基本上,进入你的 CF 机器,找出它的 IP,可能通过查看网络连接或 dslreports.com/whois,然后转到交换、邮件传输...因为我手边没有交换服务器,所以你必须查找其余部分。
或者
在您的 Exchange 服务器上,设置常规用户/邮箱帐户,并创建用户名/密码。将其设置为不会过期。然后更新您的代码以通过该帐户进行身份验证。