Sandbox/catch (catchall) 从测试环境发送的邮件
Sandbox/catch (catchall) mails sent from test environment
我希望能够测试我自动发送的邮件是否真的发送了,但我不希望这些邮件泄露到现实世界。有没有办法配置我的邮件设置,以便从我的测试环境发送的所有邮件都自动转发到一个邮箱?
我想我可以在我的配置中配置地址,但是如果我用我的测试电子邮件替换我系统中的每个电子邮件,我将无法清楚地检查邮件是否真的正确创建。
在测试时,我可能会输入真实世界的电子邮件地址,但我不想冒险将邮件发送给客户。
安全隔离测试环境的一种方法是配置一个邮件服务器,它可以捕获来自所有域的所有邮件,并将它们放入一个大收件箱中。如果我在我的测试环境中配置该邮件服务器,所有邮件都会被截断。
许多邮件服务器都支持这种情况。我在 Azure VM 上使用了一个开源的 hmailserver。安装步骤:
- 创建 Azure VM。我使用的是标准的 DS1 v2,但较轻的版本可能也足够了。我选择了 Windows Server 2016。同样,许多其他服务器也可以。
- 为您的机器指定一个 DNS 名称。例如anymail.yourregion.cloudapp.azure.com
- 在门户中,为 TCP[= 打开端口 25、143 和 578 60=]
- 通过远程停止连接
- 在机器本身上,也在防火墙设置
中打开端口25、143和587
- 启用.net 3.5。我是通过程序和功能 => 打开和关闭 Windows 功能来做到这一点的。
- 将 hmailserver 下载到您的 VM D: 驱动器(这是临时的 space)。您需要将 hmailserver.com 域添加到受信任的站点才能下载它。
使用默认设置安装它。然后配置一下:
创建域anymail
- 在域选项卡上 高级 配置 cathchall 地址:anymail@anymail
- 在您的域中创建一个帐户:anymail@anymail 并选择一个简单的密码。
- 创建规则:删除来自
邮件守护进程@anymail.yourregion.cloudapp.azure.com
- 在设置 - SMTP 中输入 anymail.yourregion.cloudapp.azure.com 作为本地主机名。将重试次数和每次重试之间的分钟数设置为0。将远程主机名设置为本地主机端口25(所以你真的不能邮寄出去)
- 在反垃圾邮件白名单中 0.0.0.0 到 255.255.255.255
- 高级-镜像输入anymail@anymail
- 高级 - IP 范围删除本地主机
- 在高级 - IP 范围中双击 internet 并删除“请求 SMTP 身份验证”之前的所有复选框
- IN advanced - Autoban 禁用自动禁止。
现在一切正常。您应该能够在您的配置中配置 anymail.yourregion.cloudapp.azure.com,也可以在您的邮件程序(例如 outlook)中配置。您可以检查是否可以将邮件从任何发件人发送到任何收件人。测试发送到您的常规电子邮件地址的邮件不会到达您的常规邮箱。
诊断
在调整设置时,我经常查看状态 -> 传送队列。这个队列不会自动刷新,需要手动刷新。
您可能需要在测试时清除它。 (我经常陷入循环,导致很多消息。)
我希望能够测试我自动发送的邮件是否真的发送了,但我不希望这些邮件泄露到现实世界。有没有办法配置我的邮件设置,以便从我的测试环境发送的所有邮件都自动转发到一个邮箱?
我想我可以在我的配置中配置地址,但是如果我用我的测试电子邮件替换我系统中的每个电子邮件,我将无法清楚地检查邮件是否真的正确创建。
在测试时,我可能会输入真实世界的电子邮件地址,但我不想冒险将邮件发送给客户。
安全隔离测试环境的一种方法是配置一个邮件服务器,它可以捕获来自所有域的所有邮件,并将它们放入一个大收件箱中。如果我在我的测试环境中配置该邮件服务器,所有邮件都会被截断。
许多邮件服务器都支持这种情况。我在 Azure VM 上使用了一个开源的 hmailserver。安装步骤:
- 创建 Azure VM。我使用的是标准的 DS1 v2,但较轻的版本可能也足够了。我选择了 Windows Server 2016。同样,许多其他服务器也可以。
- 为您的机器指定一个 DNS 名称。例如anymail.yourregion.cloudapp.azure.com
- 在门户中,为 TCP[= 打开端口 25、143 和 578 60=]
- 通过远程停止连接
- 在机器本身上,也在防火墙设置 中打开端口25、143和587
- 启用.net 3.5。我是通过程序和功能 => 打开和关闭 Windows 功能来做到这一点的。
- 将 hmailserver 下载到您的 VM D: 驱动器(这是临时的 space)。您需要将 hmailserver.com 域添加到受信任的站点才能下载它。
使用默认设置安装它。然后配置一下:
创建域anymail
- 在域选项卡上 高级 配置 cathchall 地址:anymail@anymail
- 在您的域中创建一个帐户:anymail@anymail 并选择一个简单的密码。
- 创建规则:删除来自 邮件守护进程@anymail.yourregion.cloudapp.azure.com
- 在设置 - SMTP 中输入 anymail.yourregion.cloudapp.azure.com 作为本地主机名。将重试次数和每次重试之间的分钟数设置为0。将远程主机名设置为本地主机端口25(所以你真的不能邮寄出去)
- 在反垃圾邮件白名单中 0.0.0.0 到 255.255.255.255
- 高级-镜像输入anymail@anymail
- 高级 - IP 范围删除本地主机
- 在高级 - IP 范围中双击 internet 并删除“请求 SMTP 身份验证”之前的所有复选框
- IN advanced - Autoban 禁用自动禁止。
现在一切正常。您应该能够在您的配置中配置 anymail.yourregion.cloudapp.azure.com,也可以在您的邮件程序(例如 outlook)中配置。您可以检查是否可以将邮件从任何发件人发送到任何收件人。测试发送到您的常规电子邮件地址的邮件不会到达您的常规邮箱。
诊断
在调整设置时,我经常查看状态 -> 传送队列。这个队列不会自动刷新,需要手动刷新。 您可能需要在测试时清除它。 (我经常陷入循环,导致很多消息。)