背景:我正在集成两个使用 ASP .NET 和 JSP/Struts 开发的独立 Web 应用程序。因此,它们托管在两种不同的服务器技术上,即 Win2K3 和 Redhat Enterprise Server 5.5。
问题:我的测试环境中有一份包含真实电子邮件地址的生产数据副本。我需要测试这些应用程序的电子邮件功能,但我不想让它们发送实际的电子邮件。有没有办法捕获并重定向所有外发电子邮件?
理想情况下,我想将所有外发电子邮件发送到另一个电子邮件(即[电子邮件保护]) 以便我的测试人员可以查看它们。
我在这里先向您的帮助表示感谢!
答案1
首先,你应该从开发环境中清除真实数据。还要注意这里有很多变量和选项。
在 Linux 开发服务器上,我首先会通过过滤流量或停止邮件守护程序来阻止邮件发送。要停止流量,这在大多数现代环境中都有效:
iptables -A OUTPUT -p tcp --dport 25 -j DROP
我的开发网络已经无法从外部连接到此端口和大多数其他端口,因为这是默认的丢弃策略,我不允许例外。我通常为每个子网指定一个中继 smtp,在那里我可以实施额外的中继策略。开发服务器也不允许通过此主机进行中继。
稍后,您可能必须先清除邮件队列中的邮件,然后重新启动守护程序或根据您的方法删除规则。
在 Windows 上,通常没有运行本地邮件服务器。转到源头并阻止其工作,或指向已丢弃电子邮件的 Linux 服务器。
如果服务器之间共享同一个 smtp 中继主机,则可以停止来自这些服务器的邮件中继。如果它们共享同一个网关,则可以在那里丢弃流量。
如果您想测试应用程序功能,您可以创建一个本地服务器的测试电子邮件帐户,并将电子邮件发送到该帐户或查看外发电子邮件日志。这就是我在我们的开发环境中强制执行的。就我而言,开发人员只能向特定服务器上的本地用户帐户发送电子邮件。不能中继或传递到本地邮件服务器。任何更多操作都可能引入错误的可能性,而且很可能会发生。
如果您仍然坚持重新路由所有外发邮件,则解决方案将取决于您的 MTA。