从测试环境发送的沙盒/捕获(catchall)邮件

时间:2018-02-06 23:37:09

标签: testing smtp integration-testing hmail-server

我希望能够测试我自动发送的邮件是否真的被发送,但我不希望这些邮件泄漏到现实世界。有没有办法配置我的邮件设置,以便从我的测试环境发送的所有邮件自动转发到单个邮箱?

我想我可以在配置中配置地址,但如果我用我的测试电子邮件替换系统中的每封电子邮件,我将无法清楚地检查邮件是否真的正确创建。

在测试时,我可能会输入真实世界的电子邮件地址,但我不想冒险将邮件发送给客户。

1 个答案:

答案 0 :(得分:0)

安全隔离测试环境的一种方法是配置一个邮件服务器,捕获所有域的所有邮件,并将它们放在一个大的收件箱中。如果我在测试环境中配置该邮件服务器,则所有邮件都是正确的。

许多邮件服务器都支持此方案。我在Azure VM上使用了一个开源的hmailserver。安装步骤:

  1. 创建Azure VM。我使用的是标准DS1 v2,但较轻的版本也可能就足够了。我选择了Windows Server 2016.再次,许多其他人也可以使用。
  2. 为您的机器提供DNS名称。例如的 anymail.yourregion.cloudapp.azure.com
  3. 在门户网站中,为 TCP
  4. 打开端口 25,143 578
  5. 通过远程destop连接
  6. 在计算机本身上,还可以在防火墙设置中打开端口 25,143 587
  7. 启用.net 3.5。我是通过程序和功能=>完成的。打开和关闭Windows功能。
  8. 将hmailserver下载到您的VM D:驱动器(这是临时空间)。您需要将hmailserver.com-domain添加到您信任的站点以进行下载。
  9. 使用默认设置安装它。然后配置它:

  10. 创建域 anymail

  11. 在域名标签高级上配置cathchall-address:anymail @ anymail
  12. 在您的域中创建一个帐户: anymail @ anymail ,然后选择一个简单的密码。
  13. 创建规则:删除所有邮件 的 mailer-daemon@anymail.yourregion.cloudapp.azure.com
  14. 在设置中 - SMTP输入 anymail.yourregion.cloudapp.azure.com 作为本地主机名。设置重试次数和每次重试之间的分钟数为0.将远程主机名设置为localhost端口25(因此您实际上无法邮寄)
  15. 反垃圾邮件白名单 0.0.0.0 255.255.255.255
  16. 在高级 - 镜像中输入 anymail @ anymail
  17. 在高级 - IP范围中删除localhost
  18. 在高级 - IP范围内,双击互联网,并在“请求SMTP身份验证”之前删除所有复选框
  19. IN advanced - Autoban禁用autoban。
  20. 现在一切都应该有效。您应该能够在配置中配置 anymail.yourregion.cloudapp.azure.com ,也可以在您的邮件程序(例如outlook)中配置。您可以检查是否可以从任何发件人向任何收件人发送邮件。测试邮件到您的常规电子邮件地址不会到达您的常规邮箱。

    <强>诊断

    在调整设置时,我经常查看状态 - &gt;送货队列。此队列不会自动刷新,因此您需要手动刷新它。 您可能需要在测试时清除它。 (我经常进入循环,导致许多消息。)